きっかけ
以前構築したラズパイのネットワークブートシステムに追加で、ブートサーバーをDHCP/DNSサーバー化しようと思った。ブートサーバーが、配下のネットワークブートするクライアントに対して新たにサブネットを形成し、DHCP/DNSサーバーとして機能すれば計算クラスタとしてさらに運用しやすくなるのではないかと考えた。
構成
ルーター側とクライアント側をそれぞれ有線で接続し、ルータ側のデバイス名をeth0, クライアント側をeth1とする。
また、eth1側はUSB-Ethernet変換アダプタを使用した。
nmcliコマンドでEthernetのデバイス名を確認できる
$ nmcli
構築手順
- eth1側のip固定化
- コマンドで設定する場合
$ sudo ip addr add 192.168.1.1/24 dev eth1 $ sudo ip link set eth1 up
- 設定ファイルに記述する場合(投稿者の環境)
/etc/NetworkManager/system-connections/Wired connection 2.nmconnection[connection] id=Wired connection 2 uuid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx type=ethernet autoconnect-priority=-999 interface-name=eth1 [ethernet] [ipv4] #ipv4の項目に固定したいアドレスを入力 method=manual addresses=192.168.1.1/24 gateway=192.168.1.1 dns=8.8.8.8; [ipv6] addr-gen-mode=stable-privacy method=disabled [proxy]
$ sudo systemctl restart NetworkManager または $ sudo reboot
- ポートフォワーディングの設定
$ sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
$ sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
設定を保存する
$ sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
sudo vi /etc/rc.local
iptables-restore < /etc/iptables.ipv4.nat #追記
-
dnsmasqの設定と有効化
- (インストールしていない場合は)dnsmasqをインストールする
sudo apt install dnsmasq
- dnsmasq.confに設定を追記する
sudo vi /etc/dnsmasq.confenable-tftp tftp-root=/tftpboot pxe-service=0,"Raspberry Pi Boot" expand-hosts domain-needed bogus-priv no-resolv server=8.8.8.8 #primary server=x.x.x.x #second local=/magisystem.local/ domain=magisystem.local listen-address=x.x.x.x interface=eth1 # eth1側をdhcpリースに指定 no-dhcp-interface=eth0 # eth0側はdhcpリースに指定しない dhcp-range=192.168.1.2,192.168.1.100,255.255.255.0,12h #リース範囲を指定 dhcp-option=option:dns-server,192.168.1.1 dhcp-option=option:router,192.168.1.1 dhcp-host=xx:xx:xx:xx:xx:xx,192.168.1.2,client1,24h #macアドレス,IPアドレス,ドメインネーム,リース時間 dhcp-host=xx:xx:xx:xx:xx:xx,192.168.1.3,client2,24h dhcp-host=xx:xx:xx:xx:xx:xx,192.168.1.4,client3,24h
- dnsmasqを起動、有効化する
sudo systemctl start dnsmasq.service sudo systemctl enable dnsmasq.service
参考にしたサイト