debian - iptables가 특정 포트를 허용하는 데 작동하지 않습니다

debian - iptables가 특정 포트를 허용하는 데 작동하지 않습니다

저는 세 개의 가상 머신(A, B, C)을 가지고 있으며 모두 데비안에서 실행됩니다. A와 B 사이의 트래픽을 라우팅하도록 C를 설정했습니다. 또한 C에는 두 개의 인터페이스가 있습니다: enp0s3enp0s8이 경우에 중요한지 확실하지 않습니다. 라우팅이 잘 작동하고 있습니다.

하지만 이제 포트 8080으로 전송된 요청을 제외한 모든 수신 요청을 차단하기 위해 라우터에 iptables를 설정하고 싶습니다.

내가 한 일은 다음과 같습니다.

iptables -P FORWARD DROP
iptables -A FORWARD -p tcp --dport 8080 -j ACCEPT

그러나 A를 사용하여 A에서 B의 포트(8080 포함)에 연결하려고 하면 nc {host} {port}입력이 A에서 B로 변환되지 않습니다.

나는 또한 이것을 시도했고 그 반대의 경우도 마찬가지였습니다.

iptables -P FORWARD ACCEPT
iptables -A FORWARD -p tcp ! --dport 8080 -j DROP

하지만 그것도 작동하지 않습니다.

출력을 확인하면 iptables -L -v일부 패킷이 체인에서 허용됩니다 FORWARD.

답변1

iptables -A FORWARD -p tcp --dport 8080 -j ACCEPT
이 규칙은 포트 8080으로 향하는 모든 패킷이 전달되도록 허용합니다. 그러나 포트 8080의 패킷(SYN 패킷에 대한 응답)은 요청이 포트 8080에서도 이루어지지 않는 한 전달되지 않습니다. 한 댓글에서 언급했듯이 이는 사실이 아닐 가능성이 높습니다!

두 번째 규칙이 필요합니다.

iptables -A FORWARD -p tcp --sport 8080 -j ACCEPT

이 규칙은 포트 8080의 모든 패킷 전달을 허용합니다.

제안에 따르면, 설정에 더 많은 보안이 필요한 경우 규칙에 컴퓨터의 IP 주소를 추가하겠습니다. 이 두 규칙을 사용하면 소스 포트가 8080인 한 누군가가 다른 포트와 통신할 수 있습니다.

그래서 내 최종 규칙은 다음과 같습니다.

iptables -A FORWARD -p tcp --sport 8080 -s IPOFMACHINEA -j ACCEPT
iptables -A FORWARD -p tcp --dport 8080 -d IPOFMACHINEA -j ACCEPT

iptables -A FORWARD -p tcp --sport 8080 -s IPOFMACHINEB -j ACCEPT
iptables -A FORWARD -p tcp --dport 8080 -d IPOFMACHINEB -j ACCEPT

ip를 제공하지 않았기 때문에 교체해야 합니다.

관련 정보