내 질문은 일반적인 이해를 위한 것이지 내가 겪고 있는 문제를 해결하기 위한 것이 아닙니다.
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 요청을 서버에 보낼 때 http
URL에 달리 지정하지 않는 한 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