호스트는 ICMP를 허용하지만 TCP/UDP는 허용하지 않습니다.

호스트는 ICMP를 허용하지만 TCP/UDP는 허용하지 않습니다.

저는 Ubuntu 20.04에서 맞춤형 토폴로지와 P4를 사용하여 Mininet을 실행하고 있습니다. 스위치를 통해 연결된 두 호스트(h1, h11) 사이에서 문제가 발생합니다. 다음은 호스트 구성입니다.

h1: IP 10.0.11.1, 맥: 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

관련 정보