![호스트는 ICMP를 허용하지만 TCP/UDP는 허용하지 않습니다.](https://linux55.com/image/197116/%ED%98%B8%EC%8A%A4%ED%8A%B8%EB%8A%94%20ICMP%EB%A5%BC%20%ED%97%88%EC%9A%A9%ED%95%98%EC%A7%80%EB%A7%8C%20TCP%2FUDP%EB%8A%94%20%ED%97%88%EC%9A%A9%ED%95%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
저는 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