iptables는 INPUT 포트 80을 차단합니다.

iptables는 INPUT 포트 80을 차단합니다.

내 질문은 일반적인 이해를 위한 것이지 내가 겪고 있는 문제를 해결하기 위한 것이 아닙니다.

http 요청을 실행하고 차단했습니다 iptables -A OUTPUT -p tcp --dport 80 -j REJECT. 내가 달렸을 때 curl http://b.scorecardresearch.com/beacon.js나는 가지고 있었다curl: (7) Failed to connect to b.scorecardresearch.com port 80: Connection refused

그런 다음 OUTPUT 규칙을 삭제하고 INPUT 규칙을 만들었습니다 iptables -A INPUT -p tcp --dport 80 -j REJECT. 그러면 curl http://b.scorecardresearch.com/beacon.js문제없이 접속할 수 있습니다 .

나가는 요청이 차단되지 않는 이유를 이해하지만 http 요청을 할 때 응답이 동일한 포트(80)에서 돌아오는 것이 아니며 포트 80의 INPUT REJECT에 의해 차단되어야 합니까?

답변1

HTTP 요청을 서버에 보낼 때 httpURL에 달리 지정하지 않는 한 HTTP의 기본 포트 80( 이라는 이름, 일반적으로 기호 형식이 기억하기 더 쉽습니다)을 사용합니다. 이것이 바로 이 규칙이 원격 HTTP 포트에 대한 연결 시도를 올바르게 차단하는 이유입니다.

iptables -A OUTPUT -p tcp --dport http -j REJECT

서버가 응답하면 해당 포트(http/80)에서 컴퓨터로 데이터를 보냅니다. 이는 iptables규칙에서 소스 포트로 80을 언급해야 함을 의미합니다.

iptables -A INPUT -p tcp --sport http -j REJECT

답변2

아니요, 클라이언트는 다른 포트를 사용하여 통신하므로 이는 포트 80에서 포트 80으로의 연결이 아닙니다.

다음 명령을 사용하여 개요를 확인할 수 있습니다. 여기에서 로컬 IP 주소와 포트, 연결된 외부 IP 주소와 포트를 볼 수 있습니다.

netstat -tn 

관련 정보