複数のネットワークインターフェース間でIPパケットを転送する、いわゆるルーターのような役割をLinuxにさせるには、ポートフォワード、ルーティング、NATの3つの設定が必要。
1.ポートフォワードを許可する。
/etc/sysctl.conf
net.ipv4.ip_forward = 1
Bash
$ sudo sysctl -p
2.ルーティング
Bash
$ sudo ip route add 192.168.30.0/24 dev ibp9s0
$ sudo ip route add 192.168.50.0/24 dev enp5s0
3.NAT これでpingも返る
Bash
$ sudo iptables -t nat -A POSTROUTING -o ibp9s0 -j MASQUERADE
$ sudo iptables -t nat -A POSTROUTING -o enp5s0 -j MASQUERADE
1行目はibp9s0へ出ていくパケット、2行目はenp5s0へ出ていくパケットのアドレス変換。転送先のインターフェース毎に設定する。
4.(おまけ)インターフェース毎にルーティングテーブルを設定するには
Bash
$ sudo ip rule add to 192.168.30.0/24 dev ibp9s0 table 30 priority 100
$ sudo ip rule from 192.168.30.0/24 table 30
$ sudo ip route add default via 192.168.0.1 table 30