He descubierto que mi ISP (verizon) está interceptando todo el tráfico de DNS en el puerto 53.
Con iptables, quiero redirigir todo el tráfico de búsqueda de DNS a una IP y puerto específicos (5353). Cualquier intento de que mi computadora se conecte a otra computadora en el puerto 53 debe redirigirse a 23.226.230.72:5353.
Para verificar el servidor DNS y el puerto que estoy tratando de usar, ejecuté este comando.
~$ dig +short serverfault.com @23.226.230.72 -p5353
198.252.206.16
Esta es la regla de iptables que estoy tratando de usar.
iptables -t nat -A OUTPUT -p udp -m udp --dport 53 -j DNAT --to-destination 23.226.230.72:5353
Después de agregar esa regla, no se encuentran todas las búsquedas de DNS. Los pings del sitio web regresan unknown host
. Las páginas web dicen 'Servidor no encontrado'.
~$ mtr serverfault.com
Failed to resolve host: Name or service not known
Quiero que mi DNS busque en 23.226.230.72:5353. ¿Cómo puedo hacer que la regla de iptables funcione?
EDITAR
Demostración de la intercepción de DNS (puerto 53) por parte de mi ISP. Rastree la salida desde la excavación hasta 23.226.230.72 a través del puerto 5353 y luego el puerto 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
Mis iptables actuales. 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
aquí8.8.8.8
y8.8.4.4
Respuestas:
Realice todas estas instrucciones como root (sudo).
Edita este archivo.
Deshabilite DnsMasq comentando la línea
dns=dnsmasq
. Pon un#
delante de la líneaReinicie su red.
Agregue estas reglas de iptable.
fuente
Parece que lo que realmente buscas es tener el control de lo que sucede con tus consultas DNS.
No estoy seguro de que usar iptables sea mi solución preferida.
¿Ha pensado en configurar un servidor DNS local que simplemente envíe sus solicitudes al host y al puerto que desee? Un ejemplo: utilizando la opción de reenviadores bind9, puede agregar un puerto a un reenviador.
Tal configuración es mucho más fácil de mantener y solucionar problemas, y puede ser mucho más flexible. Considere la ventaja del almacenamiento en caché, o simplemente considere el caso en que su servidor DNS externo está inactivo. Puede tener múltiples reenviadores en su configuración de DNS, pero solo una IP en las reglas de iptables ....
Hay una buena descripción general de la configuración de bind9 en un tutorial en digital ocean . Simplemente agregue el puerto a los reenviadores y ya debería estar listo.
Bind9 no consume muchos recursos y se configura fácilmente (o al menos: más fácil que iptables :-))
fuente
Prueba esto:
Primero debe habilitar la opción de reenvío en
Establecer en uno el valor de
Habilita los cambios
Guarde y ejecute lo siguiente:
Si pudiera especificar la interfaz interna (-i eth1) en PREROUTING o / y out-interfect (-o eth0) IN POSTROUTING podría ser útil.
NOTA: la línea MASQUARADE es necesaria mientras que esto enmascara la IP de destino con la IP principal.
fuente
sysctl net.ipv4.ip_forward=1
y las reglas de iptables. DNS funciona, pero mi ISP aún lo está interceptando. Eso me indica que el DNS todavía se está enviando a través del puerto 53.udp
, pero obtuve los mismos resultados.Prueba esto:
Significa:
1) Cualquier usuario local que contacte al mundo con el puerto tcp 53 envíe al 23.226.230.72 en el puerto 5353.
2) Igual que 1 pero para udp
3) Configure la información de origen en el paquete saliente que proviene de nosotros.
fuente
fuente
sport
adport
(aparentemente, esto fue un error en la respuesta de tachomi que Battman622 señaló hace tres años , (2) agregó una línea (comando) paraudp
(esto es una mejora legítima a la respuesta de tachomi, pero una que ya se mencionó en un comentario ... (Cont.)--to-destination
con--to
. La página del manual no dice eso--to
y--to-destination
son equivalentes; por el contrario, dice que--to
se usa con elNETMAP
objetivo (en oposición alDNAT
objetivo) y que su argumento no incluye un número de puerto. (Aunque me doy cuenta de que algunas otras respuestas usan--to
la forma en que lo hizo). ¿Está seguro de que--to
funciona de la manera en que lo usa (con un número de puerto, con elDNAT
objetivo)? ... (Continúa)--to
mejor que--to-destination
cualquier otra cosa que no sea breve?