У меня следующая установка:
++++++++++++++++++
+ 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-сервера.