프로그래밍 방식으로 패킷을 변경하기 위해 대기열 iptables
과 함께 사용하고 있습니다 .net-filter
나는 iptables
인터넷에 2개의 NIC eth0을, LAN에 eth1을 사용하여 우분투 랩에 대한 규칙을 사용하고 있습니다. 저는 eth0에서 가장하는 NATing에 잘 알려진 iptables 규칙을 사용했습니다.
sudo iptables --table nat --append POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -append FORWARD -i eth1 -j ACCEPT.
sudo iptables -t mangle -A PREROUTING -j NFQUEUE --queue-num 0
sudo iptables -t mangle -A OUTPUT -j NFQUEUE
이 4가지 규칙은 프로그램 내에서 패킷을 캡처하고 패킷을 수정하거나 를 사용하여 원하는 것을 삭제하는 데 사용됩니다 nfq_set_verdict
.
실제로 모든 것이 예상한 대로 진행되고 있습니다. 즉, 세 가지 프로토콜 유형이 있으며 icmp
패킷 이 수정되고 다시 주입됩니다. 그런 다음 대기열에서 eth0 IP 주소를 소스 주소로 사용하여 인터넷으로 eth0을 종료합니다(MASQUERADE NAT 규칙 사용의 효과). 이는 ICMP 핑을 제외한 모든 패킷에 해당됩니다.tcp
udp
회신하다또는 TCPACK패킷.
그들은 LAN 장치의 개인 IP인 eth1의 192.168.xx를 사용하여 인터넷으로 나가고 이 개인 소스 IP 주소를 사용하여 반대편에 도달합니다.
어떤 아이디어라도 가능합니다. 고마워.