Существует проблема замены маршрута по умолчанию при использовании openvpn поверх pppoe
дело в том, что pppoe поднимается с неправильным маршрутом по умолчанию, выглядит он вот так
Таблица маршутизации ядра протокола IP Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 ppp0
опенвпну не нравится gateway поэтому его нужно исправить, например на вот такой
Таблица маршутизации ядра протокола IP Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 222.222.222.22 0.0.0.0 UG 0 0 0 ppp0
для этого создадим файл
/etc/ppp/ip-up.d/default-gateway
не забываем задать ему chmod u+x
с таким содержимым
#!/bin/bash if [ $(ip route list exact default |\ awk '/^default/ {print $2}') = dev ]; then IF=$(ip route | awk '/^default/ {print $3}') GW=$(ip address show $IF |\ awk '/peer/ {print $4}' | cut -d"/" -f1) ip route replace default via $GW dev $IF fi
если руками выполнить этот скрипт то он предложит сделать примерно вот такое
ip route replace default via 222.222.222.22 dev ppp0
После чего опенвпн успешно подменит маршрут на свой, и трафик полетит в нужную сторону.
если до какого-то хоста нам нужно пустить трафик вне ОпенВПна, например до своего хоста, для подключения по ssh, то в этот же файл добавляем
#my route 91.91.91.91 route add 91.91.91.91 gw 222.222.222.22 dev ppp0
если шлюз динамический, то используем $GW вместо 222.ххх