IP 규칙 테이블 조회가 작동하지 않는 것 같습니다.

IP 규칙 테이블 조회가 작동하지 않는 것 같습니다.

세 개의 네트워크 인터페이스가 있는 시스템이 있습니다. 아래는 제가 설정하려고 하는 구성입니다. wlan0(실제로 WiFi AP 인터페이스) - 다른 장치는 이 인터페이스를 통해 연결됩니다. net1 - wlan0을 통해 연결된 장치에 인터넷 서비스를 제공하기 위해 wlan0에 연결되어야 하는 인터넷 연결 인터페이스입니다. net0 - 제한된 인터넷 액세스를 위한 인터페이스로, 이 서브넷 내에서 발생하는 요청에 대해서만 쿼리에 응답합니다.

기본 인터페이스는 net0 및 해당 게이트웨이입니다. ip 경로 표시의 출력은 다음과 같습니다.

default via 10.228.103.241 dev net0
10.228.103.240/30 dev net0 src 10.228.103.242

이제 시스템이 테이블 7을 조회하여 eth0으로 전송된 모든 요청에 ​​대한 라우팅 규칙을 알기를 원합니다.

net1.  So I created ip rules as below:
0:      from all lookup local
32758:  from all lookup main
32762:  from 8.8.0.0/16 lookup iTbl
32764:  from 192.168.225.1 lookup iTbl
32765:  from 192.168.172.2 lookup iTbl
32767:  from all lookup default

8.8.0.0은 네임서버로 사용됩니다. /etc/iproute2/rt_tables에서 7을 iTbl로 정의했기 때문에 iTbl로 나열됩니다.

표 7의 IP 라우팅 표시는 다음과 같습니다.

default via 192.168.172.3 dev net1
8.8.0.0/16 via 192.168.172.3 dev net1
192.168.172.0/24 dev net1  src 192.168.172.2
192.168.225.0/24 dev wlan0  src 192.168.225.1

마지막으로 내 iptables는 다음과 같습니다.

iptables -nvL
Chain INPUT (policy ACCEPT 245 packets, 49904 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    3   180 ACCEPT     all  --  wlan0   *       0.0.0.0/0            0.0.0.0/0

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

iptables -nvL -t nat
Chain PREROUTING (policy ACCEPT 22 packets, 2205 bytes)
 pkts bytes target     prot opt in     out     source               destination

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

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

Chain POSTROUTING (policy ACCEPT 90 packets, 7226 bytes)
 pkts bytes target     prot opt in     out     source               destination
    2   616 MASQUERADE  all  --  *      net1  0.0.0.0/0            0.0.0.0/0

장치를 wlan0 인터페이스에 연결하고 인터넷 검색을 시도하면 tcpdump는 wlan0의 모든 요청이 net0을 통과하는 것처럼 보이지만 실제로는 net1을 통과해야 함을 보여줍니다. 나는 많은 게시물과 포럼을 읽었습니다. 다양한 방법을 시도한 후에도 문제를 해결할 수 없습니다. 무엇이 잘못되었는지 이해할 수 없습니다. tcpdump와 로직을 보면 표 7의 IP 규칙 조회가 작동하지 않는 것 같습니다. 수정해야 할 규칙이 있는지 확인하는 데 도움을 주세요.

답변1

마침내 해결책을 찾았습니다. 이 중 일부는 IP뿐만 아니라 테이블에 서브넷을 추가하는 것입니다. 두 번째는 IP 규칙 목록에 "규칙"을 추가하는 것입니다. 내 최종 IP 규칙 데이터베이스는 다음과 같습니다.

0:      from all lookup local
255:    from 192.168.172.0/24 lookup iTbl
256:    from 192.168.225.0/24 lookup iTbl
257:    from 8.8.0.0/16 lookup iTbl
258:    from all to 192.168.172.0/24 lookup iTbl
259:    from all to 192.168.225.0/24 lookup iTbl
260:    from all to 8.8.0.0/16 lookup iTbl
32766:  from all lookup main
32767:  from all lookup default

아마도 이 모든 것이 필요하지 않으며 더 많은 최적화가 수행될 수 있습니다. 하지만 효과가 있었기 때문에 해결책을 만들었습니다.

관련 정보