en résumé (après des heures de débogage avec @krisFR) : Au moins sous Debian 8, n'utilisez jamais les interfaces virtuelles (eth0:1) pour OpenVPN, appliquez plutôt la nouvelle version debian iproute2
méthodes (approche manuelle) décrites ici : https://wiki.debian.org/NetworkConfiguration#iproute2_method . Il acheminera le trafic très bien.
J'essayais de configurer OpenVPN sur une machine où tout le trafic client devait être envoyé sur le tunnel, donc cela fait partie de la configuration de mon serveur :
local x.x.x.243
port 443
proto udp
dev tun
server 172.31.1.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
Et la configuration de mon client :
pull
resolv-retry infinite
mute-replay-warnings
redirect-gateway def1
script-security 1
Le client est en mesure de se connecter au VPN et peut envoyer un ping à l'hôte VPN à l'adresse suivante 172.31.1.1
Cependant, si j'essaie d'envoyer un ping à google.com par domaine ou IP, j'obtiens un message d'erreur. Request timeout for icmp_seq 0
message...
Quelle peut en être la cause ? Remarque : j'ai désinstallé tous les pare-feu et je règle actuellement IPTables sur :
iptables -A INPUT -i eth0:1 -m state --state NEW -p udp --dport 443 -j ACCEPT
iptables -A INPUT -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -o eth0:1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0:1 -o tun+ -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -s 172.31.1.0/24 -o eth0:1 -j MASQUERADE
iptables -A OUTPUT -o tun+ -j ACCEPT
Merci.
J'ai donc essayé de faire un ping sur le client 213.30.5.46
(une des IP de Google) et cela n'a pas fonctionné, mais j'ai obtenu ce résultat :
Écoute sur l'IP du VPN sortant (eth0:1) : tcpdump -i eth0 -t host x.x.x.243
IP [CLIENT_IP x..].51060 > vpn.exampledomain.com.https: UDP, length 113
IP [CLIENT_IP x..].51060 > vpn.exampledomain.com.https: UDP, length 145
IP vpn.exampledomain.com.https > [CLIENT_IP x..].51060: UDP, length 81
IP [CLIENT_IP x..].51060 > vpn.exampledomain.com.https: UDP, length 145
IP [CLIENT_IP x..].51060 > vpn.exampledomain.com.https: UDP, length 145
IP [CLIENT_IP x..].51060 > vpn.exampledomain.com.https: UDP, length 145
Au même moment, en écoutant sur tun0, j'ai eu ça : tcpdump -i tun0
23:40:39.864798 IP 172.31.1.10 > cache.google.com: ICMP echo request, id 17942, seq 0, length 64
23:40:40.925951 IP 172.31.1.10 > cache.google.com: ICMP echo request, id 17942, seq 256, length 64
23:40:41.886679 IP 172.31.1.10 > cache.google.com: ICMP echo request, id 17942, seq 512, length 64
23:40:42.906125 IP 172.31.1.10 > cache.google.com: ICMP echo request, id 17942, seq 768, length 64
Voici la sortie de iptables -L -n -v
:
Chain INPUT (policy ACCEPT 34772 packets, 2265K bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT udp -- eth0:1 * 0.0.0.0/0 0.0.0.0/0 state NEW udp dpt:443
13 1092 ACCEPT all -- tun+ * 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
1437 96985 ACCEPT all -- tun+ * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- tun+ eth0:1 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 ACCEPT all -- eth0:1 tun+ 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
Chain OUTPUT (policy ACCEPT 32574 packets, 7919K bytes)
pkts bytes target prot opt in out source destination
13 1092 ACCEPT all -- * tun+ 0.0.0.0/0 0.0.0.0/0
Note : /proc/sys/net/ipv4/ip_forward
est réglé sur 1
.
Ciblé tcpdump -i eth0:1 -t host 213.30.5.46
pendant l'envoi de la destination :
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0:1, link-type EN10MB (Ethernet), capture size 262144 bytes
IP 172.31.1.10 > cache.google.com: ICMP echo request, id 16920, seq 0, length 64
IP 172.31.1.10 > cache.google.com: ICMP echo request, id 16920, seq 256, length 64
IP 172.31.1.10 > cache.google.com: ICMP echo request, id 16920, seq 512, length 64
IP 172.31.1.10 > cache.google.com: ICMP echo request, id 16920, seq 768, length 64
Rien ne s'affiche sur le client, le ping finit par s'arrêter.
L'adresse IP utilisée par OpenVPN local x.x.x.243
est configuré sur \etc\network\interfaces
comme eth0:1
juste après eth0
comme :
auto eth0:1
iface eth0:1 inet static
address x.x.x.243
gateway x.x.x.129
netmask 255.255.255.128
dns-nameservers x.x.x.4 x.x.x.104