8 votos

Linux: enrutamiento basado en nombres de dominio

En ubuntu 16.04, me gustaría encaminar el tráfico a través de la directa a internet eth0 o mi VPN tun0 basado en el nombre de dominio ingresado en el navegador. La razón de ser sitios locales son lentos o ubicación dependientes.

Me doy cuenta de que el núcleo de la tabla de enrutamiento es basado en IP y nombres de dominio son, por lo general se resuelve en la capa de software, pero linux es una secuencia de comandos de una plataforma amigable, yo estoy esperando una solución. Aunque, no tengo idea de cómo escribir una secuencia de comandos.

Hasta ahora he encontrado a la dig example.com +short @8.8.8.8 le mostrará una lista de las direcciones ip asociadas con un dominio, y he descubierto la sudo route add -net 8.8.8.8 netmask 255.255.255.255 gw 192.168.2.1 comando de la derivación de la VPN a una determinada IP (donde 192.168.2.1 es mi defecto eth0). Podría alguien ser tan amable de plantilla de un script que lee un archivo que contiene los nombres de dominio y entra en la ruta de las reglas del sistema de arranque. Puntos de bonificación para permitir el enmascarado sub dominios *.example.com.

Si hay un método más fácil para esta locura voy a aceptar como una solución.

Nota: podría muy fácilmente duro código de la IPs en /etc/network/interfaces , pero luego se vuelven difíciles de manejar. También traté de codificar todos los conocidos de IPs para mi país en este archivo, pero no estaba muy golpeado y se pierda junto con un retraso en el tiempo de arranque.

2voto

Me gustaría recomendar que evite la gestión de enrutamiento basada en los nombres de dominio (por cierto, también es imposible resolver comodín subdominio, si se trata de puntos de bonificación por ella o no :D)

Para ser un poco descriptivos, usted no debe hacer eso porque:

1) algunos de los dominios de los cambios de su IPs de tiempo en tiempo,

2) es imposible para que coincida con los caracteres comodín en los subdominios

3) es imposible saber/buscar todos los subdominios del dominio

4) cualquier azar subdominio puede tener cualquier aleatoria de direcciones IP.

Así, la solución como complemento del navegador (y/o la costumbre local proxy como squid) es la mejor opción para su problema.

Pero, supongo, "FoxyProxy" addon (originalmente Firefox addon, pero AFAIRC, es alfo Chrome versión existe) es exactamente lo que usted desea.

Y, también, en respuesta a su aviso de que "FoxyProxy es el servicio de pago y ya tiene su vpn":

FoxyProxyPlus es el servicio de pago, pero no FoxyProxy.

FoxyProxy es addon, disponible para los principales navegadores:

La Edición Estándar (Firefox) | Edición Básica (Firefox)

La Edición estándar (Chrom{e,io}) | Edición Básica (Chrom{e,io})

Así que, si quieres ir a algunos dominios a través de VPN, usted debe:

1) escribir las reglas para foxyproxy para ir a través de usted calamar instancia para la lista de dominios

2) y/o escribir en la lista de reglas para el calamar

3) capturar el tráfico http/https que no son propiedad del calamar con iptables y el punto es que para squid, por regla como esta:

iptables -m owner -m multiport -t nat -A OUTPUT ! -o lo ! --uid-owner $squid_user_id -p tcp --dports 80,443,8080,... -j REDIRECT --to-ports $SQUID_PORT

(--syn opción puede ser necesario para el -p tcp)

4) capturar el tráfico http/https propiedad del calamar, y la marca para la próxima enrutamiento para VPN con la regla como esta:

iptables -A OUTPUT -m owner --uid-owner $squid_user_id -j MARK --set-mark 11

5)

echo 11 forcevpn >> /etc/iproute2/rt_tables
ip rule add fwmark 11 table forcevpn
ip route add default via 10.0.0.1 table forcevpn

donde 10.0.0.1 es que en el interior de la puerta de enlace de VPN. O usted puede utilizar dev $VPN_IF en lugar de via 10.0.0.1 si usted no tiene ninguna puerta de enlace y solo quieren sacar todo el tráfico en la interfaz vpn.

6) opcionalmente, puede ser necesario ejecutar sudo sysctl ipv4.conf.all.rp_filter =0

===

Y una cosa más:

Si usted desea hacer la misma magia con la no-http(s) de tráfico TCP, usted va a ser necesario algo como proxychains, y realizar similar a capturar la magia.

Y, si usted quiere hacer que la magia con la UDP, tengo una mala noticia: no conozco a ningún proxy capaz de proxy de la UDP (debido a la naturaleza de este protocolo) :)

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X