IPTABLES는 다음을 제외하고 서브넷의 모든 트래픽을 프록시로 투명하게 미리 처리합니다.

IPTABLES는 다음을 제외하고 서브넷의 모든 트래픽을 프록시로 투명하게 미리 처리합니다.

192.168.255.0과 172.16.255.0 사이에 방화벽이 있습니다. 둘 다 /24. 192.168.255.0 DNAT를 프록시 서버 @ 172.16.255.5:8080으로 가져옵니다. 이 작업을 계속하고 싶지만 테스트를 위해 직접 연결하려는 웹 서버 172.16.255.50이 있습니다. 이 명령문을 시도했지만 iptables에서 이를 추가하려고 하면 계속 오류가 발생합니다.

iptables -I PREROUTING -i eth1 -d \! 172.16.255.50 -p tcp --dport 80 -j DNAT --to-destination 172.16.255.5:8080

감사해요!!

답변1

여기에는 2가지 문제가 있습니다.

  1. 중단했으므로 존재하지 않는 테이블 의 체인 -t nat에 추가하려고 합니다 .PREROUTINGfilter
  2. 'not'( !)이 앞에 와야 합니다 -d.

작업 솔루션:

iptables -t nat -I PREROUTING -i eth1 \! -d 172.16.255.50 -p tcp --dport 80 -j DNAT --to-destination 172.16.255.5:8080


또는 이와 같은 작업을 수행하는 또 다른 방법은 예외 트래픽과 일치하고 아무 작업도 수행하지 않는 규칙을 규칙 앞에 두는 것입니다. Iptables는 첫 번째 일치 규칙에 도달하면 중지되므로 이후 규칙에 도달하지 않습니다.

iptables -t nat -A PREROUTING -i eth1 -d 172.16.255.50 -p tcp --dport 80
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to-destination 172.16.255.5:8080

관련 정보