Skip to content

IPv4 転送の実行可否を決定する "net.ipv4.ip_forward" を検証する

Linux では "net.ipv4.ip_forward" というパラメータがデフォルトでは "0" ですが、「この値を "1" にすることで IPv4 転送が有効になる」という記事をよく見かけます。このパラメータを実際に検証してみました。

検証は GNS3 上の MicroCore Linux 3.4(Linux Kernel 2.6.33.3)で実施しています。

同セグメント・B サーバへの Ping

下記の構成で検証を進めます。B での ip_forward 設定の内容にかかわらず、A から B の同セグメントインターフェイスへ Ping すると(フィルタしていない限りは)応答があります。

file

別セグメント・但し、B サーバへの Ping

A から B 宛に、但し別セグメント側のインターフェイスへ Ping しても、ip_forward の設定内容にかかわらず、応答があります。

file

別セグメント・C サーバへの PIng

A から C へ Ping すると、応答がありません。これは B で ip_forward=0 になっており、IPv4 転送が無効になっている為です。

file

中継サーバ(B)で ip_forward=1 にした場合の Ping

B で ip_forward を "1" に設定します。

1
sudo sysctl -w net.ipv4.ip_forward=1

先ほどと同様に A から C へ Ping すると、今回は応答があります。これは "ip_forward=1" 設定で B が IPv4 転送を実施するようになり、宛先アドレスが自分(つまり B)では無いパケットも転送するようになった為です。

file