나는 웹 브라우저를 사용하여 내가 소유한 오징어 프록시 서버를 통해 인터넷에 연결합니다. 프록시 포트는 3128입니다. 프록시 서버를 실행하는 시스템의 다른 포트를 잠그고 싶지만 내 iptables
규칙으로 인해 프록시가 완전히 종료됩니다. 다음 규칙이 작동합니다.
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
# other rules here for web access, dns, etc
iptables -A INPUT -p tcp -s "$my_pc_ip" -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -d "$my_pc_ip" -m state --state ESTABLISHED -j ACCEPT
그러나 분명히 여기에는 포트가 지정되지 않았으므로 목적에 부합하지 않습니다. 그러나 프록시 포트에 지정하면 웹 브라우저의 프록시를 통해 인터넷에 액세스할 수 없습니다.
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
# other rules here for web access, dns, etc
iptables -A INPUT -p tcp -s "$my_pc_ip" --sport 3128 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -d "$my_pc_ip" --dport 3128 -m state --state ESTABLISHED -j ACCEPT
두 번째 규칙 세트가 작동하지 않는 이유는 무엇입니까?
답변1
방화벽 규칙에서 dport 대신 sport를 사용하고 있거나 그 반대의 경우인 것 같습니다. 그것은해야한다:
iptables -A enter -p tcp -s "$my_pc_ip" --dport 3128 -m state --state 신규, 설정됨 -j accept
iptables -A 출력 -p tcp -d "$my_pc_ip" --sport 3128 -m 상태 --상태 설정됨 -j 수락
규칙은 프록시 서버에 있으므로 INPUT 체인에서 패킷은 프록시가 실행 중인 포트인 dport와 일치해야 하며, 마찬가지로 OUTPUT 체인에서는 패킷이 시작된 스포츠와 일치해야 합니다.