Ubuntu + NIC 2枚刺しで、受信した IF から応答する
- Ubuntu 14.04
- NIC が2枚 (以上) 刺さっている
- それぞれの口がインターネットに出ていける
- ブロードバンドルータ等のポートフォワード設定により、マシンの特定のポートに対してインターネット側から到達できる
上記のような環境で、受信したインターフェイスから応答する方法のメモ。
手順
rt_tables
を編集する。
$ diff -u /etc/iproute2/rt_tables.orig /etc/iproute2/rt_tables --- /etc/iproute2/rt_tables.orig 2013-11-23 10:10:33.000000000 +0900 +++ /etc/iproute2/rt_tables 2017-02-26 10:56:34.033357000 +0900 @@ -9,3 +9,5 @@ # local # #1 inr.ruhep +100 subroute100 +101 subroute101
インターフェイスの設定をする。
/etc/network/interfaces.d/eth0.cfg
:
auto eth0 iface eth0 inet static address 172.17.1.2 netmask 255.255.255.0 #gateway 172.17.1.1 dns-nameservers 8.8.8.8 8.8.4.4 post-up ip route add table 100 172.17.1.0/24 dev eth0 scope link proto kernel post-up ip route add table 100 default via 172.17.1.1 dev eth0 post-up ip route add table main default via 172.17.1.1
このとき、デフォルトゲートウェイは gateway
ではなく ip route add table main default
で指定することに注意。
/etc/network/interfaces.d/eth1.cfg
:
auto eth1 iface eth1 inet static address 192.168.11.2 netmask 255.255.255.0 post-up ip route add table 101 192.168.11.0/24 dev eth1 scope link proto kernel post-up ip route add table 101 default via 192.168.11.1 dev eth1 post-up ip rule add from 192.168.11.2 table 101 prio 10000
以上の設定ができたら、OS を再起動する。
設定確認
$ ip route show default via 172.17.1.1 dev eth0 172.17.1.0/24 dev eth0 proto kernel scope link src 172.17.1.2 192.168.11.0/24 dev eth1 proto kernel scope link src 192.168.11.2
$ ip route show table 100 default via 172.17.1.1 dev eth0 172.17.1.0/24 dev eth0 proto kernel scope link
$ ip route show table 101 default via 192.168.11.1 dev eth1 192.168.11.0/24 dev eth1 proto kernel scope link
$ ip rule show 0: from all lookup local 10000: from 192.168.11.2 lookup subroute101 32766: from all lookup main 32767: from all lookup default