IP 192.168.1.1의 openwrt 라우터가 있습니다. 내가 하고 싶은 것은 LAN에 프록시 서버(192.168.1.249)를 설정하고 두 장치(192.168.1.244, 192.168.1.131)의 모든 통신을 가로채는 것입니다. 내가 사용하는 방법은 프록시 서버를 기본 게이트웨이로 설정하는 것이며, openwrt 라우터에서 다음 사항을 구성했습니다.
iptables -t mangle -A PREROUTING -j MARK --set-mark 3 -p tcp -s 192.168.1.131
iptables -t mangle -A PREROUTING -j MARK --set-mark 3 -p tcp -s 192.168.1.244
# Set default gateway as the proxy server in table 2
ip route add default via 192.168.1.249 table 2
# Forward traffic with mark 3 to table 2
ip rule add fwmark 3 table 2
테스트 후 두 장치의 모든 WAN 통신에 대해 프록시 서버가 이를 가로채어 전달할 수 있었습니다. 괜찮습니다.그런데 이 두 장치도 서로 통신하는 것을 발견했는데, 이러한 LAN 통신이 프록시 서버로 전달되지 않는 것 같습니다.. 이유는 무엇입니까? 이러한 트래픽을 프록시 서버로 전달하려면 어떻게 해야 합니까?
시험: iptables 구성이 유용한지 확인하기 위해 테스트 규칙을 추가했습니다.
iptables -t mangle -A PREROUTING -j DROP -s 192.168.1.131
내 의견으로는 이 규칙이 작동하면 IP 244를 사용하는 장치는 IP 131을 사용하는 장치로부터 트래픽을 수신하지 않으며 이는 iptables가 LAN 통신에 작동할 수 있음을 증명합니다. 그러나 131 장치를 사용하여 244 장치에 TCP 트래픽을 보냈더니 작동합니다. iptables를 구성해도 이러한 LAN 트래픽을 프록시 서버로 전달하는 데 도움이 되지 않을 것 같습니다. 내가 맞나요?
답변1
귀하의 IP 서브넷은 이라고 가정합니다 192.168.1.0/24
. 이는 로 시작하는 모든 IP 주소가 192.168.1
동일한 L2 브로드캐스트 도메인, 즉 동일한 스위치에 연결되어 있음을 의미합니다.
동일한 IP 서브넷에 있는 장치는 레이어 2 "연결"을 통해 서로 직접 통신하며 레이어 3 라우팅은 발생하지 않습니다.
IPTables는 서로 다른 서브넷 간에 라우팅된 패킷에 대해 방화벽을 수행하는 메커니즘입니다. 동일한 서브넷 호스트가 서로 보내는 트래픽은 표시되지 않습니다.
두 호스트 사이에 방화벽을 설치하려는 경우 몇 가지 옵션이 있습니다.
- 호스트를 다른 서브넷(예:
192.168.1.0/24
및192.168.2.0/24
)으로 이동하고 두 서브넷 사이에 라우터 경로를 설정합니다. - 두 개의 서로 다른 이더넷 세그먼트를 설치하고 라우터를 세그먼트 간의 브리지로 구성하십시오. 그런 다음 두 이더넷 세그먼트 사이의 패킷을 필터링하도록 IPTable을 구성할 수 있습니다.