漆黒な技術メモ

管理人が必要に応じて自分のメモを好き勝手に投下するたまり場的ブログ

手元のUbuntuにUSB-LANアダプタを追加してルータ化する

以下の図のような構成を組み、Ubuntuをルータとして機能させなければならない場面に遭遇したのでメモを取っておく。
今回はかなり古いがUbuntu11.10を使った。執筆時点ではバージョン間の違いは特になさそう。 f:id:igbt3116redtrain:20180112192315p:plain

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

再起動をしてもiptablesIPマスカレードが設定されるよう、現在の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

参考文献