Raspberry Pi によるイーサネットコンバータ (2) 設定

前回の記事で準備ができたので、

  • 有線ポートのIPアドレスを固定
  • 有線ポート側でDHCPサーバーを稼動
  • 有線ポート・無線ポート間でルーティング(NAPT)を設定

をする。 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サーバーインストー

isc-dhcp-serverをインストール。

$ 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サーバーとして機能しない問題があるが、上記設定で回避できる。