가급적 비슷한 것 iptables
입니다. 기본적으로에서 IP를 사용하는 것처럼 도메인 필터링 / 화이트리스트 / 블랙리스트를 수행하고 싶습니다 iptables
. 이 작업을 수행하는 방법에 대한 권장 사항이 있습니까?
가급적 비슷한 것 iptables
입니다. 기본적으로에서 IP를 사용하는 것처럼 도메인 필터링 / 화이트리스트 / 블랙리스트를 수행하고 싶습니다 iptables
. 이 작업을 수행하는 방법에 대한 권장 사항이 있습니까?
답변:
iptables 규칙과 함께 이름 확인을 사용하여 트래픽을 삭제하면 해당 규칙을 만드는 동안 이름이 확인됩니다. 무언가가 바뀌면 더 이상 규칙이 유효하지 않습니다. 이것은 해결책 일 수 있습니다 (아름답 지 않은 해결책이 아닙니다 ...) :
# iptables -I FORWARD -p udp --dport 53 -m string --hex-string "|03|www|08|facebook|03|com" --algo bm -j DROP
LAN 내부의 다른 호스트에서 :
# host www.facebook.com
www.facebook.com A record not found, try again
기본적으로 udp/53
16 진수 문자열 www.facebook.com to
이 삭제 된 모든 dns packet ( )에 말하고 있습니다 . http 트래픽 자체가 아닌 이름 확인이 삭제됩니다.
pipes ( |03|www|08|facebook|03|com
)로 구분 된 16 진수 .
는 dns 쿼리 에서 도트 심볼을 나타냅니다 . FQDN 의 각 부분 (호스트, 도메인, 최상위 도메인) 을 나타내는 문자 수는 몇 개입니까 ?
주최자: mail.google.com
16 진 표현 : 04 6d 61 69 6c 06 67 6f 6f 67 6c 65 03 63 6f 6d
"시각적"표현 : 04mail06google03com
tcpdump로 패킷 가져 오기 :
# tcpdump -i eth0 -X dst port 53
15:50:11.643672 IP xxx.xxx.xxx.xxx:xxx > ns4.google.com.domain: 16530 A? mail.google.com. (33)
0x0000: 4500 003d 779a 4000 4011 b390 c949 4742 E..=w.@.@....IGB
0x0010: d8ef 260a 8424 0035 0029 0fc0 4092 0000 ..&..$.5.)..@...
0x0020: 0001 0000 0000 0000 046d 6169 6c06 676f .........mail.go
0x0030: 6f67 6c65 0363 6f6d 0000 0100 01 ogle.com.....
하지만 기억해:
어쩌면 귀하의 질문에 대한 답변이 너무 늦었지만 최근에 비슷한 문제를 해결해야했고 Google이 여기로 데려옵니다.
검색에 실패한 후 DNS 응답을 차단하고 도메인 이름을 지정된 정규식과 비교하고 일치하는 IP 주소를 나열하는 작은 유틸리티를 C로 작성했습니다. 여기 있습니다 : https://github.com/vmxdev/sidmat/
당신은 당신의 자신의 DNS 서버를 설정할 필요가 없습니다, 유틸리티는 모든 서버에서 DNS 응답을 잡을 수 있습니다
예를 들어, 지금 해결 된 facebook.com (및 하위 도메인) ip 주소를 보려면 다음을 실행할 수 있습니다.
# ./sidmat eth0 "^facebook\.com$|\.facebook\.com$"
173.252.120.6
...
여기서 eth0은 라우터의 네트워크 인터페이스이거나 DNS 응답이 전달되는 위치입니다.
iptables (또는 ipset이있는 iptables)와 쉽게 통합 할 수 있습니다.
그러나:
블랙리스트에 가장 쉬운 방법은 아마도 dnsmasq 를 사용하는 것입니다
설치 dnsmasq
$ sudo apt-get install dnsmasq
이 줄을 추가하십시오 /etc/dnsmasq.conf
address=/facebook.com/127.0.0.1
그러면 facebook.com 및 모든 하위 도메인 이 차단됩니다 .
참고 : 우분투의 경우이 게시물을 참조하십시오 .
로컬 캐싱 바인드를 실행하는 경우 9 dummy-block
zone "facebook.com" { type master; file "dummy-block"; };
그리고 dummy-block
파일 :
$TTL 604800
@ IN SOA localhost. root.localhost. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS localhost.
@ IN A 127.0.0.1
* IN A 127.0.0.1
또한보십시오:
facebook.com
예제 와 함께 BIND9 및 ISC-DHCP 실행