Skip to content

Instantly share code, notes, and snippets.

@tsutsui
Last active September 30, 2024 18:25
Show Gist options
  • Select an option

  • Save tsutsui/bd52b05657da2563f7ca89d90f5f0c7f to your computer and use it in GitHub Desktop.

Select an option

Save tsutsui/bd52b05657da2563f7ca89d90f5f0c7f to your computer and use it in GitHub Desktop.
Android の USBテザリング WAN接続をつないだ NetBSD/amd64 10.0 の Let's Note CF-NX3 をルータにして謎マシンの有線LANでデモする設定メモ

Android の USBテザリング WAN接続をつないだ NetBSD/amd64 10.0 の Let's Note CF-NX3 をルータにして謎マシンの有線LANでデモする設定メモ

環境

  • ルーターとして設定する本体: Let's Note CF-NX3
    • 内蔵LAN wm(4) Intel I218 Gigabit Ethernet: これをLAN側とする
    • 内蔵無線LAN iwm(4) : 今回は未使用; ちゃんと設定すればこちらを WAN側にもできるはず
    • USB 2.0 ehci(4) に Android端末を接続する
  • テザリングで 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側IPアドレス設定

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

npf(7) による NAT設定のための npf.conf(5) の準備

/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 設定

$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 設定

$int_if 行に LAN側 I/F名として書かれている wm1 を今回 LAN側にする wm0 に書き換える。

$int_if = "wm1"

 ⇓

$int_if = "wm0"

$localnet 設定

$localnet 行に書かれている LAN側のサブネットを今回 LAN側に割り当てるIPアドレスに合わせて以下のように書き換える。

$localnet = { 198.51.100.0/24 }

 ⇓

$localnet = { 192.168.20.0/24 }

map 設定

外部からの SSHログインのためのポート転送設定はたちまちは不要なのでコメントアウトする。

# map $ext_if dynamic 198.51.100.2 port 22 <- $ext_v4 port 9022

ポート転送のための sysctl(8) 設定

root で以下を実行して複数のネットワークI/F間の転送を有効にする。

# sysctl -w net.inet.ip.forwarding=1

Android端末での USBテザリング接続

Android端末をUSB接続し、Android端末側の設定で USBテザリングを有効にする。 NetBSD側で urndis0 として認識されたら root で dhcpcd(8) を実行して IPアドレス、DNSサーバーアドレス等を取得する。

# dhcpcd urndis0

/etc/resolv.conf を見て、DHCPで設定された DNSサーバーアドレス(通常はAndroid端末側のIPアドレス)をメモする

# cat /etc/resolv.conf

npf(7) による NATサービス開始

root で以下を実行して npf(7)npf.conf(5) による NAT動作を開始させる。

# /etc/rc.d/npf onestart

dhcpd(8) による DHCPサーバー設定の dhcpd.conf(5) の準備

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側 DHCPサーバーの実行

LAN側I/Fに対して dhcpd(8) をスタートさせる。

# dhcpd wm0

LAN側に接続されたクライアントで DHCP client を実行

NetBSD 10.0 であれば dhcpcd(8) を実行する

# dhcpcd

USBテザリングが切断されて再接続した場合

たいていの USBテザリングでは、再接続するとAndroid端末側からDHCPで割り当てられるIPアドレスが変化する。 その場合 WAN側 urndis0 の IPアドレスが変わってしまうことになるため、 npf(7) の NAT設定も再設定する必要がある。

# /etc/rc.d/npf onestop
# /etc/rc.d/npf onestart
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment