포트 전달을 수행하는 기존 iptables 설정이 있습니다. 이 포트 전달 시나리오에서는 포트 전달을 원하지 않는 상황이 있습니다. 예를 들어 저는 이렇게 정의합니다.
iptables -A PREROUTING -t nat -i eth0 '!' -s 10.200.0.0/16 -p tcp --dport 80 -j DNAT --to 10.200.30.11
이렇게 하면 10.200/16이 이 규칙에 액세스하지 못하게 됩니다. 여러 제외 항목을 추가해야 했던 것으로 나타났습니다. 그러나 이를 수행할 수 있는 방법은 없는 것 같습니다.
iptables -A PREROUTING -t nat -i eth0 '!' -s 10.200.0.0/16,192.168.0.0/16 -p tcp --dport 8080 -j DNAT --to 10.200.30.11:80
iptables v1.4.8: ! not allowed with multiple source or destination IP addresses
이 문제를 다르게 처리해야 한다고 생각하는데 어떻게 해야 할지 모르겠습니다. 어떤 제안이 있으십니까?
답변1
다음 변형 중 하나를 사용할 수 있습니다.
첫 번째는 ipset이고 설정 유형은 "hash:net"입니다.
-j RETURN
두 번째는 각 네트워크에 대한 검사를 건너뛰고 마지막 체인 규칙으로 원하는 기본 작업을 제공하는 iptables 규칙 체인입니다 .
세 번째는 일부 비트 플래그로 패킷에 태그를 지정 -j MARK
하고 해당 플래그를 재생한 다음( 등을 사용하여 --set-mark
) 태그 확인이 충족되면 --set-xmark
필요한 작업( -m mark
및 )을 수행하는 것입니다. --mark
태그를 한 테이블에 설정하고 다른 테이블에 체크인할 수 있으므로 이는 가장 다양한 변형입니다. OTOH 플래그 비트 마스크는 32비트로 제한되어 있어 복잡한 규칙에는 충분하지 않을 수 있습니다.
답변2
예를 들어 IP가 올바른 경우:
1.1.1.5,1.1.1.6,1.1.1.7...,
--src-range
시퀀스의 첫 번째 IP와 마지막 IP를 사용하고 지정할 수 있습니다 . 예를 들어 1.1.1.[5-8]을 제외한 모든 IP에 대해 포트 8020을 닫아야 하는 경우 다음과 같은 iptables 규칙을 추가해야 합니다.
-A INPUT -p tcp -m iprange ! --src-range 1.1.1.5-1.1.1.8 -m tcp --dport 8020 -j DROP
-m iprange
와 함께 사용하는 것을 잊지 마세요 --src-range
.