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

Маршрутизация через шлюз OpenVPN

У меня следующая установка:

++++++++++++++++++
+ OpenVPN server +........ . .  .   .   (cat pictures)  
++++++++++++++++++
  |
  |
__|__________________________________________Internet________________
  |                                           Local
  | DSL
  |
++++++++++++++++++             +++++++++++++++++++
+ router1        +  Ethernet   + router2         +
+ DHCP serving   +-------------+ DHCP serving    +
+ 192.168.1.1/24 +        eth0 + 10.0.0.1/24     +
++++++++++++++++++             + OpenVPN client  +
  .                            + hostapd/dnsmasq +
  .                            +++++++++++++++++++
  .                              . wlan0
  .                              .
  .  WLAN 1                      .  WLAN 2
  .                              .
 (wifi clients 1)                (wifi clients 2)

Намерение состоит в том, чтобы иметь отдельную WLAN 2, к которой клиенты Wi-Fi могут подключаться и получать весь свой трафик в Интернет, маршрутизируемый через соединение OpenVPN маршрутизатора 2.

router2 работает hostapd экземпляр с довольно минимальной настройкой интерфейса wlan0. dnsmasq.conf также довольно минимален:

interface=wlan0
dhcp-range=10.0.0.1,10.0.0.254,12h
no-host

Это работает нормально. Я могу подключиться к Wi-Fi и получить IP-адрес.

OpenVPN также настроен и работает. Я подключаюсь к коммерческой службе VPN, поэтому конфигурация сервера не находится под моим контролем. OpenVPN использует tun0.

Как я могу направить все запросы в Интернет из wifi clients 2 через установленное соединение OpenVPN на router2? Думаю, мне нужно настроить таблицу маршрутизации сейчас, но как?

route говорит:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.200.4.1      128.0.0.0       UG    0      0        0 tun0
default         router1         0.0.0.0         UG    0      0        0 eth0
10.0.0.0        *               255.0.0.0       U     0      0        0 wlan0
10.200.4.0      *               255.255.252.0   U     0      0        0 tun0
<vpn server ip> router1         255.255.255.255 UGH   0      0        0 eth0
128.0.0.0       10.200.4.1      128.0.0.0       UG    0      0        0 tun0
link-local      *               255.255.0.0     U     1002   0        0 eth0
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0

Настроен ли сервер OpenVPN для маршрутизации 10.0.0.1/24 сеть к роутеру2? Что произойдет, если сервер OpenVPN пингует 10.0.0.1?

Если вы хотите, чтобы хосты на другой стороне VPN имели возможность устанавливать входящие соединения, вам нужно будет исправить свой VPN-сервер.

Если это только исходящий трафик, возможно, вам потребуется настроить NAT. Итак, пакеты из 10.0.0.0/24 сеть, похоже, исходит из интерфейса VPN.

Правило вроде iptables -t nat -A POSTROUTING -o tun1 -j SNAT --to-source 10.200.4.1

Вы определяете отдельную таблицу маршрутизации в /etc/iproute2/rt_tables, назовем его wlan2 (номер не имеет значения).

# in this routing table: send everything over the VPN
ip route add table wlan2 $vpn_remote_ip dev tun0
# next line(s) for all LAN networks (which shall be reachable from WLAN 2)
ip route add table wlan2 192.168.1.1/24 via $router1_ip
ip route add table wlan2 $router1_router2_network dev eth0 src $router2_ip

ip route add table wlan2 default via $vpn_remote_ip

# use routing table wlan2 (instead of main) for every packet coming from the WLAN
ip rule add iif $wlan_if priority 100 table wlan2

И, конечно же, вы должны настроить сервер OpenVPN для маршрутизации в сеть WLAN (если вы не используете NAT на локальном маршрутизаторе).

Изменить 1:

Если весь интернет-трафик должен проходить через сервер OpenVPN, настройка становится очень простой. Поскольку для сервера OpenVPN уже существует маршрут хоста, вам нужно только изменить маршрут по умолчанию с router1 на IP-адрес туннеля OpenVPN-сервера.