운영 체제: 페도라 34
브라우저: DoH가 활성화된 Mozilla Firefox
핵심 Linux 설정(웹 브라우저 확장 프로그램 등이 아님)을 통해 웹사이트를 차단하려고 합니다. 문제는 내가 사용하는 DoH 내부에 있습니다. DoH를 비활성화하면 모든 것이 콘솔 내 설정과 완벽하게 작동합니다.
# vi /etc/hosts
0.0.0.0 www.facebook.com
iptables 편집을 시도했지만 역시 작동하지 않았습니다.
# iptables -A OUTPUT -p tcp -d www.facebook.com --dport 443 -j DROP
# service iptables save
# service iptables restart
# iptables -L
제가 아는 한, 시스템 수준에서 웹 주소에 접근하는 것을 막는 것은 불가능합니까?
답변1
iptables
할 수 있는호스트 이름으로 차단 man iptables
:
-s, --source address Source specification. Address can be either a network name, a hostname, a network IP address (with /mask), or a plain IP address.
이것이 작동하지 않는 이유는 iptables
로컬로 구성된 확인자를 사용하여 Facebook IP 주소를 찾는 반면 Firefox는 다른 DNS 공급자로부터 주소를 가져오기 때문입니다. 페이스북은 클라우드를 사용하기 때문에 IP 주소는다른DNS 공급자와 지역 간에 차이가 있으며 이는 궁극적으로 iptables
솔루션이 작동할 가능성이 낮다는 것을 의미합니다.
대신, Firefox의 그룹 정책을 사용하여 다음과 같은 웹사이트를 차단할 수 있습니다.https://github.com/mozilla/policy-templates/blob/master/README.md#websitefilter https://github.com/mozilla/policy-templates/releases
예를 들어 여기에서 다음 답변을 확인하세요.https://support.mozilla.org/en-US/questions/1260799
답변2
IMO, 들어가는 게 낫지둘 다네트워크 계층과 애플리케이션 계층. 즉, iptables
네트워크 계층에 대한 간단한 규칙을 사용하고 프록시를 사용하여 허용되는 것과 허용되지 않는 것에 대한 복잡하고 세부적인 제어를 제공합니다.
프록시 설정(예:오징어그리고 포트 80 및 443(Squid 제외)에 대한 직접 액세스를 차단합니다.
게이트웨이/방화벽이 적당히 강력한 Linux 상자라면 Squid는 동일한 시스템에서 실행될 수 있습니다. VM 또는 컨테이너에서 Squid를 실행할 수 있지만 tcp_outgoing_address
Squid에 전용 IP 주소를 할당하고 squid.conf
. 이 IP 주소는 이 포트(OUTPUT 체인 또는 LAN이 개인 주소를 사용하는 경우 NAT 체인)의 외부 호스트에만 연결하도록 허용합니다.
그렇지 않은 경우 전용 Linux 기반 라우터(예:오픈WRT또는 유사),나이가 많은CPU 성능이 낮고 RAM이 부족한 모델은 제 역할을 하지 못할 수 있지만, 지난 5년 정도 동안 생산된 대부분의 최신 모델은 충분히 강력합니다. 이는 지난 20년 동안 생산된 거의 모든 서버급 컴퓨터나 재설계된 데스크탑에 해당됩니다. 전용 머신에서 실행해야 한다면 Raspberry Pi 또는 유사한 장치에서도 가능합니다.
Squid만 웹 사이트에 액세스할 수 있도록 무언가를 구성하고 있기 때문에 Squid 구성을 사용하여 특정 호스트를 허용하거나 거부할 수 있습니다. 선택적으로 다른 프로그램과 함께 사용할 수 있습니다.오징어 가드
또한 자체 캐싱 DNS 확인자를 실행하세요(예:속박되지 않은) 그리고 오징어박스가 이를 사용하는지 확인하세요. 지저분한 것 /etc/resolv.conf
(엉뚱한 systemd-resolved abomination 포함)을 비활성화하세요. 정적 구성을 통해서든 DHCP를 통해서든 DNS 확인자로 클라이언트 컴퓨터를 구성해야 합니다.