1

Участвующие устройства: VPS, маршрутизатор и несколько устройств, подключенных к маршрутизатору.

Конечная цель: на основе клиента OpenVPN, который подключился к серверу на VPS, укажите только одно локальное устройство для доступа в Интернет через VPN и перенаправьте некоторые порты VPS на указанное устройство.

Сеть VPS:

Public IP: 157.7.201.X

Сеть маршрутизатора:

WAN: 192.168.178.207/27
LAN: 192.168.1.0/24

VPN:

DHCP: 10.168.1.0/29
VPS: 10.168.1.1 (static)
Client: 10.168.1.2 (static)

IP указанного устройства 192.168.1.123 (static)

(Вы можете перепрыгнуть через следующие подробные конфигурации, чтобы увидеть мою ситуацию прямо сейчас, потому что она немного длинная и не все строки полезны.)

И вот iptables моего VPS:

root@VPS:~# iptables -t nat -L POSTROUTING -vn
Chain POSTROUTING (policy ACCEPT 24 packets, 2860 bytes)
pkts bytes target prot opt in out source destination
6280 663K SNAT all -- * * 10.168.1.0/29 0.0.0.0/0 to:157.7.201.X

Таблица маршрутов моего роутера:

root@Onee3:/tmp/home/root# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.178.193 * 255.255.255.255 UH 0 0 0 vlan1
157.7.201.85 192.168.178.193 255.255.255.255 UGH 0 0 0 vlan1
10.168.1.1 * 255.255.255.255 UH 0 0 0 tun11
10.168.1.0 10.168.1.1 255.255.255.248 UG 0 0 0 tun11
192.168.178.192 * 255.255.255.224 U 0 0 0 vlan1
192.168.1.0 * 255.255.255.0 U 0 0 0 br0
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
default 192.168.178.193 0.0.0.0 UG 0 0 0 vlan1

Iptables моего роутера:

root@Onee3:/tmp/home/root# iptables -t nat -L POSTROUTING -vn
Chain POSTROUTING (policy ACCEPT 5 packets, 709 bytes)
pkts bytes target prot opt in out source destination
75 14012 SNAT all -- * br0 192.168.1.0/24 192.168.1.0/24 to:192.168.1.233
12828 1438K SNAT all -- * vlan1 192.168.1.100 0.0.0.0/0 to:192.168.178.207
27 1764 SNAT all -- * tun11 0.0.0.0/0 10.168.1.0/29 to:10.168.1.2
33 1980 SNAT all -- * vlan1 192.168.1.222 0.0.0.0/0 to:192.168.178.207
0 0 SNAT all -- * tun11 192.168.1.123 0.0.0.0/0 to:10.168.1.2

Моя ситуация сейчас такова:

Сам маршрутизатор может получить доступ к Интернету через физическую сеть, и он может получить доступ к любому хосту, включая 10.168.1.1, который является виртуальным IP-адресом VPS.

Любое устройство, подключенное к маршрутизатору, может нормально обращаться к маршрутизатору и виртуальному IP-адресу VPS. Устройства, включенные в iptables маршрутизатора, которые настроены на использование vlan1, могут нормально выходить в Интернет, например, 192.168.1.100 в списке. Другие, не включенные, не могут, потому что запись MASQUERADE по умолчанию была удалена вручную.

Итак, теперь я добавил запись в iptables маршрутизатора, чтобы выполнить пересылку ip с 192.168.1.123 до 10.168.1.2 по SNAT(в списке выше) или MASQUERADE(также пытался), но в результате 192.168.1.123 может Доступ только к хостам в локальной сети или к виртуальному IP-адресу VPS.

Одним словом, я застрял на полпути (или даже меньше) к конечной цели. Пожалуйста, помогите мне, спасибо.

1 ответ1

0

Кажется, что проблема действительно не имеет никакого отношения к предварительной маршрутизации или пост-маршрутизации

Я наконец решил проблему, добавив новую таблицу маршрутов

route add default gw 192.168.178.193 # to add a default route of the local physical network, notice that it should be above the one of the VPN
ip route del default via 10.168.1.1 dev tun11 table main # delete the VPN route from the main route table
ip route add table 200 via 10.168.1.1 dev tun11 # create a new table numbered 200 to use the VPN
ip rule add from 192.168.1.200/32 table 200 # add devices which are expected to be connected to the VPN
ip rule add from 192.168.1.222/32 table 200

Затем для переадресации портов я сослался на https://unix.stackexchange.com/questions/55791/port-forward-to-vpn-client

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .