LoginSignup
0
2

More than 1 year has passed since last update.

VirtualBoxで内部ネットワーク構築するとpingにDUP!が返ってくる問題

Last updated at Posted at 2017-12-22

遭遇した事象

VirtualBoxでCentOS7を3台立て、内部ネットワークの設定をしてpingで疎通確認をしている時だった、、、

[root@node01 ~]# ping 192.168.10.12
PING 192.168.10.12 (192.168.10.12) 56(84) bytes of data.
64 bytes from 192.168.10.12: icmp_seq=1 ttl=64 time=0.690 ms
64 bytes from 192.168.10.12: icmp_seq=1 ttl=63 time=0.738 ms (DUP!)
64 bytes from 192.168.10.12: icmp_seq=1 ttl=64 time=1.18 ms (DUP!)
64 bytes from 192.168.10.12: icmp_seq=1 ttl=63 time=1.29 ms (DUP!)
From 192.168.10.10: icmp_seq=2 Redirect Host(New nexthop: 192.168.10.12)
From 192.168.10.10 icmp_seq=2 Redirect Host(New nexthop: 192.168.10.12)

ping応答が重複しているだと?誰がお返事しているんだろ、、、
あれこれ探ってみたところ、原因はポートフォワーディング機能が有効になっていたことだった。

ここでは例としてA,B,Cの3ノードがあり、例えばA->Bへpingを打つことを考える。
pingを受け取ったBは期待通りAに返答するのだが、Cもpingのパケット自体は受け取ることになる。このとき、受け取ったパケットはCに向けられたものではないから破棄すればよいのだが、ポートフォワーディング機能によってBに転送してしまう。
結果としてBは2回Aにping応答を返してしまうことになる。

ポートフォワーディンの動作を確認する実験

実験として、上記例でBのNICを落とした状態でA->Bにpingを打ってみる。

ポートフォワーディングによるパケットの転送
[root@node01 ~]# ping 192.168.10.12
PING 192.168.10.12 (192.168.10.12) 56(84) bytes of data.
From 192.168.10.10: icmp_seq=2 Redirect Host(New nexthop: 192.168.10.12)
From 192.168.10.10 icmp_seq=2 Redirect Host(New nexthop: 192.168.10.12)
From 192.168.10.10: icmp_seq=3 Redirect Host(New nexthop: 192.168.10.12)

ほら、C(192.168.10.10)がB(192.168.10.12)に転送しているでしょ!

ポートフォワーディング無効化の設定

ポートフォワーディングの無効化は簡単。

IPフォワーディングを無効化
sysctl -w net.ipv4.ip_forward=0 # net.ipv4.ip_forward = 0

# sysctlコマンド使えなければ下記でも可
echo 0 > /proc/sys/net/ipv4/ip_forward

設定後、無事にping DUP!が消えました。めでたしめでたし。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2