У меня есть сервер OpenVPN и клиент, и я хочу использовать этот туннель для доступа не только к 10.0.8.0/24
но и ко всему интернету. Пока пинг сервера с клиента через интерфейс tun0
работает, и наоборот.
Однако пинг www.google.com
с клиента через tun0
не работает (все пакеты потеряны).
Я подумал, что мне нужно настроить сервер так, чтобы любой пакет, поступающий из tun0
в пункт назначения Интернета, был перенаправлен, поэтому я пришел с этой строкой конфигурации iptables:
interface_connecting_to_the_internet='eth0'
interface_openvpn='tun0'
internet_ip_address=`ifconfig "$interface_connecting_to_the_internet" | sed -n s'/.*inet \([0-9.]*\).*/\1/p'`
iptables -t nat -A POSTROUTING -o "${interface_connecting_to_the_internet}" -j SNAT --to-source "${internet_ip_address}"
echo '1' > /proc/sys/net/ipv4/ip_forward
Тем не менее, это не работает, пакеты все еще потеряны, и мне интересно, что может быть не так с моей настройкой.
Некоторые детали:
ip route выдает на сервер:
default via 176.31.127.254 dev eth0 metric 3
10.8.0.0/24 via 10.8.0.2 dev tun0
10.8.0.2 dev tun0 proto kernel scope link src 10.8.0.1
127.0.0.0/8 via 127.0.0.1 dev lo
176.31.127.0/24 dev eth0 proto kernel scope link src 176.31.127.109
ip route выдает на клиенте:
default via 192.168.1.1 dev wlan0 proto static
10.8.0.1 via 10.8.0.5 dev tun0
10.8.0.5 dev tun0 proto kernel scope link src 10.8.0.6
127.0.0.0/8 via 127.0.0.1 dev lo scope link
192.168.1.0/24 dev wlan0 proto kernel scope link src 192.168.1.109
- клиент использует wifi адаптер
wlan0
и TUN адаптерtun0
. - сервер использует адаптер ethernet
eth0
и адаптер TUNtun0
. VPN охватывает
10.0.8.0/24
и клиент, и Linux используют Linux 3.6.1.