Linux(debian bookworm)で複数ネットワークインターフェース間のIP転送を有効にするには

複数のネットワークインターフェース間で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 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です