iptables 규칙이 작동하지 않습니다

iptables 규칙이 작동하지 않습니다

규칙이 추가되었음에도 https://example.com:9700불구하고 내 iptable 규칙이 액세스를 차단하는 이유를 알 수 없습니다.accept

나는 모든 것을 비우는 것부터 시작한다.

iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t nat -F
iptables -t mangle -F
iptables -F
iptables -X

그런 다음 모든 것을 삭제하고 SSH 및 9700 포트에 대한 예외를 추가합니다.

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 9700 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 9700 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

서비스는 삭제 후에 작동하고 두 번째 규칙 세트 후에는 작동을 중지합니다.

SSH 규칙은 완벽하게 작동합니다. 규칙이 추가된 후 SSH를 통해 내 서버에 다시 연결할 수 있습니다.

DNS 문제 답변 중 하나에 대해 확인된 DNS가 작동하지 않습니다. 그러나 IP 주소를 통해 여전히 액세스할 수 없는 이유는 설명되지 않습니다.https://xx.xxx.xx.x:9700

답변1

example.com의 이름을 확인할 수 있나요? 이름 서비스에 대한 액세스를 차단하면 컴퓨터가 example.com에 연결할 수 없습니다. /etc/hosts에 호스트 example.com과 해당 IP 주소를 추가하거나 DNS에 대한 iptables 예외를 추가해야 합니다. .

게시된 대로여기, DNS 조회에 대한 예외는 다음과 같습니다.

iptables -A INPUT -p udp --source-port 53 -j ACCEPT

편집하다:

귀하가 DNS 문제를 능가했기 때문에 귀하의 규칙을 더 깊이 조사했으며 iptables에 대한 이해를 바탕으로 작동하지 않습니다. 대상 포트 9700(컴퓨터에서!)에서 INPUT 트래픽(컴퓨터로)을 허용하고 로컬 포트 ​​9700에서 OUTPUT 트래픽(컴퓨터에서 외부로)을 허용합니다.

당신이 원하는 것은 정반대입니다(또는 제가 틀렸습니까?): 당신은 당신의 컴퓨터가 포트 9700의 외부 서버에 연결하기를 원하고 이 서버가 당신에게 응답할 수 있기를 원합니다.

따라서 마지막 두 가지 규칙은 다음과 같습니다.

iptables -A OUTPUT -p tcp -m tcp --dport 9700 -j ACCEPT
iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

이렇게 하면 컴퓨터의 모든 포트(프로토콜이 나가는 트래픽에 사용할 포트를 제어할 수 없기 때문에)에서 포트 9700의 다른 컴퓨터로의 트래픽이 허용되고 전 세계의 다른 컴퓨터에서 컴퓨터로의 트래픽이 허용됩니다. 패킷은 이미 설정된 연결의 일부입니다.

답변2

노력하다:

iptables -t filter -P INPUT DROP
iptables -t filter -P OUTPUT DROP
iptables -t filter -P FORWARD DROP

iptables -t filter -A INPUT -i lo -j ACCEPT

iptables -t filter -A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

iptables -t filter -A INPUT -p tcp --dport 9700 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --sport 9700 -m state --state ESTABLISHED -j ACCEPT

example.com IP 주소를 확인하는 DNS 서버가 동일한 시스템이 아니라고 가정합니다.

또한 OUTPUT 체인의 정책을 ACCEPT로 설정하는 것도 크게 문제가 되지 않는다고 생각합니다. 사용해 보세요.

이 규칙 세트는 나에게 효과적입니다. 그것은 당신에게도 효과가 있을 것입니다.

친애하는!

관련 정보