ホストはICMPを許可しますが、TCP / UDPは許可しません。

ホストはICMPを許可しますが、TCP / UDPは許可しません。

私はUbuntu 20.04でカスタムトポロジとP4を使ってMininetを実行しています。スイッチを介して接続されている2つのホスト(h1、h11)間で問題が発生します。以下はホスト構成です。

h1:IP 10.0.11.1、Mac:08:00:00:00:11:01。 arpを手動で設定しましたarp -i h1-eth0 -s 10.0.11.11 08:00:00:00:11:00

h11: IP 10.0.11.11, MAC: 08:00:00:00:11:11. arpを手動で設定しましたarp -i h11-eth0 -s 10.0.11.1 08:00:00:00:11:00

スイッチはP4-Tutorialの基本的なルーティングプログラムを実行します。このプログラムは最初にmacアドレスを交換し、正しい宛先macをパケットに入れます。つまり、h1 から h11 までのデータパケットが Ether(src=08:00:00:00:11:00, dst=08:00:00:00:11:11) / IP(src) に変換されます。 = 10.0.11.1、dst = 10.0.11.11)。 h11からh1までのパケットはEther(src=08:00:00:00:11:00, dst=08:00:00:00:11:01) / IP(src=10.0.11.11, dst=)変換されます。 10.0.11.1).だからこうしてarpを設定しました。

pingコマンド(h1 ping h11、、h11 ping h1)はうまく機能しますが、TCP / UDPパケットの場合、h11は常に応答(またはパケット受け入れ)に失敗します。

[TCP]iperf(h1 -> h11)を試みると、h11はh1によって送信されたSYNパケットに応答しませんが、h11のインターフェイスはSYNパケットをキャプチャできます。つまり、ルーティングは正確です。代わりに(h11 - > h1)h11はSYNパケットを送信します。 h1はSYN + ACKを受け入れて応答します。このSYN + ACKパケットはh11インターフェイスでキャプチャできますが、h11はACKに応答せず、h11のiperfサーバープログラムも何も表示しません。

[UDP]h11で試してみるとtraceroute 10.0.11.1正しく動作し(h1はUDPパケットを返します)、結果は次のようになります。

traceroute to 10.0.11.1 (10.0.11.1), 30 hops max, 60 byte packets
 1  10.0.11.1 (10.0.11.1)  3.292 ms  3.108 ms  3.173 ms

しかし、h1を試してもtraceroute 10.0.11.11結果に達しません。ただし、h11インターフェイスではUDPパケットをキャプチャできます。ただ、h11がアプリケーションレベルで応答しないか、承認されていません。

両方のホストにファイアウォールが設定されていません。ホストh11でどのような問題が発生し、どのように機能しますか?ありがとうございます!

ちなみに、両方のホストのiptablesは次のようになります。

root@machine# iptables -L -nv
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
 5849  952K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 5747 packets, 945K bytes)
 pkts bytes target     prot opt in     out     source               destination         

root@machine# iptables -t nat -L -nv
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

私は次のような結果を得ました。

root@h11# ip neigh show
10.0.11.1 dev h11-eth0 lladdr 08:00:00:00:11:00 PERMANENT
root@h11# arp -i h11-eth0
Address                  HWtype  HWaddress           Flags Mask            Iface
10.0.11.1                ether   08:00:00:00:11:00   CM                    h11-eth0
root@h1# ip neigh show
10.0.11.11 dev h1-eth0 lladdr 08:00:00:00:11:00 PERMANENT
root@h1# arp -i h1-eth0
Address                  HWtype  HWaddress           Flags Mask            Iface
10.0.11.11               ether   08:00:00:00:11:00   CM                    h1-eth0
root@homer-vm4:/home/yunming/AppStreaming/load_balancer/LB7# 

また、iperf(h11->h1) を実行しましたが、これが h11 インターフェイスでキャプチャした内容です。

root@h11# tcpdump -i h11-eth0 -e
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on h11-eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
16:57:07.202587 08:00:00:00:11:11 (oui Unknown) > 08:00:00:00:11:00 (oui Unknown), ethertype IPv4 (0x0800), length 74: 10.0.11.11.45938 > 10.0.11.1.5001: Flags [S], seq 3406863775, win 42340, options [mss 1460,sackOK,TS val 2081233344 ecr 0,nop,wscale 9], length 0
16:57:07.203629 08:00:00:00:11:00 (oui Unknown) > 08:00:00:00:11:11 (oui Unknown), ethertype IPv4 (0x0800), length 74: 10.0.11.1.5001 > 10.0.11.11.45938: Flags [S.], seq 3060599012, ack 3406863776, win 43440, options [mss 1460,sackOK,TS val 2061897778 ecr 2081233344,nop,wscale 9], length 0
16:57:08.216329 08:00:00:00:11:11 (oui Unknown) > 08:00:00:00:11:00 (oui Unknown), ethertype IPv4 (0x0800), length 74: 10.0.11.11.45938 > 10.0.11.1.5001: Flags [S], seq 3406863775, win 42340, options [mss 1460,sackOK,TS val 2081234358 ecr 0,nop,wscale 9], length 0
16:57:08.217393 08:00:00:00:11:00 (oui Unknown) > 08:00:00:00:11:11 (oui Unknown), ethertype IPv4 (0x0800), length 74: 10.0.11.1.5001 > 10.0.11.11.45938: Flags [S.], seq 3060599012, ack 3406863776, win 43440, options [mss 1460,sackOK,TS val 2061898791 ecr 2081233344,nop,wscale 9], length 0
16:57:08.217461 08:00:00:00:11:00 (oui Unknown) > 08:00:00:00:11:11 (oui Unknown), ethertype IPv4 (0x0800), length 74: 10.0.11.1.5001 > 10.0.11.11.45938: Flags [S.], seq 3060599012, ack 3406863776, win 43440, options [mss 1460,sackOK,TS val 2061898792 ecr 2081233344,nop,wscale 9], length 0

関連情報