LINUX.ORG.RU
ФорумAdmin

Как пустить трафик OpenVPN серез виртуальный порт?

 


0

1

Привет всем.

Не могу разобраться где загвоздка. Есть OpenVPN на Ubuntu Server он служит как шлюзом для выхода в интернет. Потребовалось сменить ip адрес. С основным ip адресом не чего делать нельзя, хостинг выделил дополнительный адрес. Я сделал так

Содержимое /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
	address x.x.2.211
	netmask 255.255.255.192
	network x.x.2.192
	broadcast x.x.2.255
	gateway x.x.2.254
	# dns-* options are implemented by the resolvconf package, if installed
	dns-nameservers 8.8.8.8 8.8.8.8
	dns-search localdomain

auto eth0:1
iface eth0:1 inet static
	address x.x.5.42
	netmask 255.255.255.224
	gateway x.x.5.62
	dns-nameservers 8.8.8.8 8.8.8.8

То есть я сделал виртуальный интерфейс eth0:1 и дал ему адрес что выдал мне хостинг x.x.5.42 . Перегружаю сервер и вижу что адрес x.x.5.42 пингуется и я могу по нему через ssh зайти на сервер.

Теперь мне нужно что бы люди с OpenVPN перенаправлялись в интернет по новому интерфейсу

iptables -t nat -A POSTROUTING -s 10.8.102.0/24 -o eth0:1 -j MASQUERADE
И люди по новому интерфейсу не могут выйти в интернет. Хотя если я сделаю так

iptables -t nat -A POSTROUTING -s 10.8.102.0/24 -o eth0 -j MASQUERADE

То по старому интерфейсу люди свободно могут лазить в интернет.

Подскажите где я допустил ошибку?

Нужно вторую таблицу маршрутизации, если шлюзы есть и работают для обоих ip-адресов:

echo 201 second >> /etc/iproute2/rt_tables
ip route add 10.8.102.0/24 dev tun0 table second
ip route add x.x.5.32/27 dev eth0 table second
ip route add default via x.x.5.62 table second
ip rule add from 10.8.102.0/24 lookup second
iptables -t nat -A POSTROUTING -s 10.8.102.0/24 -o eth0 -j SNAT --to x.x.5.42
Из /etc/network/interfaces надо убрать шлюз у второго интерфейса, шлюз должен быть только один. iptables не принимает алиас, ему нужно писать физический интерфейс. Судя по исходным данным, этого должно быть достаточно.

Вообще, для понимания темы стоит прочесть LARTC, про policy routung.

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

Ух сколько написали. Может хватит того, что я у eth0 уберу шлюз и оставлю шлюз только у eth0:1 а потом попробую

iptables -t nat -A POSTROUTING -s 10.8.102.0/24 -o eth0:1 -j MASQUERADE
Должно этого хватить или чего то не хватает?

Andrei_IW ()
Ответ на: комментарий от anonymous

Даже так :) Хотя у меня в голове не вяжется как ip адрес от eth0:1 попадёт на интерфейс eth0 у которого свой IP, хотя и без шлюза.

Однако попробовать стоит. Как сделаю отпишусь.

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

Не получилось, почему то Интернет идёт через интерфейс eth0, через eth0:1 не как не хочет. Вот мой конфиг

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
	address x.x.8.149
	netmask 255.255.255.192
	network x.x.8.128
	broadcast x.x.8.191
	# gateway x.x.8.190
	# dns-* options are implemented by the resolvconf package, if installed
	dns-nameservers 8.8.8.8 8.8.4.4
	dns-search localdomain

auto eth0:1
iface eth0:1 inet static
	address x.x.8.146
	netmask 255.255.255.192
	gateway x.x.8.190
	dns-nameservers 8.8.8.8 8.8.4.4

Если сделать так

iptables -t nat -A POSTROUTING -s 10.8.102.0/24 -o eth0:1 -j MASQUERADE
Интернет вообще не куда не идёт. Просто нет вообще конекта с интернетом.
iptables -t nat -A POSTROUTING -s 10.8.102.0/24 -o eth0 -j MASQUERADE
А так идёт интернет через постоянный ip адрес eth0, а через новый ip адрес eth0:1 не хочет идти.

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

Тогда вот так:

iptables -t nat -A POSTROUTING -s 10.8.102.0/24 -o eth0 -j SNAT --to x.x.8.146
Если адреса на интерфейсе из одной подсети, то шлюз можно указывать где угодно, но он должен быть только один. Также нет нужды в дополнительной таблице маршрутизации.

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

Ай да спасибо, ай да большого вам здоровья :) Всё заработало!!!!

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