Raspberry Pi によるイーサネットコンバータ (2) 設定
前回の記事で準備ができたので、
をする。 Ubuntu PCをルータ代わりにして、新しくLANを構築してみる を参考にするが、OSの違い等を考慮して少し手順を変更している。
IPアドレス固定
現在のバージョンのRaspbianでは /etc/network/interfaces ではなく /etc/dhcpcd.conf で設定するようだ。以下の通り設定する。
interface eth0 static ip_address=192.168.200.254/24
Raspberry Piを再起動させて192.168.200.254に接続できるか確認
$ sudo shutdown -r now
DHCPサーバーインストール
$ sudo apt install isc-dhcp-server
/etc/dhcp/dhcpd.confの編集
以下の2行をコメントアウト。
#option domain-name "example.org"; #option domain-name-servers ns1.example.org, ns2.example.org;
以下の行のコメントアウトを解除。
authoritative;
以下の行をファイル末尾に追加し、192.168.200.2〜192.168.200.20をリース範囲とする。 DNSサーバーはとりあえずGoogleのサーバーにしておいた(8.8.8.8, 8.8.4.4)。
subnet 192.168.200.0 netmask 255.255.255.0 { range 192.168.200.2 192.168.200.20; option routers 192.168.200.254; option subnet-mask 255.255.255.0; option broadcast-address 192.168.200.255; option domain-name-servers 8.8.8.8, 8.8.4.4; }
/etc/default/isc-dhcp-serverの編集
eth0だけに対してリースさせるために、以下の行を変更。
INTERFACES="eth0"
IP転送機能を有効にする
/etc/sysctl.conf の以下の行を変更する。これで常にIP転送機能が有効になる。
net.ipv4.ip_forward=1
NAPTの設定
有線ポート(eth0)が有効になった時にNAPTの設定を有効にする設定をする。
ifplugdのインストール
まず、ネットワークケーブルの抜き差しによってeth0のup, downの処理を させるためにifplugdをインストールする。
$ sudo apt install ifplugd
ifplugdの初期設定を行う。以下のコマンドで対話的に実行できる。
sudo dpkg-reconfigure ifplugd
結果、/etc/default/ifplugdが以下の通り設定される。
INTERFACES="eth0" HOTPLUG_INTERFACES="eth0" ARGS="-q -f -u0 -d10 -w -I" SUSPEND_ACTION="stop"
/etc/network/interfacesの設定
eth0設定の部分を以下の通りにする。
iface eth0 inet manual pre-up /sbin/iptables -t nat -A POSTROUTING -s 192.168.200.0/24 -j MASQUERADE up systemctl restart isc-dhcp-server post-down /sbin/iptables -t nat -D POSTROUTING -s 192.168.200.0/24 -j MASQUERADE
pre-upとpost-downでNAPTの設定、設定解除を行っている。また、upでDHCPサーバーの 再起動をしている。ネットワークケーブルを挿さずにRaspberry Piを起動した場合、 (IPアドレスが付与されていない状態ではDHCPサーバーは起動失敗するので)あとから ネットワークケーブルを挿してもDHCPサーバーとして機能しない問題があるが、上記設定で回避できる。