手元のUbuntuにUSB-LANアダプタを追加してルータ化する
以下の図のような構成を組み、Ubuntuをルータとして機能させなければならない場面に遭遇したのでメモを取っておく。
今回はかなり古いがUbuntu11.10を使った。執筆時点ではバージョン間の違いは特になさそう。
USB-LANアダプタ接続後の設定
各NICの設定
/etc/network/interfaces
を編集
auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.200.90 netmask 255.255.255.0 network 192.168.200.0 broadcast 192.168.200.255 gateway 192.168.200.1 dns-nameserver 8.8.8.8 auto eth1 iface eth1 inet static address 192.168.11.1 netmask 255.255.255.0 network 192.168.11.0 broadcast 192.168.11.255
IPフォワードを有効化
2つのNIC間をパケットが通過できるようにする。そのため/etc/sysctl.conf
に記述されている以下のコメントアウトを解除
# コメントアウトを解除 net.ipv4.ip_forward=1
IPマスカレードの設定
以下のコマンドを打ち込んでIPマスカレードを有効化
$ sudo iptables -t nat -A POSTROUTING -s 192.168.11.0/255.255.255.0 -o eth0 -j MASQUERADE
再起動をしてもiptablesにIPマスカレードが設定されるよう、現在のiptablesの設定を保存&起動時に反映されるようシェルを作成。
設定は以下のように保存
$ sudo sh -c "/sbin/iptables-save -c > /etc/iptables.rules"
シェルは/etc/network/if-pre-up.d/iptables_start
に作成
#!/bin/sh /sbin/iptables-restore < /etc/iptables.rules exit 0
最後にシェルに実行権限を与え、再起動すれば完了
$ sudo chmod +x /etc/network/if-pre-up.d/iptables_start $ sudo reboot