Bonjour,
Je remonte une astuce pour ceux qui comme moi aurait eu un problème pour accèder à Internet via le vpn.
J'ai un Syno 210j avec DSM4, j'ai configuré openvpn fourni avec DSM4, dnsmasq installé avec ipkg et l'authentification par clé. Je n'arrivais pas à accéder à Internet via le vpn. Le forward_ip et les proxy_arp des interfaces eth0 et tun0 étaient pourtant activés. Le dns renvoyait correctement les infos et les configs openvpn serveur et client semblaient corrects. Traceroute confimait mon problème en étant incapable de rejoindre la passerelle.
Il semble que sur mon syno iptables était mal installé. Il m'était impossible d'accéder à la table nat. Une règle est nécessaire pour router le traffic entre le réseau VPN et l'interface eth0 (voir http://openvpn.net/i...o.html#redirect):
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Sur le forum http://forum.synolog...p?f=197&t=48131 une méthode est donnée pour recharger les modules nécessaires à iptables.
Dans un script exécuter:
for i in x_tables.ko ip_tables.ko iptable_filter.ko nf_conntrack.ko \
nf_defrag_ipv4.ko nf_conntrack_ipv4.ko nf_nat.ko \
iptable_nat.ko ipt_REDIRECT.ko xt_multiport.ko xt_tcpudp.ko \
xt_state.ko ipt_MASQUERADE.ko
do
/sbin/insmod /lib/modules/$i
done
Dans mon cas les fichiers étaient déjà présent, cependant après avoir exécuté le script la commande
iptables -t nat -L
a fontionnée et cette fois-ci la table 'nat' s'est bien affichée. J'ai ainsi pu ajouter la règle donnée ci-dessus et le routage des requêtes de mon client via le vpn vers Internet ont marchées!
Ma config complète:
Sous reseau du syno: 192.168.57.0/24
L'adresse de mon syno qui fais DNS + VPN : 192.168.57.1
L'adresse de la passerelle : 192.168.57.254
Sous reseau du VPN: 10.8.0.0/24
L'adresse du Syno dans le réseau VPN: 10.8.0.1
/usr/syno/etc.defaults/rc.d # more /etc/resolv.conf
nameserver localhost
nameserver 212.27.40.241
nameserver 212.27.40.240
more S20openvpn.sh
#!/bin/sh
#
# Startup script for openvpn as standalone server
#
# Make device if not present (not devfs)
if ( [ ! -c /dev/net/tun ] ) then
# Make /dev/net directory if needed
if ( [ ! -d /dev/net ] ) then
mkdir -m 755 /dev/net
fi
mknod /dev/net/tun c 10 200
fi
# Make sure the tunnel driver is loaded
if ( !(lsmod | grep -q "^tun") ); then
insmod /lib/modules/tun.ko
fi
# Kill old server if still there
if [ -n "`pidof openvpn`" ]; then
killall openvpn 2>/dev/null
fi
# Start afresh - add as many daemons as you want
/usr/sbin/openvpn /usr/syno/etc/packages/VPNCenter/openvpn/openvpn.conf
echo 1 > /proc/sys/net/ipv4/conf/tun0/proxy_arp
Config server:
push "redirect-gateway def1"
push "route 192.168.57.0 255.255.255.0"
;push "route 10.8.0.0 255.255.255.0"
push "dhcp-option DNS 192.168.57.1"
dev tun
port 443
proto tcp
port-share 127.0.0.1 4430
server 10.8.0.0 255.255.255.0
dh /usr/syno/etc/packages/VPNCenter/openvpn/keys/vpn.pem
ca /usr/syno/etc/packages/VPNCenter/openvpn/keys/ca.crt
cert /usr/syno/etc/packages/VPNCenter/openvpn/keys/vpn.crt
key /usr/syno/etc/packages/VPNCenter/openvpn/keys/vpn.key
tls-auth /usr/syno/etc/packages/VPNCenter/openvpn/keys/ta.key 0
max-clients 5
comp-lzo
user nobody
group nobody
daemon
persist-tun
persist-key
ifconfig-pool-persist /usr/syno/etc/packages/VPNCenter/openvpn/ipp.txt
verb 3
log-append /usr/syno/etc/packages/VPNCenter/openvpn/openvpn.log
cipher AES-256-CBC
keepalive 10 60
reneg-sec 0
client-to-client
Config client:
remote mon-vpn.com 443 tcp-client
pull
comp-lzo adaptive
ns-cert-type server
tls-auth ta.key 1
persist-key
ca ca.crt
redirect-gateway def1
dev tun
persist-tun
cert cert.crt
tls-client
key key.key
pull
script-security 2
cipher AES-256-CBC
Espérant que ça puisse aider.