Рейтинг:0

Два клиента за NAT на одном VPN-подключении, выходящие на два отдельных общедоступных IP-адреса

флаг gf

Я ищу способ перенаправить исходящий трафик на отдельные IPv4-адреса для разных клиентов, подключенных через один и тот же VPN-туннель за NAT.

Прямо сейчас я перенаправляю порт 44158 с нескольких общедоступных IPv4-адресов на VPS-сервере X на несколько клиентов, подключенных через одно VPN-соединение — с маршрутизатора за NAT. Входной порт 44158 на принимающих общедоступных IPv4-адресах не может быть изменен, и клиенты за маршрутизатором получают данные на правильный порт 44158, поскольку маршрутизатор настроен на пересылку на правильный порт для каждого клиента в пункте назначения.

Делается это так:

iptables -t nat -A PREROUTING -d 103.143.72.84 -p tcp --dport 44158 -j DNAT --назначение 192.168.52.2:44158
iptables -t nat -A PREROUTING -d 103.143.72.25 -p tcp --dport 44158 -j DNAT --назначение 192.168.52.2:44159
iptables -t nat -A POSTROUTING -s 192.168.52.0/24 -j MASQUERADE

Где 192.168.0.2 это маршрутизатор в пункте назначения, который перенаправляет пакеты на свой внутренний NAT клиентам, от 44158 к 192.168.0.12:44158 и из 44159 к 192.168.0.13:44158.

Чего я пытаюсь добиться, так это заставить весь исходящий трафик с 192.168.0.12 выходить через 103.143.72.84, а весь исходящий трафик с 192.168.0.13 выходить через 103.143.72.25. Есть ли способ сделать это с iptables на VPS-сервере X?

У меня есть эта аппаратная настройка, которую я не могу изменить. Клиенты A (192.168.0.12) и B (192.168.0.13) подключаются к маршрутизатору N в локальной сети и находятся в сети NAT 192.168.0.0/24. Маршрутизатор N подключается через VPN к VPS-серверу X и получает IP 192.168.52.2. Сервер X имеет несколько общедоступных IPv4-адресов (103.143.72.84 и 103.143.72.25). И я хотел бы назначить каждому IP-адресу клиента отдельный исходящий общедоступный IP-адрес на сервере X.

  • Используемые IP-адреса приведены для примера;
  • для простоты я оставил пример с двумя клиентами, но их гораздо больше.
Рейтинг:1
флаг in

Использование исходящего трафика iptables -t nat -A РАЗМЕЩЕНИЕ...

И чтобы указать исходный адрес, используйте -j IP-адрес SNAT

iptables -t nat -A POSTROUTING -s 192.168.0.12 -j SNAT 103.143.72.84
iptables -t nat -A POSTROUTING -s 192.168.0.13 -j SNAT 103.143.72.25

Обратите внимание, что они должны быть перед глобальными МАСКАРАД если у вас есть это для этого диапазона.

Если все IP-адреса являются линейными диапазонами, то есть другие способы NAT диапазона.

флаг gf
Спасибо! Уже пробовал `POSTROUTING -s 192.168.0.12 -j SNAT --to (и --to source) 103.143.72.84`, но это не работает, потому что `192.168.0.0/24` находится за 192.168.52.2 (IP-адрес, назначенный маршрутизатор клиента VPN), поэтому сервер VPS не видит эту сеть напрямую. Я подозреваю, что это может работать с использованием conntrack ctorigsrc, но я не могу этого понять.
флаг gf
-j MASQUERADE в конце POSTROUTING перенаправляет все, что приходит с 192.168.52.2, все IP-адреса за маршрутизатором в 192.168.0.0/24, через один внешний IPv4-адрес. Я перед этим поставил SNAT, но он ничего не ловит, 192.168.0.12 не в той же сети, а за NAT 192.168.52.2.
Nikita Kipriyanov avatar
флаг za
Затем ваш VPN-маршрутизатор видит обоих клиентов как одного клиента 192.168.52.2. Есть ли способ, которым VPN-маршрутизатор надежно идентифицирует и блокирует клиентов? Можете ли вы дать им стабильные («статические») разные IP-адреса? Например. удалите NAT из системы 192.168.52.2 и настройте правильные маршруты, чтобы VPN-маршрутизатор с публичными адресами видел и различал их как 192.168.0.12 и .13 напрямую или, по крайней мере, NAT их в разные IP-адреса, а не в один 192.168.52.2 .
флаг in
В этом случае вам наверняка нужно удалить NAT с VPN-устройства, если вы уже не можете сделать SNAT там.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.