1

На машине Debian у меня были проблемы с подключением к серверу openVPN.

Соединение может быть установлено, просто в том смысле, что будет добавлен интерфейс, и я получу назначенный ему IP-адрес 10.130.xx, но я не смог получить трафик через VPN. Весь трафик все равно будет идти через мой исходный публичный IP-адрес:

root@vps2:~# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
92.222.32.0 0.0.0.0 255.255.255.0 U 0 0 0 venet0
0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 venet0
root@vps2:~# wget --no-dns-cache --no-proxy --header="Host: ipecho.net" http://146.255.36.1/plain -q -O - 2>&1;echo
92.222.32.42
root@vps2:~# service openvpn start
[ ok ] Starting virtual private network daemon: myvpn.
root@vps2:~# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.130.3.137 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
92.222.32.0 0.0.0.0 255.255.255.0 U 0 0 0 venet0
0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 venet0
root@vps2:~# wget --no-dns-cache --no-proxy --header="Host: ipecho.net" http://146.255.36.1/plain -q -O - 2>&1;echo
92.222.32.42
root@vps2:~#

В моем системном журнале я смог увидеть сообщение NOTE: unable to redirect default gateway -- Cannot read current default gateway from system . И некоторые поиски привели меня к выводу, что это потому, что шлюз по умолчанию не был установлен явно. Я предполагаю, что удаленный VPN использует какой-то клиентский сценарий, который не просто ожидает явного определения шлюза по умолчанию.

Я попытался 2 способа явно установить мой шлюз по умолчанию. И оба работают !

  • Сначала я попытался установить свой исходный публичный IP-адрес в качестве шлюза по умолчанию, который работал:

    route add default gw 92.222.32.42
    root@vps2:~# route add default gw 92.222.32.42
    root@vps2:~# route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    92.222.32.0 0.0.0.0 255.255.255.0 U 0 0 0 venet0
    0.0.0.0 92.222.32.42 0.0.0.0 UG 0 0 0 venet0
    0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 venet0
    root@vps2:~# service openvpn start
    [ ok ] Starting virtual private network daemon: myvpn.
    root@vps2:~# wget --no-dns-cache --no-proxy --header="Host: ipecho.net" http://146.255.36.1/plain -q -O - 2>&1;echo
    217.23.15.239
    root@vps2:~#

  • Но зачем использовать мой оригинальный публичный IP-адрес в качестве шлюза по умолчанию? Я не знаю. Поэтому я также попробовал сделать это, установив первый переход из случайной трассировки в качестве шлюза по умолчанию. И это также сработало:

    root@vps2:~# traceroute foo.com
    traceroute to foo.com (121.232.122.233), 30 hops max, 60 byte packets
    1 49.ip-92-222-50.eu (92.222.50.49) 0.039 ms 0.011 ms 0.012 ms
    2 [......... I stop the traceroute when I see the first hop]
    ^C
    root@vps2:~# route add default gw 92.222.50.49 root@vps2:~# route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    92.222.32.0 0.0.0.0 255.255.255.0 U 0 0 0 venet0
    0.0.0.0 92.222.50.49 0.0.0.0 UG 0 0 0 venet0
    0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 venet0
    root@vps2:~# service openvpn start
    [ ok ] Starting virtual private network daemon: myvpn.
    root@vps2:~# wget --no-dns-cache --no-proxy --header="Host: ipecho.net" http://146.255.36.1/plain -q -O - 2>&1;echo
    217.23.15.239
    root@vps2:~#

Ура! Я получил это далеко самостоятельно.

Теперь после подключения к VPN, маршрутизация меняется автоматически. Это хорошо, и все, но теперь я теряю все соединения через свой исходный публичный IP-адрес, и мое SSH-соединение прерывается, мой веб-сервер больше не доступен и даже другие сервисы, которые я предлагаю. Я предполагаю, что это потому, что все входящие соединения теперь имеют ответы, маршрутизируемые через VPN. Я бы предпочел видеть все соединения, которые приходят через мой оригинальный общедоступный IP-адрес, чтобы получать ответы с того же IP-адреса. И что VPN используется только для соединений, которые мой сервер инициирует для внешнего мира. Я еще не разобрался в этой части.

Вот как выглядит моя маршрутизация после подключения к VPN:

root@vps2:~# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.130.0.1 10.130.3.73 255.255.255.255 UGH 0 0 0 tun0
10.130.3.73 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
217.23.15.239 92.222.32.42 255.255.255.255 UGH 0 0 0 venet0
92.222.32.0 0.0.0.0 255.255.255.0 U 0 0 0 venet0
0.0.0.0 10.130.3.73 128.0.0.0 UG 0 0 0 tun0
128.0.0.0 10.130.3.73 128.0.0.0 UG 0 0 0 tun0
0.0.0.0 92.222.32.42 0.0.0.0 UG 0 0 0 venet0
0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 venet0
root@vps2:~#

Итак, мои вопросы:

  • Что я должен использовать в качестве шлюза по умолчанию, так как оба метода работали? Мой оригинальный публичный IP или первый прыжок в traceroute? Или что-то совершенно другое?

  • Как я могу автоматизировать это, чтобы шлюз устанавливался автоматически при загрузке? Я имею в виду, что при загрузке сервер проверяет, задан ли у меня шлюз по умолчанию, а если нет, то в качестве шлюза по умолчанию будет указан мой общедоступный IP-адрес или первый переход traceroute ...

  • И, наконец, после подключения к openVPN, как я могу предотвратить потерю подключения через исходный общедоступный IP-адрес, но при этом все исходящие подключения используют VPN?

0