IP 범위 172.16.0.1 ~ 172.16.0.120(포트 범위 20-8081)에 대한 모든 요청을 포트 22215에서 수신 대기하는 localhost 서비스로 리디렉션하는 iptable 규칙을 만드는 데 도움이 필요하지만 이 규칙은 포트 443 .0.111에서 IP 172.16을 캡처해서는 안 됩니다(예: 172.16.0.111:443은 인터넷에서 직접 액세스할 수 있어야 합니다.
iptables -t nat -A OUTPUT -p tcp --match multiport --dport 20:8081 -m iprange --dst-range 172.16.0.1-172.16.0.120 -j DNAT --to-destination 127.0.0.1:22215
iptables -t filter -A INPUT -p tcp --match multiport --dport 20:8081 -m iprange --dst-range 172.16.0.1-172.16.0.120 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 20:8081 -m iprange --dst-range 172.16.0.1-172.16.0.120 -j ACCEPT
위 규칙을 적용하면 위 범위의 IP 및 포트를 가진 모든 요청이 127.0.0.1:22215로 리디렉션됩니다. 하지만 포트 443을 사용하여 IP 172.16.0.111을 제외하는 방법을 모르겠습니다.
답변1
방화벽 규칙은 위에서 아래로 처리됩니다. 상단에는 특정 규칙을 배치하고 하단에는 일반 규칙(포괄 규칙)을 배치합니다. 무엇을 하든 172.16.0.111:443
해당 규칙은 맨 위에 있어야 합니다(게시한 세 가지 규칙 이전).
iptables -I INPUT --src 172.16.0.111 -p tcp --dport 443 -j ACCEPT
iptables -I OUTPUT --src 172.16.0.111 ACCEPT
iptables -t nat -A OUTPUT -p tcp --match multiport --dport 20:8081 -m iprange --dst-range 172.16.0.1-172.16.0.120 -j DNAT --to-destination 127.0.0.1:22215
iptables -t filter -A INPUT -p tcp --match multiport --dport 20:8081 -m iprange --dst-range 172.16.0.1-172.16.0.120 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 20:8081 -m iprange --dst-range 172.16.0.1-172.16.0.120 -j ACCEPT
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
참고: 원본 또는 대상 포트 번호를 제공하여 규칙 #2를 강화할 수 있습니다.