Я обнаружил, что мой провайдер (verizon) перехватывает весь трафик DNS через порт 53.
Используя iptables, я хочу перенаправить весь поисковый трафик DNS на определенный IP-адрес и порт (5353). Любая попытка подключения моего компьютера к другому компьютеру через порт 53 должна быть перенаправлена на 23.226.230.72:5353.
Чтобы проверить DNS-сервер и порт, который я пытаюсь использовать, я запустил эту команду.
~$ dig +short serverfault.com @23.226.230.72 -p5353
198.252.206.16
Это правило iptables, которое я пытаюсь использовать.
iptables -t nat -A OUTPUT -p udp -m udp --dport 53 -j DNAT --to-destination 23.226.230.72:5353
После добавления этого правила все DNS-запросы не найдены. Пинги возвращаются unknown host
. На веб-страницах написано «Сервер не найден».
~$ mtr serverfault.com
Failed to resolve host: Name or service not known
Я хочу, чтобы мой DNS для поиска извлекался из 23.226.230.72:5353. Как я могу заставить правило iptables работать?
РЕДАКТИРОВАТЬ
Демонстрация перехвата DNS (порт 53) моим провайдером. Трассировка выходных данных от раскопок до 23.226.230.72 через порт 5353, а затем через порт 53.
~$ dig +trace stackexchange.com @23.226.230.72 -p5353
; <<>> DiG 9.9.5-3-Ubuntu <<>> +trace stackexchange.com @23.226.230.72 -p5353
;; global options: +cmd
. 86395 IN NS ns7.opennic.glue.
. 86395 IN NS ns4.opennic.glue.
. 86395 IN NS ns3.opennic.glue.
. 86395 IN NS ns5.opennic.glue.
. 86395 IN NS ns2.opennic.glue.
. 86395 IN NS ns10.opennic.glue.
. 86395 IN NS ns1.opennic.glue.
. 86395 IN NS ns6.opennic.glue.
. 86395 IN NS ns8.opennic.glue.
dig: couldn't get address for 'ns8.opennic.glue': no more
~$ dig +trace stackexchange.com @23.226.230.72 -p53
; <<>> DiG 9.9.5-3-Ubuntu <<>> +trace stackexchange.com @23.226.230.72 -p53
;; global options: +cmd
. 7440 IN NS f.root-servers.net.
. 7440 IN NS d.root-servers.net.
. 7440 IN NS j.root-servers.net.
. 7440 IN NS i.root-servers.net.
. 7440 IN NS g.root-servers.net.
. 7440 IN NS k.root-servers.net.
. 7440 IN NS a.root-servers.net.
. 7440 IN NS h.root-servers.net.
. 7440 IN NS e.root-servers.net.
. 7440 IN NS m.root-servers.net.
. 7440 IN NS c.root-servers.net.
. 7440 IN NS b.root-servers.net.
. 7440 IN NS l.root-servers.net.
;; Received 239 bytes from 23.226.230.72#53(23.226.230.72) in 2948 ms
stackexchange.com. 215 IN A 198.252.206.16
;; Received 62 bytes from 192.228.79.201#53(b.root-servers.net) in 116 ms
Мои текущие iptables. iptables-save
~# iptables-save
# Generated by iptables-save v1.4.21 on Tue Jul 15 23:06:52 2014
*mangle
:PREROUTING ACCEPT [79950528:41742899703]
:INPUT ACCEPT [78748282:41360159554]
:FORWARD ACCEPT [13:5427]
:OUTPUT ACCEPT [85455483:57472640071]
:POSTROUTING ACCEPT [85480442:57475512901]
-A POSTROUTING -o lxcbr0 -p udp -m udp --dport 68 -j CHECKSUM --checksum-fill
COMMIT
# Completed on Tue Jul 15 23:06:52 2014
# Generated by iptables-save v1.4.21 on Tue Jul 15 23:06:52 2014
*nat
:PREROUTING ACCEPT [71:18713]
:INPUT ACCEPT [7:474]
:OUTPUT ACCEPT [109:7855]
:POSTROUTING ACCEPT [109:7855]
:DOCKER - [0:0]
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A POSTROUTING -s 172.17.0.0/16 ! -d 172.17.0.0/16 -j MASQUERADE
-A POSTROUTING -s 10.0.3.0/24 ! -d 10.0.3.0/24 -j MASQUERADE
COMMIT
# Completed on Tue Jul 15 23:06:52 2014
# Generated by iptables-save v1.4.21 on Tue Jul 15 23:06:52 2014
*filter
:INPUT ACCEPT [78748139:41360144354]
:FORWARD ACCEPT [13:5427]
:OUTPUT ACCEPT [85454926:57472600172]
:fail2ban-ssh - [0:0]
:fail2ban-vsftpd - [0:0]
-A INPUT -p tcp -m multiport --dports 21,20,990,989 -j fail2ban-vsftpd
-A INPUT -p tcp -m multiport --dports 22,6622 -j fail2ban-ssh
-A INPUT -i lxcbr0 -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -i lxcbr0 -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -i lxcbr0 -p tcp -m tcp --dport 67 -j ACCEPT
-A INPUT -i lxcbr0 -p udp -m udp --dport 67 -j ACCEPT
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A FORWARD -o lxcbr0 -j ACCEPT
-A FORWARD -i lxcbr0 -j ACCEPT
-A fail2ban-ssh -j RETURN
-A fail2ban-vsftpd -j RETURN
COMMIT
iptables rules
здесь8.8.8.8
и8.8.4.4
Ответы:
Выполните все эти инструкции от имени пользователя root (sudo).
Отредактируйте этот файл.
Отключите DnsMasq, закомментировав строку
dns=dnsmasq
. Положите#
перед линиейПерезагрузите сеть.
Добавьте эти приемлемые правила.
источник
Похоже, что вы действительно хотите контролировать то, что происходит с вашими DNS-запросами.
Я не уверен, что использование iptables будет моим предпочтительным решением.
Задумывались ли вы о настройке локального DNS-сервера, который просто перенаправляет ваши запросы на нужный хост и порт? Один пример: используя опцию пересылки bind9, вы можете добавить порт для пересылки.
Такая настройка намного проще в обслуживании и устранении неполадок, а также может быть гораздо более гибкой. Рассмотрите преимущество кэширования или просто рассмотрите случай, когда ваш внешний DNS-сервер не работает. Вы можете иметь несколько серверов пересылки в вашей конфигурации DNS, но только один IP в правилах iptables ....
Существует хороший обзор настройки bind9 в руководстве по цифровому океану . Просто добавьте порт к серверам пересылки, и все будет готово.
Bind9 совсем не потребляет много ресурсов и легко настраивается (или, по крайней мере: проще, чем iptables :-))
источник
Попробуй это:
Сначала вы должны включить опцию пересылки в
Установите одно значение
Включить изменения
Сохраните и запустите следующее:
Если бы вы могли указать in-interface (-i eth1) в PREROUTING или / и out-interfect (-o eth0), то в POSTROUTING может быть полезно.
ПРИМЕЧАНИЕ: линия MASQUARADE необходима, в то время как эта маска маскирует IP-адрес назначения основным IP-адресом.
источник
sysctl net.ipv4.ip_forward=1
и правила iptables. DNS работает, но он все еще перехватывается моим провайдером. Так что это указывает на то, что DNS все еще отправляется через порт 53.udp
, но я получил те же результаты.Попробуй это:
Это означает:
1) Любой локальный пользователь, связывающийся с внешним миром через порт tcp 53, отправленный на 23.226.230.72 через порт 5353.
2) То же, что 1, но для udp
3) Установите исходную информацию для исходящего пакета как исходящую от нас.
источник
источник
sport
наdport
(очевидно, это была ошибка в ответе tachomi, на которую battman622 указал три года назад , (2) вы добавили строку (команду) дляudp
(это законное улучшение ответа тахоми, но уже упоминавшееся в комментарии ... (продолжение)--to-destination
на--to
. Страница людей не говорит , что--to
и--to-destination
эквивалентны; напротив, он говорит, что--to
используется сNETMAP
целью (в отличие отDNAT
цели) и что ее аргумент не включает номер порта. (Хотя я заметил, что несколько других ответов используют--to
то же, что и вы.) Вы уверены, что это--to
работает так, как вы используете (с номером порта, сDNAT
целью)? … (Продолжение)--to
лучше, чем--to-destination
каким-либо образом, кроме краткости?