LINUX.ORG.RU
ФорумAdmin

OpenVPN Outgoing IP Address

 ,


0

1

Добрый день. Есть сервер с несколькими IP (Cent OS 7). Для простоты пусть будет 2: интерфейс enp2s0 IP 1.1.1.2 и интерфейс enp2s0:1 IP 1.1.1.3. Установлен OpenVPN Server. Все исходящие соединения с него идут с первого интерфейса (enp2s0: 1.1.1.2). А можно ли сделать, чтобы исходящие соединения шли со второго, т.е. с IP 1.1.1.3 ? В идеале вообще чтобы было так: если клиент VPN подсоединился к IP 1.1.1.2, то чтобы исходящий траффик с VPN сервера шел с адреса 1.1.1.2, если клиент подсоединился к IP 1.1.1.3, то чтобы исходящий траффик шел с адреса 1.1.1.3.

2 инстанса сервера и скрипты через --client-connect добавляющие нужные правила для NAT-а в iptables

Или, как вариант попроще(т.к. процессов openvpn у нас два) - разные пулы ip-адресов для клиентов, а уже к ним привязать правила для NAT

Pinkbyte ★★★★★
()

Все это можно сделать с помощью shorewall. см multi-isp.

Давным давно с этим мучался и тогда выяснилось, что все гораздо проще. В конфиге openvpn есть опция мультихоум. Вписываешь ее и он прекрасно работает с любыми обращениями на любой свой адрес.

multihome

AVL2 ★★★★★
()
Ответ на: комментарий от Nastishka

Спасибо за наводку. Попробовал так (10.8.0.4 - это IP который получает впн-клиент, 1.1.1.2 - IP с которого надо чтобы было исходящее соединение):

echo 100  table1 >> /etc/iproute2/rt_tables
ip rule add from 10.8.0.4 table table1
ip route add default via 1.1.1.2 table table1

Не работает.

Пробовал и tun, и tap, tcp, udp - результат отрицательный :(

razkolbaz
() автор топика
Ответ на: комментарий от AVL2

multihome в конфиге есть, он помог для того, чтобы udp работал на разных IP. но исходящий траффик с впн-сервера все-равно с одного и того же (дефолтного) IP.

razkolbaz
() автор топика
Ответ на: комментарий от Pinkbyte

Два разных инстанса, у которых в listen прописаны разные IP? Разные пулы IP адресов для клиентов - понятно. Скажем, 10.8.1.0/24, 10.8.2.0/24. Дальше как правильно прописать правила для NAT?

razkolbaz
() автор топика
Ответ на: комментарий от razkolbaz
iptables -t nat -A POSTROUTING -s 10.8.1.0/24 -o enp2s0 -j SNAT --to-source 1.1.1.2
iptables -t nat -A POSTROUTING -s 10.8.2.0/24 -o enp2s0 -j SNAT --to-source 1.1.1.3

Другие правила из POSTROUTING с SNAT или MASQUERADE - убрать

Pinkbyte ★★★★★
()
Ответ на: комментарий от Pinkbyte

Спасибо большое! Заработало. Правда, я использую firewall-cmd, поэтому получилось так:

firewall-cmd --remove-masquerade
firewall-cmd --direct --add-rule ipv4 nat POSTROUTING 0 -s 10.8.0.6 -o enp2s0 -j SNAT --to-source 1.1.1.2
firewall-cmd --direct --add-rule ipv4 nat POSTROUTING 0 -s 10.8.0.7 -o enp2s0 -j SNAT --to-source 1.1.1.3

Затем в /etc/openvpn/server.conf прописал client-config-dir dir/ и в каталоге /etc/openvpn/dir/ создал конфиги для двух пользователей client1 и client2 с таким содержимым:

ifconfig-push 10.8.0.6 # for client2: 10.8.0.7

Теперь каждый пользователь, подключаясь к впн, получает свой внешний IP (1.1.1.2 или 1.1.1.3 соответственно).

razkolbaz
() автор топика
Ответ на: комментарий от AVL2

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

razkolbaz
() автор топика
Ответ на: комментарий от razkolbaz

А, ну это просто snat правила. shorewall удобно для этого использовать.

AVL2 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.