Разрыв соединения, потому что VPN изменит маршрут по умолчанию, поэтому все идет в VPN. Вы можете изменить эту таблицу маршрутизации, но это может быть сложно сделать правильно, особенно если вы потеряете ssh-доступ, если что-то пойдет не так.
Одно простое решение - указать вашему серверу, чтобы он достиг вашего собственного IP-адреса через eth0, установив маршрут:
ip route add your_ip_address via the_server's_gateway
и надеясь, что сценарий VPN не коснется его.
Если вы также хотите разрешить другим хостам доступ к исходному адресу сервера, то есть, если вы также хотите, чтобы ваш сервер отвечал и на свой первоначальный IP-адрес, и на IP-адрес VPN, вам нужно будет изменить способ, которым VPN меняет ваш маршрут или, по крайней мере, знать, как это меняет их, чтобы обойти то, что делает.
По сути, вам нужна политика маршрутизации. У вас будет две таблицы маршрутизации: одна будет использовать VPN, а другая не будет ее использовать.
Если сценарий VPN изменит только main
таблицу, вы можете добавить другую таблицу маршрутизации, которая будет использоваться для исходного IP-адреса.
Таким образом, в основном, перед запуском VPN, вы дублируете main
контент в другую таблицу, например table 2
(здесь 2 - произвольное число, смотрите /etc /iproute2 /rt_tables для определения псевдонима имени):
ip route add (network)/(prefixlen) dev eth0 src (address) table 2
ip route add default via (gateway) dev eth0 src (address) table 2
Теперь добавьте правило для использования этой таблицы, если к вашему серверу обращаются по его первоначальному IP-адресу из интерфейса eth0
:
ip rule add to (address) iif eth0 table 2
Затем вы запускаете свой VPN-скрипт.
Теоретически, вы должны запустить ip rule add
перед добавлением маршрута по умолчанию во вторую таблицу, потому что в противном случае ядро отклонит это правило, заявив, что оно не может маршрутизировать к шлюзу. но в вашем случае он будет работать нормально, так как main
уже может маршрутизировать к шлюзу.