OpenBSDダウンロード
cd ~/Downloads
curl -O https://cdn.openbsd.org/pub/OpenBSD/7.9/arm64/install79.iso
curl -O https://cdn.openbsd.org/pub/OpenBSD/7.9/arm64/SHA256
shasum -a 256 install79.iso
grep install79.iso SHA256 # 一致を目視確認
UTMダウロード
https://mac.getutm.app/
からダウンロード
仮想マシン作成
新規仮想マシンを作成
仮想化
その他
メモリ:2048
コア:2
CD/DVD:install79.iso
UEFI:チェック
ストレージ:20GiB
共有ディレクトリ:スキップ
名前:OpenBSD 7.9
OpenBSDセットアップ
(I)nstall
Terminal Type: vt220
System hostname: bsd
Network interface to configure: vio0
IPv4 address for vio0 (or ‘autocnf’ or ‘none’): autoconf
IPv6 address for vio0 (or ‘autoconf’ or ‘none’): none
Network interface to configure (name, lladdr, ‘?’, or ‘done’): done
Password for root account: 1234
Start sshd(8) by default: yes
Setup a user: testuser
Full name for user testuser: testuser
Password for user testuser: 1234
Allow root ssh login: no
What timezone are you in: Asia/Tokyo
Which disk is the root disk: sd0
Encrypt the root disk with a (p)assphrase or (k)eydisk: no
Use (W)hole disk or (E)dit the MBR: whole
Use (A)uto layout, (E)dit auto layout, or create (C)ustome layout: auto
Location of sets (cd0 disk http nfs or ‘done’): cd0
Pathname to the sets: 7.9/arm64
Set name(s) (or ‘abort’ or ‘done’): -x* -game79.tgz
※xbase79 xfont79 xserv79 xshare79 の [X] が外れたのを確認
Set name(s) (or ‘abort’ or ‘done’): done
Directory does not contain SHA256.sig Continue without verification: yes
※インストール
Location of sets (cd0 disk http nfs or ‘done’): done
Exit to (S)hell, (H)alt or (R)eboot: reboot
※rebootの前にUTM側でISOを取り出す
起動後
・ターミナルSSHログイン
ipアドレスを確認
ifconfig vio0
SSHで接続
ssh testuser@192.168.64.2
・doas
su –
echo “permit persist keepenv :wheel” > /etc/doas.conf
exit
・syspatch
doas syspatch
※自動でアップデートされる
doas reboot
・syspatchコマンド
利用可能なパッチを全部取得・適用
doas syspatch
適用済みパッチ
syspatch -l
何が来ているか確認だけ(適用しない)
doas syspatch -c
適用済みパッチの一覧
syspatch -l
直近のパッチを取り消す
doas syspatch -r
不要サービス停止
・起動中のサービス
doas rcctl ls started
cron
dhcpleased
ntpd
pflogd
resolvd
slaacd
smtpd
sndiod
sshd
syslogd
・停止するサービス
オーディオ
doas rcctl stop sndiod && doas rcctl disable sndiod
SLAACクライアント(IPv6)
doas rcctl stop slaacd && doas rcctl disable slaacd
DHCPクライアント停止
doas rcctl stop dhcpleased && doas rcctl disable dhcpleased
cat /etc/hostname.*
が
inet autoconf
の場合、dhcpleasedをとめては駄目。
もし先に止めた場合、
doas rcctl enable dhcpleased && doas rcctl start dhcpleased
にて有効化できる。
resolvd停止
/etc/resolv.confを書き換える係
※dhcpleasedが有効ならこちらも有効にする。
doas rcctl stop resolvd && doas rcctl disable resolvd
doas rcctl enable resolvd && doas rcctl start resolvd
cat /etc/resolv.conf
nameserver 192.168.64.1 # resolvd: vio0
サービス調べ方
・起動時に上がるサービス(startedはすでに起動しているサービス)
rcctl ls on
・起動に失敗しているサービス
rcctl ls failed
・状態確認
rcctl check <name>
・起動失敗の理由
tail /var/log/daemon
・全部(rc.d にあるスクリプト全て)
rcctl ls all
・無効になっているもの
rcctl ls off
・今動いていないもの
rcctl ls stopped
・プロセス一覧(rcctlはサービス単位)
ps auxw
・待ち受けているポート
netstat -an -f inet
ネットワーク設定
| UTM | Parallels | VMware | VirtualBox |
|---|---|---|---|
| Shared | 共有ネットワーク | NAT | NAT |
| Host Only | ホストオンリー | Host-only | ホストオンリー |
| Bridged | ブリッジ | ブリッジ | ブリッジ |
Parallelsの共有ネットワークは10.211.55.0/24
ホストオンリーは10.37.129.0/24
HostOnlyはホストOSとゲストOSをL2スイッチで繋いだイメージ。ホストOSがDHCPとして振る舞うがNAT・ルーティング機能はない。複数のゲストOSを立ち上げた場合そのL2スイッチに複数つながっているイメージ。
SharedはHostOnlyと同じ配線でホストOSがNAT・ルーティングまでするルータとして振る舞うイメージ。
Bridgedは論理的に独立したNICになり、MACアドレスも別になる。(BridgedではWiFiは機能しない。WiFiは1つのアソシエーションで1つのMACアドレスのため)MacがホストOSの場合、Shared、HostOnlyでもbridgexxxというインターフェースが作成されるが、Bridgedで動作しているわけではないので注意。
ルーター設定
・UTMでNIC追加
起動していたらVMをシャットダウンする。
既存VM>右クリック>編集
サイドメニュー>デバイス>新規>ネットワーク
ネットワークモード:ホストのみ>保存
ifconfig
vio1が表示されていればOK
・DHCPでvio1を有効化
doas ifconfig vio1 up
doas dhcpleasectl vio1
ifconfig vio1
>192.168.128.2
・vio1静的アドレスファイルを作成
doas vi /etc/hostname.vio1
inet 192.168.128.254 255.255.255.0
doas chmod 640 /etc/hostname.vio1
doas chown root:wheel /etc/hostname.vio1
・vio1再起動
doas sh /etc/netstart vio1
ifconfig vio1
・vio1のDHCPを外す
doas ifconfig vio1 -autoconf
(doas ifconfig vio1 delete)
doas sh /etc/netstart vio1
ifconfig vio1
※ifconfigにAUTOCONF4があるとDHCP
・転送を有効化
doas sysctl net.inet.ip.forwarding=1
・恒久化
doas vi /etc/sysctl.conf
net.inet.ip.forwarding=1
を追加する。
・確認
sysctl net.inet.ip.forwarding
経路
netstat -rn -f inet
・pf.conf
doas cp /etc/pf.conf /etc/pf.conf.ok
doas vi /etc/pf.conf
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
ext_if = "vio0" int_if = "vio1" set skip on lo match out on $ext_if inet from ($int_if:network) to any nat-to ($ext_if:0) block return # block stateless traffic pass # establish keep-state # By default, do not permit remote connections to X11 block return in on ! lo0 proto tcp to port 6000:6010 # Port build user does not need network block return out log proto {tcp udp} user _pbuild |
・検証
doas pfctl -nf /etc/pf.conf
・適用
doas pfctl -f /etc/pf.conf
・動いているルールを表示
doas pfctl -sr
ルータ動作
転送の整理
ポートに届いたパケットは、
・宛先のL3(IP)
・宛先のL2(MAC)
・送信元のL3(IP)
・送信元のL2(MAC)
を持っており、ポートが受け取るのは、宛先MACが自分、ブロードキャスト、加入マルチキャストのいずれか。
宛先IPが自分でなく、かつ転送機能が有効なら、経路表でマッチした行の出口ポートから出し、宛先MACはその行のGatewayから決まる。
送信元、宛先MACはホップごとに書き換わる。
IPはNATを通るときに書き換わり、(送信元NATなら送信元、宛先NATなら宛先)、NATが無ければ最後まで変わらない。
自分以外の宛先に転送する度にTTLを一減らす。