Pi에서 Raspbian을 실행하는 라우터를 만들고 여기에 여러 클라이언트를 연결했습니다.
이것은 단지 장난감 프로젝트일 뿐이며 노드 간 라우팅에만 관심이 있으므로 NAT 등은 사용하지 않습니다.
레이아웃은 다음과 같습니다(저는 ECMP를 사용하고 있으므로 두 노드의 주소는 입니다 10.0.0.4
).
라우터에서 ARP 프록시와 IP 전달을 활성화했습니다.
pi@raspberrypi-router:~ sysctl net.ipv4.conf.all.proxy_arp
net.ipv4.conf.all.proxy_arp = 1
pi@raspberrypi-router:~ sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
역방향 경로 필터링이 비활성화되었습니다.
pi@raspberrypi-router:~ sysctl net.ipv4.conf.all.rp_filter
net.ipv4.conf.all.rp_filter = 0
라우터에서 일부 경로를 구성했습니다.
pi@raspberrypi-router:~ ip route show
10.0.0.4
nexthop dev eth0 weight 1
nexthop dev eth1 weight 1
10.0.0.50 via 10.0.0.8 dev eth2
192.168.1.0/24 dev wlan0 proto kernel scope link src 192.168.1.85
10.0.0.50
라우터의 핑이 원활하게 진행됩니다.
pi@raspberrypi-router:~ ping 10.0.0.50
PING 10.0.0.50 (10.0.0.50) 56(84) bytes of data.
64 bytes from 10.0.0.50: icmp_seq=1 ttl=64 time=1.07 ms
64 bytes from 10.0.0.50: icmp_seq=2 ttl=64 time=1.04 ms
^C
--- 10.0.0.50 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 1.049/1.064/1.079/0.015 ms
10.0.0.4
라우터에서 ping을 보내는 것과 동일
pi@raspberrypi-router:~ ip roping 10.0.0.4
PING 10.0.0.4 (10.0.0.4) 56(84) bytes of data.
64 bytes from 10.0.0.4: icmp_seq=1 ttl=64 time=1.08 ms
64 bytes from 10.0.0.4: icmp_seq=2 ttl=64 time=1.05 ms
^C
--- 10.0.0.4 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 1.052/1.069/1.087/0.037 ms
10.0.0.4
하지만 ping이 10.0.0.50
작동하지 않습니다. 의 응답은 10.0.0.4
다시 라우팅되지 않습니다 10.0.0.50
. TCPDump를 사용하여 이를 확인했습니다.
On에서는 10.0.0.4
ICMP 에코 요청이 도착하고 응답이 전송되는 것을 확인합니다.
21:30:01.078281 IP 10.0.0.50 > 10.0.0.4: ICMP echo request, id 3819, seq 2109, length 64
21:30:01.078388 IP 10.0.0.4 > 10.0.0.50: ICMP echo reply, id 3819, seq 2109, length 64
라우터 eth0
인터페이스에서 지금까지 응답이 전송된 것을 확인합니다.
21:30:47.078732 IP 10.0.0.50 > 10.0.0.4: ICMP echo request, id 3819, seq 2155, length 64
21:30:47.079286 IP 10.0.0.4 > 10.0.0.50: ICMP echo reply, id 3819, seq 2155, length 64
하지만 그걸로 끝, 답장은 돌아오지 않아10.0.0.50
디버깅을 좀 해봤는데 ip route
괜찮아 보이나요?
pi@raspberrypi-router:~ $ sudo ip route get to 10.0.0.50 from 10.0.0.4 iif eth0
10.0.0.50 from 10.0.0.4 dev eth2
cache iif eth0
무슨 문제가 있습니까?