OpenVPN: маршрутизировать только определенные IP-адреса через VPN?

45

В удаленной частной сети есть два сервера - файловый сервер и сервер базы данных (в случае необходимости это обе машины Win).

Файловый сервер имеет свои довольно надежные механизмы аутентификации и позволяет мне подключаться напрямую из удаленного местоположения.

Сервер базы данных использует простое имя пользователя и пароль, поэтому для предотвращения несанкционированного доступа он заблокирован в локальной сети - внешний трафик заблокирован.

Чтобы получить доступ к серверу базы данных, я использую клиент OpenVPN в Windows для подключения к серверу VPN в частной сети.

По умолчанию OpenVPN маршрутизирует все сетевые пакеты, предназначенные для удаленной сети, в которой находится сервер VPN, через VPN. К сожалению, доступ к файловому серверу через VPN очень медленный!

Вопрос:

Как я могу настроить клиент OpenVPN ТОЛЬКО для маршрутизации трафика через VPN, которая предназначена для одного конкретного IP-адреса, а именно сервера базы данных?

Брайан Лейси
источник
Это просто, смотрите здесь, как это сделать superuser.com/a/178675/96461
Sameer

Ответы:

51

Правильная конфигурация для OpenVpn:

route-nopull 
route 192.168.0.0 255.255.255.0

Эти записи принадлежат вашему файлу .ovpn и будут направлять весь трафик подсети 192.168.0. * Через VPN.

Только для одного IP (192.168.0.1):

route-nopull 
route 192.168.0.1 255.255.255.255
Томас
источник
В основном мы говорим по-английски и не обязательно знаем немецкий. Пожалуйста, переведите свой ответ.
Гроностай
1
+1. Это именно то, что мне было нужно. Я использую ovpn-клиенты на моем linux, и поэтому вы просто спасли меня. Спасибо.
Slayedbylucifer
Могу ли я просто
перенаправить
В моем случае маршрутизация одного ip через vpn работает нормально. Но при использовании маски подсети она вообще не работает. Есть идеи почему?
running.t
Я до сих пор не знаю ответа на свой вопрос (выше), но я провел некоторое расследование и создал отдельную
ветку
24

цели

  • По умолчанию используйте простое интернет-соединение для всего интернет-трафика, даже если VPN-соединение подключено.
  • Направляйте трафик на один конкретный IP-адрес через VPN.

меры

  1. Нажмите Win+ Rи выполните ncpa.cpl.

  2. Щелкните правой кнопкой мыши VPN-соединение и выберите Свойства → Сеть .

  3. Выберите Internet Protocol Version 4 и перейти к Свойства → Дополнительно ... .

  4. Снимите флажок Использовать шлюз по умолчанию в удаленной сети и нажмите ОК .

  5. (необязательно) Повторите предыдущие шаги для Интернет-протокола версии 6 .

  6. (Пере) подключиться к вашему VPN.

  7. Откройте командную строку и выполните route print -4.

  8. Найдите интерфейс VPN в списке интерфейсов и его шлюз в активных маршрутах .

    На моей машине у меня есть:

    Interface List
     32...........................Super Free VPN
    
    [...]
    
    Active Routes:
    Network Destination        Netmask          Gateway       Interface  Metric
              0.0.0.0          0.0.0.0         On-link        10.6.6.127     31
             10.0.0.0        255.0.0.0        10.88.1.1      10.88.1.102     31
    

    Здесь шлюз VPN является 10.88.1.1, так как это шлюз для 10.xxx.xxx.xxxблока.

  9. Добавьте постоянный маршрут, который будет добавляться к активным маршрутам при каждом подключении к VPN:

    route -p add 23.22.135.169 10.88.1.1 if 32
    

    В этом примере, 23.22.135.169является ИС whatismyip.org, 10.88.1.1является IP - шлюза и 32номер интерфейса.

  10. (необязательно) Повторите предыдущие шаги для route print -6.

  11. Проверьте настройку.

    Если все получилось, whatismyip.org и www.whatismyip.cx будет отображать различные IP - адреса в настоящее время.

Деннис
источник
1
Конечно, есть более простой способ?
Брайан Лейси
1
Знаете ли вы, как добиться этого под Linux (Ubuntu)?
Елин Й.
1
@ ЕлинЙ. если вы используете Network Manager, просто выберите «Использовать это соединение только для ресурсов в этой сети».
leif81
1
+1 ... но может ли это гольф?
Оливье Дюлак
11

В конфигурацию клиента OpenVPN добавьте строку вроде:

route The.IP.To.Go 255.255.255.255

(Где The.IP.To.Go - это IP-адрес, который вы хотите направить через VPN)

Это указывает OpenVPN создать запись в таблице маршрутизации вашей ОС.

В качестве альтернативы, сервер OpenVPN может быть настроен на «передачу» этой конфигурации маршрутизации клиентам, добавив в конфигурацию сервера:

push "route The.IP.To.Go 255.255.255.255"

РЕДАКТИРОВАТЬ: Одна вещь, которую я пропустил при адресации - пересылка по умолчанию всего трафика ... Он может быть либо отключен на сервере, либо клиенты могут выбрать игнорирование «проталкиваемых» директив (поэтому наш второй вариант «проталкивать» маршрут не будет работать) ) с помощью:

route-nopull
Адам
источник
-2
iptables -A PREROUTING -t mangle -i <LAN_interface> \
-d <remote_network>/<remote_netmask> -j ROUTE --gw <openvpn_host_ip>
Dharmesh
источник
Пожалуйста, объясните, что делает эта команда. Просто одна команда без объяснения причин не очень полезна. Также проверьте форматирование вашего поста - все <brackets>они не видны, если они не помечены как код.
slhck