![iptables는 포트를 다른 IP로 전달하고 액세스 제한을 추가합니다.](https://linux55.com/image/226525/iptables%EB%8A%94%20%ED%8F%AC%ED%8A%B8%EB%A5%BC%20%EB%8B%A4%EB%A5%B8%20IP%EB%A1%9C%20%EC%A0%84%EB%8B%AC%ED%95%98%EA%B3%A0%20%EC%95%A1%EC%84%B8%EC%8A%A4%20%EC%A0%9C%ED%95%9C%EC%9D%84%20%EC%B6%94%EA%B0%80%ED%95%A9%EB%8B%88%EB%8B%A4..png)
iptables에 다음 규칙을 추가했습니다.
-A PREROUTING -p tcp -m tcp --dport 3307 -j DNAT --to-destination 192.168.80.45:330
포트 3307에 규칙을 추가하려는 경우(예: 포트 3307에 대한 123.5.0.2 IP 주소 액세스 거부) iptables 규칙을 어떻게 구성합니까?
답변1
NAT가 발생하는 것을 방지하려고 시도할 수 있으므로 결국 패킷은 전달되지 않고 호스트에 남아 있으며 수신 서비스가 없으면 연결 시도가 재설정됩니다. 이는 방화벽 부분 간의 역할 분리를 위반합니다(필터표: 기본값) 및 NAT 섹션(냇부분).
방지하려면 필터 규칙을 추가(또는 이미 존재하는 규칙 세트에 따라 -I
insert 대신 삽입)하면 됩니다.-A
전달됨123.5.0.2에서 192.168.80.45:330까지의 트래픽 [sic]:
iptables -A FORWARD -s 123.5.0.2 -d 192.168.80.45 -p tcp --dport 330 -j DROP
DNAT는 라우팅 전에 발생하므로 필터/FORWARD 체인이 보는 부분은 이미 3307이 아닌 대상 192.168.80.45 및 TCP 포트 330입니다. 물론 규칙을 더 넓게 만들어 모든 대상 포트 프로토콜과 대상 포트 또는 모든 대상(대상 주소를 명시하지 않고)을 명시하지 않음으로써 거부할 수 있습니다.
이를 수행하는 다른 방법이 많이 있습니다. 예를 들어 필터 규칙에서 새 대상 포트 330 대신 원래 포트 3307을 표시하는 것이 중요한 경우(예: NAT 규칙을 별도로 다시 작성하여 두 위치에서 대상을 편집할 필요가 없기 때문에) ), 쿼리할 수 있습니다.연결하다이와 같이:
iptables -A FORWARD -s 123.5.0.2 -m conntrack --ctproto tcp --ctorigdstport 3307 -j DROP
즉, TCP 프로토콜과 원래 대상 포트(DNAT 변환이 가능하기 전) 3307을 사용하여 123.5.0.2에서 전달된 트래픽을 삭제합니다.