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

Как сделать 192.168.2. * Доступным из 192.168.0. *? (VPN)

Цель: Сделайте 192.168.2. * Доступно с 192.168.0. *

Ситуация: У меня есть удаленный сайт (сеть B) со встроенным в маршрутизатор сервером OpenVPN. На моем конце у меня есть сеть (Сеть A) с VPN-клиентом, подключенным к удаленному сайту (Сеть B). Хост с VPN-клиентом может пинговать все системы в обеих сетях.

Вопрос: Как я могу заставить хосты в сети A связываться с хостами в сети B, предварительно направив их через хост с помощью VPN-клиента? Примечание. Я не хочу, чтобы у каждого из них был собственный VPN-клиент.

Вот диаграмма, которую я создал, чтобы было понятнее: https://networkengineering.stackexchange.com/questions/59630/using-vpn-make-192-168-2-accessible-from-192-168-0

Я пробовал следующее:

На каждом компьютере в 192.168.0. * (Сеть A) будет добавлен шлюз по умолчанию, как показано ниже.

$ route add default gw 192.168.0.3

В GATEWAY (у него мой VPN-клиент) добавьте следующую запись маршрутизации.

$ route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.2.47

На этом этапе я надеялся, что машины в сети A смогут проверить связь с сетью B, но они не смогли.

Я понял. Мне пришлось настроить iptables на VPN-клиенте для работы в качестве NAT с опцией MASQUERADE, затем мне нужно было добавить IP-адрес VPN-клиента на соответствующий интерфейс в качестве шлюза по умолчанию для каждой системы в этой сети.


Разрешить машинам во внутренней сети (сеть A) связываться с внешней сетью (сеть B)

Вам необходимо настроить iptables для пересылки пакетов из вашей внутренней сети на eth1 (backend) во внешнюю сеть на tun0 (remote).

  1. На машине, на которой запущен VPN-клиент
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

iptables -A FORWARD -i tun0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -A FORWARD -i eth1 -o tun0 -j ACCEPT

  1. На каждой машине в вашей внутренней сети
route add default gw 192.168.0.3
  1. Теперь машины в сети A могут пинговать / связываться с сетью B.

Разрешить машинам во внешней сети связываться с вашей внутренней сетью

Вам необходимо настроить iptables для пересылки пакетов из вашей внешней сети (Сеть B) на tun0 (удаленный), во внутреннюю сеть (Сеть A) на eth1 (backend).

  1. На машине, на которой запущен VPN-клиент
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

iptables -A FORWARD -i eth1 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -A FORWARD -i tun0 -o eth1 -j ACCEPT

  1. На каждой удаленной машине
route add default gw 192.168.2.47
  1. Теперь машины в сети B могут пинговать / связываться с сетью A.

вы можете направить весь трафик, кроме интернет-трафика, с сайта B с сайта на сайт openVPN, с сайта на сайт vpn добавит маршрут по умолчанию для сети 192.168.0.0/24, а маршрут по умолчанию будет добавлен в таблицу маршрутизации вашего шлюза, чтобы каждый хост эффективно маршрутизируется через правильный шлюз.

мы попробовали это в сети с двумя виртуальными машинами pfsense (версия 2.4.4), и все прошло хорошо. сайт A был сервером, а сайт B был клиентом для соединения сайтов! сайт B маршрутизировал весь трафик через VPN, но мы переключили его обратно, чтобы маршрутизировать весь трафик http / https на каждую WAN обоих сайтов.