RaspberryPi3Wifi子機化

家のネットワーク環境は大体無線化されているが、どうしてもデスクトップPCを複数持ってしまうとそれぞれに無線アダプタを装着するのも億劫になるので
RaspberryPiをWifiの子機として設定したい。

そのため、RaspberryPiの無線LANインタフェースを親機に接続(DHCP)し、LANポートをDHCPやDNSを有効にしたルータとして設定する。

無線ルータのルーティングテーブルをいじるのも面倒なので、RaspberryPiの無線インタフェースにトラフィックを流すときはNATする。

[IX]
  |
  ~
  |
[Firewall]
  |
(LAN#1)
  |
[AccessPoint(家庭用無線ルータ)]
  |
(LAN#2)
  |
[[RaspberryPi3]]
  |  有線ポートをLAN#3に接続
  |  LAN#2へ送るときはNATする
  |
(LAN#3)
  |
[有線接続の機器たち]

Wi-Fi接続設定

nmcliから設定することもできるが、ユーザがログインしないと自動で繋がらないので
ここでやったとおりwpa_supplicantから接続およびインタフェースを編集する。

Wi-Fi側のアドレスは単純に設定が手間なのでDHCPとしておく。

有線LAN側デバイス名編集

RaspberryPi3にUbuntu16をインストールしたら、いわゆるeth0がenx+MACアドレスの名前で登録されてしまっているのでこの修正。
https://raspberrypi.stackexchange.com/questions/43560/raspberry-pi-3-eth0-wrongfully-named-enx

必須ではないものの、後続の設定の統一化という意味ではしておくのがベター。

cp -piv /lib/udev/rules/73-*rules /etc/udev/rules/

パケット転送

ルータとして動作させるために必要なお決まりのやつ。

# IPv4
if [ "$(cat /proc/sys/net/ipv4/ip_forward)" = 0 ]
then
    echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
fi

# IPv6: 使わないけど備忘録
#if [ "$(cat /proc/sys/net/ipv6/conf/all/forwarding)" = 0 ]
#then
#    echo "net.ipv6.conf.all.forwarding = 1" >> /etc/sysctl.conf
#fi

# 反映
sysctl -p /etc/sysctl.conf

有線側インタフェース+DHCP等設定

有線側インタフェース名をeth0に

こちらのように、有線LAN側インタフェースをeth0と名前がつけられるように設定しておく。

DHCPサーバ構築

isc-dhcp-serverをインストール、eth0のみに対し動作するよう/etc/default/isc-dhcp-serverを修正、
eth0側インタフェースのDHPCで払い出すアドレスのレンジ、ネットワークプレフィックス、DNSサフィックス等を設定する。
(設定ファイルは一旦割愛)

適当なクライアントを繋いでみて、DHCPでアドレスを払い出されればOK。

Firewalld設定

ゾーン/インタフェースの基本設定

firewalldをインストール・有効にし
wlan0をexternalゾーンに割当て、マスカレードを有効化する。

firewall-cmd --zone=external --add-masquerade
firewall-cmd --zone=external --change-interface=wlan0
firewall-cmd --runtime-to-permanent

eth0をinternalゾーンに割当てる。

firewall-cmd --zone=internal --change-interface=eth0
firewall-cmd --runtime-to-permanent

ACL設定:eth0からの通信は全て許可

本当だったらちゃんとexternal/internalからのトラフィックについてACL運用すべきだが
ユーザ定義のチェインを作り、個別のdirectルールを書いて…と非常に手間がかかるので
今回はeth0からの通信(というか、eth0のネットワークアドレスからの通信)を全て許可するようにした。

ETH0_NWADDR="10.0.0.0/8"
firewall-cmd --zone=internal --add-rich-rule="rule family=\"ipv4\" source address=\"${ETH0_NWADDR}\" accept"
firewall-cmd --runtime-to-permanent

以上で設定は終了。
正しく設定できていれば、電源いれてたら自動でWiFi子機として動作し、有線側に繋いだ端末からも上流のネットワークにアクセスできる。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です