1

Я подключен к Интернету через сеть кампуса: диапазон IP-адресов, скажем, 10.42.0.0/16 и все должно проходить через прокси-сервер 10.42.0.42 .

Иногда я подключаюсь к этой сети через точку беспроводного доступа в локальном диапазоне IP-адресов 192.168.0.0/24 , этот беспроводной маршрутизатор подключен к сети кампуса.

Я также использую персональный VPN, основанный на OpenVPN. Мой диапазон IP-адресов VPN - 10.8.0.0/24 .

Когда я подключен к этой беспроводной сети, моя таблица маршрутизации:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    304    0        0 wlan0
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
192.168.1.0     0.0.0.0         255.255.255.0   U     304    0        0 wlan0

И когда я запускаю VPN в этой беспроводной сети:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.8.0.41       128.0.0.0       UG    0      0        0 tun0
0.0.0.0         192.168.1.1     0.0.0.0         UG    304    0        0 wlan0
10.8.0.0        10.8.0.41       255.255.255.0   UG    0      0        0 tun0
10.8.0.41       0.0.0.0         255.255.255.255 UH    0      0        0 tun0
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
128.0.0.0       10.8.0.41       128.0.0.0       UG    0      0        0 tun0
10.42.0.0       192.168.1.1     255.255.0.0     UG    0      0        0 wlan0
10.42.0.42      192.168.1.1     255.255.255.255 UGH   0      0        0 wlan0
192.168.1.0     0.0.0.0         255.255.255.0   U     304    0        0 wlan0

Как видите, я настроил VPN так, чтобы сеть кампуса не перенаправлялась на tun0 , чтобы серверы в этой частной зоне оставались доступными.

Но тут возникает проблема: беспроводная связь нестабильна (и я ничего не могу с этим поделать), я регулярно отключаюсь и снова подключаюсь. Во время этого процесса все записи в таблице маршрутизации о wlan0 сбрасываются, и моя таблица выглядит следующим образом:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.8.0.41       128.0.0.0       UG    0      0        0 tun0
0.0.0.0         192.168.1.1     0.0.0.0         UG    304    0        0 wlan0
10.8.0.0        10.8.0.41       255.255.255.0   UG    0      0        0 tun0
10.8.0.41       0.0.0.0         255.255.255.255 UH    0      0        0 tun0
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
128.0.0.0       10.8.0.41       128.0.0.0       UG    0      0        0 tun0

И больше ничего не работает: весь трафик перенаправляется на tun0, который больше не существует, и openVPN не может переподключиться к моему серверу (No route to host.). Единственный обходной путь, который я нашел, - это перезапустить мой клиент OpenVPN вручную.

Можно ли это стабилизировать и как?

Я работаю на Gentoo Linux, управляю своей сетью с помощью Wicd.

2 ответа2

0

Вы можете попробовать следующим образом. Добавьте эти две строки в ваш файл конфигурации клиента:

 route-delay 2
 route-up "/path/to/shell/script.sh"

Файл script.sh (который должен быть выполнен исполняемым) состоит из одной команды:

 #!/bin/bash
 ip route add 10.42.0.0/24 via 192.168.1.1 dev wlan0

Команда route-delay заставляет следующие команды выполняться через 2 секунды (измените это, как вам удобнее) после настройки всех маршрутов; следующая команда каждый раз при вызове маршрутов выполняет сценарий оболочки, единственной целью которого является добавление созданного вами специального маршрута.

0

Возможно использование сценариев Wicd для перезапуска OpenVPN при восстановлении подключения к беспроводной сети.

Просто создайте исполняемый скрипт в /etc/wicd/scripts/postconnect/restart-openvpn.sh проверив наличие файла OpenVPN PID и перезапустив его, если он уже был запущен:

#!/bin/bash
[ -f /var/run/openvpn.pid ] && /etc/init.d/openvpn restart

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .