첫 글인데 도와주세요. 한 네트워크의 트래픽만 허용하고 모든 네트워크를 삭제하고 싶습니다. 제가 뭘 잘못하고 있나요? 내 프로그램의 결과는 모든 경우에 패킷을 삭제한다는 것입니다. 스크립트가 실행된 후에는 더 이상 사이트를 방문하지 않습니다. 배포판: 우분투 16.04
#Flush old
iptables -F
iptables -X
#Allow loopback
iptables -I INPUT -i lo -j ACCEPT
iptables -I OUTPUT -o lo -j ACCEPT
#Allow DNS
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
#Accept IP, use your own IP
iptables -I INPUT -s $(IP) -p tcp --dport 443 -j ACCEPT
iptables -I OUTPUT -s $(IP) -p tcp --dport 443 -j ACCEPT
#Drop rest
iptables -I INPUT -i lo -j REJECT
iptables -I OUTPUT -o lo -j REJECT
거부 및 폐기를 모두 사용하는 것은 덜 효과적입니다.
답변1
규칙을 추가하는 I
것이 아니라 테이블에 삽입하는 것입니다.A
REJECT
규칙은 순차적으로 읽고 적용되므로 실제로는 나머지 규칙보다 먼저 읽을 거부 규칙을 삽입하는 것입니다.
REJECT
규칙을 다음으로 변경해 보세요 .
iptables -A INPUT -i lo -j REJECT
iptables -A OUTPUT -o lo -j REJECT
대신에. 꼭 추가하세요
iptables-save
스크립트 끝에서