web-dev-qa-db-fra.com

Linux: routage basé sur les noms de domaine

Sur Ubuntu 16.04, j'aimerais avoir parcouru mon trafic par l'internet direct eth0 ou mon VPN tun0 Basé sur le nom de domaine entré dans le navigateur. La raison pour laquelle les sites locaux sont lents ou dépendants de l'emplacement.

Je réalise que la table de routage du noyau est basée sur IP et les noms de domaine sont généralement résolus dans la couche logicielle, mais avec Linux étant une plate-forme conviviale de script, j'espère une solution de contournement. Cependant, je ne sais pas comment écrire un tel script.

Jusqu'ici j'ai trouvé le Dig example.com +short @8.8.8.8 La commande listera les IP associés à un domaine et j'ai compris le Sudo route add -net 8.8.8.8 netmask 255.255.255.255 gw 192.168.2.1 commande contournera le VPN pour une adresse IP donnée (où 192.168.2.1 est ma valeur par défaut eth0). Quelqu'un serait-il assez aimable pour modeler un script qui lit un fichier contenant les noms de domaine et entre dans les règles de route lors du démarrage du système. Points bonus pour permettre des sous-domaines masqués *.example.com.

S'il y a une méthode plus facile à cette folie, je l'accepterai comme solution.

Remarque: je pourrais très facilement durer le code du système IPS dans /etc/network/interfaces Mais alors ils deviennent difficiles à gérer. J'ai également essayé de coder dur tous les IP connus pour mon pays dans ce dossier, mais c'était très frappé et manquez avec un temps de démarrage retardé.

5
Twifty

Squid ne supporte pas les chaussettes (comme le tunnel SSH) ... Il existe une option pour construire des calmaris avec support de chaussettes, mais il est difficile de le faire fonctionner.

Privoxy peut faire le travail

  • Soutien des chaussettes de parents
  • Prise en charge du proxy HTTP/HTTPS
  • Conférencier de soutien
  • etc.

Configuration de Privoxy:

  1. Installez Privoxy

  2. Modifiez le fichier de configuration (supprimer tout sur /etc/privoxy et ajouter /etc/privoxy/config)

    user-manual /usr/share/doc/privoxy/webserver/user-manual
    confdir /etc/privoxy
    logdir /var/log/privoxy
    actionsfile default.action
    filterfile default.filter
    logfile logfile
    toggle  1
    enable-remote-toggle  0
    enable-remote-http-toggle  0
    enable-edit-actions 0
    enforce-blocks 0
    buffer-limit 4096
    enable-proxy-authentication-forwarding 0
    forwarded-connect-retries  0
    accept-intercepted-requests 0
    allow-cgi-request-crunching 0
    split-large-forms 0
    keep-alive-timeout 5
    tolerate-pipelining 1
    socket-timeout 300
    listen-address  127.0.0.1:8888
    forward-socks5 .whatismyipaddress.com 127.0.0.1:8080 . 
    forward-socks5 .whatismyip.com 127.0.0.1:8080 . 
    
  3. Redémarrer le service

    systemctl start privoxy

  4. Configurez le proxy Privoxy sur l'application client

  5. Si vous souhaitez acheminer un référent également Ajouter par défaut.action et par défaut.filter, vous pouvez tester cela avec http://www.play-hookey.com/htmltest/ avec le code HTML

    <a href="http://amibehindaproxy.com/">test-ip</a></br>
    <a href="http://www.stardrifter.org/cgi-bin/ref.cgi">test-referrer</a>  
    
  6. default.action et par défaut.filter

    action par défaut

    {+client-header-tagger{referer}}
    /
    
    {+forward-override{forward-socks5 127.0.0.1:8080 .}}
    TAG:.*?hookey.com 
    

    default.Filter

    CLIENT-HEADER-TAGGER: referer
    s@^Referer:.*?$@$0@i
    
  7. Redémarrer le service Privoxy

1
intika

solution:

Une combinaison d'un serveur Sniproxy Plus un serveur DNS peut faire le travail (cela supporte également les chaussettes et peut être configuré facilement)

sni-ssl-proxy et non lié ( sur github )

0
intika