- ルーターとして設定する本体: Let's Note CF-NX3
- 内蔵LAN
wm(4)Intel I218 Gigabit Ethernet: これをLAN側とする - 内蔵無線LAN
iwm(4): 今回は未使用; ちゃんと設定すればこちらを WAN側にもできるはず - USB 2.0
ehci(4)に Android端末を接続する
- 内蔵LAN
- テザリングで WAN側につなぐ Android端末: HUAWEI MediaPad M3 Lite LTE
- ここでは Android 7.0 ですが、よほど古くなければ大丈夫なはず?
- NetBSD で
urndis(4)でアクセス可能な USBテザリングI/F: これがWAN側となる
/etc/rc.conf で以下の設定がされていたら無効にしておく
ifconfig_[I/F名]によるネットワーク設定dhcpd=YESの起動設定dhcpcd=YESの起動設定npf=YESの起動設定
LAN側の wm(4) の wm0 で DHCPサーバーを動かすので固定IPを割り当てる。
ここでは IPアドレスを 192.168.20.61 とし、ホスト名は nx3 とする。
/etc/hosts に以下を追加する。
192.168.20.61 nx3
ifconfig(8) コマンドで LAN側IPアドレスを設定する。
# ifconfig wm0 192.168.20.61
/usr/share/examples/npf/soho_gw-npf.conf のサンプル設定ファイルを /etc/npf.conf にコピーする。
# cp /usr/share/examples/npf/soho_gw-npf.conf /etc/npf.conf
# chmod u+w /etc/npf.conf
サンプルからコピーした /etc/npf.conf を編集して以下のように修正する。
$ext_if 行に WAN側 I/F名として書かれている wm0 を今回 WAN側にする urndis0 に書き換える。
$ext_if = "wm0"
⇓
$ext_if = "urndis0"
(NetBSD 9.3 ではこの WAN側 I/F名の wm0 が複数行に記載されていたが、 10.0 以降および 9.4 以降では $ext_if を参照する記載に修正されている)
$int_if 行に LAN側 I/F名として書かれている wm1 を今回 LAN側にする wm0 に書き換える。
$int_if = "wm1"
⇓
$int_if = "wm0"
$localnet 行に書かれている LAN側のサブネットを今回 LAN側に割り当てるIPアドレスに合わせて以下のように書き換える。
$localnet = { 198.51.100.0/24 }
⇓
$localnet = { 192.168.20.0/24 }
外部からの SSHログインのためのポート転送設定はたちまちは不要なのでコメントアウトする。
# map $ext_if dynamic 198.51.100.2 port 22 <- $ext_v4 port 9022
root で以下を実行して複数のネットワークI/F間の転送を有効にする。
# sysctl -w net.inet.ip.forwarding=1
Android端末をUSB接続し、Android端末側の設定で USBテザリングを有効にする。
NetBSD側で urndis0 として認識されたら root で dhcpcd(8) を実行して IPアドレス、DNSサーバーアドレス等を取得する。
# dhcpcd urndis0
/etc/resolv.conf を見て、DHCPで設定された DNSサーバーアドレス(通常はAndroid端末側のIPアドレス)をメモする
# cat /etc/resolv.conf
root で以下を実行して npf(7) と npf.conf(5) による NAT動作を開始させる。
# /etc/rc.d/npf onestart
dhcpd.conf(5) には事前にメモした DNSサーバーアドレスを記載する必要がある。
/etc/dhcpd.conf として以下を記載する。
ddns-update-style none;
default-lease-time 600;
max-lease-time 28000;
# 以下の subnet と netmask にはLAN側のサブネットとネットマスクを記載する
subnet 192.168.20.0 netmask 255.255.255.0 {
# 以下の range にはLAN側のサブネットに合わせてクライアントアドレス範囲を指定する
range 192.168.20.200 192.168.20.210;
# 以下の option routers には LAN側 wm0 の IPアドレスを記載する
option routers 192.168.20.61;
# 以下の option domain-name-servers にはメモした DNSサーバーのアドレスを記載する
option domain-name-servers 192.168.yy.yy;
}
LAN側I/Fに対して dhcpd(8) をスタートさせる。
# dhcpd wm0
NetBSD 10.0 であれば dhcpcd(8) を実行する
# dhcpcd
たいていの USBテザリングでは、再接続するとAndroid端末側からDHCPで割り当てられるIPアドレスが変化する。
その場合 WAN側 urndis0 の IPアドレスが変わってしまうことになるため、 npf(7) の NAT設定も再設定する必要がある。
# /etc/rc.d/npf onestop
# /etc/rc.d/npf onestart