小さなネットを組むことになったのですが、定番商品のRTX1210がなかなか手に入らない。そこで、入手が容易なラズパイをルータに仕立ててみました。
構成
本体はラズパイ4, 4GB版を使いました。インターフェースはUSB イーサネットドングルを追加して、無線LAN(wlan0),Ethernet x2(eth0,eth1)としています。
- wlan0は、外部ネットワーク接続用としてNAPTを構成する。ネットワークはDHCPクライアント設定。
- eth1は、ルータセグメント(192.168.YY.0/24)接続用とする。ネットワークはstatic設定(192.168.YY.XX)。
- eth0は、スタブセグメント(192.168.XX.0/24)として端末接続用とし、dhcpサーバの管理対象とする。ネットワークはstatic設定(192.168.XX.1)。
[Raspberry Pi wlan0(dhcp)]-----(外部ネットワーク) [ eth0(1)]-----(192.168.XX.0/24) [ eth1(XX)]-----(192.168.YY.0/24)--[(ZZ) Router]--(192.168.ZZ.0/24)
設定
インターフェースの設定
かつては/etc/networkに設定していたようですが、現在は/etc/dhcp.confに設定する。
/etc/dhcp.conf
interface eth0
static ip_address=192.168.XX.1/24
static routers=
static domain_name_servers=
static domain_search=
interface eth0
static ip_address=192.168.YY.XX/24
static routers=
static domain_name_servers=
static domain_search=
DHCPサーバの設定
インストール
sudo apt-get install isc-dhcp-server
配布情報の例、あとDNSのリゾルバ情報も追加する。
/etc/dhcp/dhcpd.conf
subnet 192.168.XX.0 netmask 255.255.255.0 {
range 192.168.XX.100 192.168.XX.199;
option routers 192.168.XX.1;
ignore declines;
}
対象インターフェース
/etc/default/isc-dhcp-server
INTERFACES="eth0"
DHCPサーバの自動起動
#起動
systemctl start isc-dhcp-server
#チェックしてよければ
systemctl enable isc-dhcp-server
interfaceの固定アドレス設定が完了するまで起動を遅らせる。
/etc/init.d/isc-dhcp-server
#startの記述の直前に以下を挿入
sleep 10
ルーティング
IPv4のルーティング機能を有効化する
/etc/sysctl.conf
net.ipv4.ip_forward=1
静的経路を適宜設定する。
shell
# 192.168.ZZ.0/24あてのGWが192.168.YY.ZZの場合
route add -net 192.168.ZZ.0 netmask 255.255.255.0 gw 192.168.YY.ZZ
pingなど打って問題なければ、rc.localの末尾などに上記記述を追加
NATの設定
こちらの記事が参考になります。
https://edosha.hatenablog.jp/entry/2017/07/06/134439
dns サーバ設定
sudo apt install dnsmasq -y
/etc/dnsmasq
domain-needed
bogus-priv
no-resolv
server=8.8.8.8
server=8.8.4.4
interface=eth0
sudo systemctl restart dnsmasq
sudo systemctl enable dnsmasq
まとめ
ラズパイは情報を得やすいのが良いですね。
特に注意する点は、interfaceの設定が完了するまで、dhcpサーバや経路の設定を遅らせるところです。これを忘れると、テストではうまくいっても、再起動するとうまくいかないという症状がでることがあります。