• # essai de script

    Posté par . En réponse au message N'utiliser un vpn que pour une application. Évalué à 0.

    Re-Bonjour,

    J'ai tenté en m'inspirant des exemples du net de faire un script comme certains me le conseillaient ici.
    Mais cela ne fonctionne pas.

    Voilà mon script d'up

     #!/bin/bash
     TUNDEV=1ドル
     TUNIP=4ドル
     # Ici on met le réseau du VPN, pour le connaitre veuillez vous connecter au VPN avec la 
     # configuration fournie sans le "route-nopull" et faire un ifconfig sur l'interface tun créée
     # Faites pareil pour la gateway avec un `route`
     VPNNET="10.7.0.10/24" 
     VPNGW="10.7.0.9"
     EXTIF=eth0
     VPNNAME=vpntorrent
     MARK=100 # spécifique a ce VPN, vous choisissez, mettez en un différent par vpn
     # On commence par nettoyer au cas ou OpenVPN aurait violemment redémarré dans le passé
     echo "- Flushing iptables"
     iptables -t mangle -D OUTPUT -o $EXTIF -m owner --uid-owner $VPNNAME -j MARK --set-mark $MARK
     iptables -t nat -D POSTROUTING -m mark --mark $MARK -j MASQUERADE
     iptables -t nat -D POSTROUTING -m mark --mark $MARK -j SNAT --to-source $TUNIP
     echo "- Flushing iproutes"
     ip route flush table $VPNNAME
     ip rule del fwmark $MARK
     echo "- Flushing rp_filter"
     for f in all $TUNDEV
     do echo 1 > /proc/sys/net/ipv4/conf/$f/rp_filter ; done
     echo "+ adding iptables"
     # On marque tous les paquets appartenant au group $VPNNAME
     iptables -t mangle -A OUTPUT -o $EXTIF -m owner --gid-owner $VPNNAME -j MARK --set-mark $MARK
     iptables -t nat -A POSTROUTING -m mark --mark $MARK -j MASQUERADE
     # L'IP source des paquets doit etre changée vu que l'on va les faire passer par l'interface VPN tun
     iptables -t nat -A POSTROUTING -m mark --mark $MARK -j SNAT --to-source $TUNIP
     echo "+ adding iproutes"
     echo " + net ${NET} on main table"
     ip route add $VPNNET dev $TUNDEV proto kernel scope link src $TUNIP
     echo " + net ${NET} on ${VPNNAME} table"
     ip route add $VPNNET dev $TUNDEV proto kernel scope link src $TUNIP table ${VPNNAME}
     echo " + gw"
     ip route add default via $VPNGW dev $TUNDEV table ${VPNNAME}
     ip rule add fwmark $MARK table ${VPNNAME}
     ip route flush cache table ${VPNNAME}
     ip route flush cache
     echo "+ adding rp_filter" # ca c'est la commande magique
     for f in all $TUNDEV
     do echo 0 > /proc/sys/net/ipv4/conf/$f/rp_filter ; done
     echo "+ adding dns" # On utilise les DNS de google qui ont une meilleure latence quelque soit la position du serveur VPN
     echo "nameserver 8.8.8.8
     nameserver 8.8.4.4
     nameserver 213.186.33.99
     " > /etc/resolv.conf
    
    

    Celui de down

    #!/bin/bash
     TUNDEV=1ドル
     TUNIP=4ドル
     VPNNET="10.7.0.10/16"
     VPNGW="10.7.0.9"
     EXTIF=eth0
     VPNNAME=vpntorrent
     MARK=100 # spécifique au vpn, meme que pour le up
     echo "- Flushing iptables"
     iptables -t mangle -D OUTPUT -o $EXTIF -m owner --gid-owner $VPNNAME -j MARK --set-mark $MARK
     iptables -t nat -D POSTROUTING -m mark --mark $MARK -j MASQUERADE
     iptables -t nat -D POSTROUTING -m mark --mark $MARK -j SNAT --to-source $TUNIP
     echo "- Flushing iproutes"
     ip route flush table $VPNNAME
     ip rule del fwmark $MARK
     echo "- Flushing rp_filter"
     for f in all $TUNDEV
     do echo 1 > /proc/sys/net/ipv4/conf/$f/rp_filter ; done
     echo "+ flushing dns"
     echo "nameserve ksxxxxx.kimsufi.com # votre nameserver habituel, au choix
     " > /etc/resolv.conf
    
    

    Et ma conf openvpn :

     client
     dev tun
     proto udp
     remote nl2.mullvad.net 53
     resolv-retry infinite
     nobind
     persist-key
     persist-tun
     comp-lzo
     verb 3
     remote-cert-tls server
     ping-restart 60
     ping 10
     ca master.mullvad.net.crt
     cert mullvad.crt
     key mullvad.key
     route-noexec
     script-security 2
     up /usr/local/vpn/vpntorrent-up
     down /usr/local/vpn/vpntorrent-down
     persist-key
     persist-tun
    
    

    NB : il y avait ça comme script dans la conf par défaut de mon provider vpn

     # Parses DHCP options from openvpn to update resolv.conf
     up /etc/openvpn/update-resolv-conf
     down /etc/openvpn/update-resolv-conf
    
    

    Merci d'avance pour votre aide
    Et bonne fin de journée :)