특정 도메인 "megafonpro.ru"와 모든 하위 도메인이 브라우저를 통해 액세스되지 않도록 차단해야 합니다.
내가 작성한 규칙은 다음과 같습니다.
sudo iptables -I OUTPUT -p tcp --dport 80 -m string --string "megafonpro.ru" --algo kmp --to 65535 -j REJECT
작동하지만 완벽하지는 않습니다. 일치하는 URL(예: "wap.megafonpro.ru")을 입력하려고 하면 Firefox가 오랫동안(약 30초) 연결을 시도한 다음 "연결 재설정"을 보고합니다. 즉시 거부하려면 어떻게 해야 합니까?
고쳐 쓰다:/etc/hosts
원치 않는 도메인을 다음과 같이 추가할 수 있다는 것을 알았습니다 .
127.0.0.1 megafonpro.ru
127.0.0.1 m.megafonpro.ru
127.0.0.1 wap.megafonpro.ru
안타깝게도 와일드카드 sumdomain을 사용할 수 없습니다(관련 질문:https://serverfault.com/questions/118378/in-my-etc-hosts-file-on-linux-osx-how-do-i-do-a-wildcard-subdomain). 이제 브라우저는 즉시 거부합니다.
그런데 어쨌든 iptables로 어떻게 구현하는지가 궁금하네요.
답변1
이 줄을 /etc/hosts에 넣으면 본질적으로 IP 주소가 127.0.0.1이라는 것을 이 이름에 알려주는 것입니다(웹 서버가 localhost에서 실행 중인 경우 표시됨).
iptables로 동일한 작업을 수행하려면 대상 NAT를 사용해야 합니다(PREROUTING 부분에서 수행해야 한다고 생각합니다). /etc/hosts에 넣는 것보다 장점은 패킷 라우팅에도 작동한다는 것입니다(동일한 호스트에서 발생하는 패킷뿐만 아니라).