Назад | Перейти на главную страницу

OpenVPN работает, но как направить весь трафик по нему?

Я установил статическое соединение OpenVPN один на один нормально. Однако я не могу заставить клиента направлять весь трафик через устройство VPN. Вот мои конфиги:

Конфигурация клиента:

remote 89.21.xx.xx
dev tun
ifconfig 10.8.0.2 10.8.0.1
secret static.key
comp-lzo
keepalive 10 60
ping-timer-rem
persist-tun
persist-key

Конфигурация сервера:

dev tun
ifconfig 10.8.0.1 10.8.0.2
push "redirect-gateway def1"
secret static.key
comp-lzo
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
verb 5

Из всех исследований, которые я провел, строка конфигурации сервера нажмите "redirect-gateway def1" должен заставить клиентов маршрутизировать весь трафик через VPN. Однако этого эффекта нет. Я могу пинговать / ssh / http на сервер на 10.8.0.1, и таблица маршрутизации клиента выглядит, как показано ниже, но нормальный трафик идет по обычному (небезопасному) маршруту:

root@t42:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.8.0.1        0.0.0.0         255.255.255.255 UH    0      0        0 tun0
192.168.69.0    0.0.0.0         255.255.255.0   U     2      0        0 wlan0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 wlan0
0.0.0.0         192.168.69.1    0.0.0.0         UG    0      0        0 wlan0

Вы должны иметь "pull" в конфигурации вашего клиента, чтобы иметь возможность "проталкивать" настройки с сервера.

Как только вы это добавите, все должно работать так, как вы ожидаете.

(если вы используете директиву «client», она в основном расширяется до «pull» и «tls-client»)

В def1 аргумент меняет поведение redirect-gateway немного. Это сродни:

route add 0.0.0.0/1 gw <vpn_endpoint>

Это гарантирует, что маршрут VPN имеет приоритет, но не удаляет существующий маршрут по умолчанию.

Что касается отладки проблемы, я бы предложил:

  1. Взгляни на Джеймсбэто очень хороший момент.
  2. Повысьте многословие клиента. Он должен указывать, исходит ли директива с сервера и возникла ли проблема при выполнении команды маршрута.
  3. Попробуйте поместить директиву в конфигурацию клиента, чтобы проверить, работает ли она без push.
  4. Попробуйте отбросить def1 аргумент и попросите его заменить маршрут по умолчанию, чтобы увидеть, влияет ли он на поведение.

Вы можете запустить route add default gw 10.8.0.1 (вручную или автоматически при подъеме туннеля); это добавит маршрут. Поочередно у меня есть push "route 0.0.0.0 0.0.0.0" в конфигурации OpenVPN, которая выполняет для меня маршрут по умолчанию, и это тоже работает.