Как настроить интерфейс ввода является интерфейсом вывода

0

У меня есть eth0 с IP X.X.X.X и eth0: 0 с IP Y.Y.Y.Y.

Моя цель - если я подключусь к eth0, тогда выходной ip должен быть X.X.X.X, а если я подключусь к eth0: 0, выходной ip должен быть Y.Y.Y.Y.

Пример:

VPN-клиент подключается к eth0 (IP X.X.X.X) - & gt; IP X.X.X.X

VPN-клиент подключается к eth0: 0 (Y.Y.Y.Y) - & gt; ИП Ю.Ю.Ю.

VPN-клиент подключается к eth0: 1 (ZX.ZX.ZX.ZX) - & gt; IP ZX.ZX.ZX.ZX

VPN-клиент подключается к eth0: 2 (ZY.ZY.ZY.ZY) - & gt; ИП ЗЫ.ЗЫ.ЗЫ.ЗЫ

VPN-клиент подключается к eth0: 3 (ZA.ZA.ZA.ZA) - & gt; ИП ЗА.ЗА.ЗА.ЗА

Прямо сейчас всегда X.X.X.X

Я попробовал iptables, но это не работает ..

iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

ip_forward равен 1

ТАКЖЕ пробовал ip route

Я думаю, что правильный путь - это установить маршрут?

George
источник
Вы можете перефразировать это более четко? Это не имеет большого смысла в данный момент. Вы имеете в виду, что пытаетесь пропинговать один интерфейс от другого?
Sirex
лучше. я думаю, что путаница в том, что я должен увидеть, - это довольно расплывчато. Видишь где? Как IP-адрес предоставляется клиенту? Это не имеет смысла, поскольку у вас не может быть клиента с тем же IP-адресом, что и у сервера vpn.
Sirex
Оооо понятно, ты прав! Я изменил это. Цель состоит в том, чтобы, если я позвонил на веб-сайт A, он дал мне правильный выходной IP.
George

Ответы:

0

Вам нужен маскарадинг (NAT) для клиентов VPN. Что-то вроде:

iptables -A POSTROUTING -s (subnet of vpn clients) -j MASQUERADE

если ваш сервер vpn назначает клиентов, например, на 192.168.1.0/24, укажите это в качестве аргумента -s.

Sirex
источник
& gt; iptables -t nat -A POSTROUTING -s -j MASQUERADE Неверный аргумент `MASQUERADE '
George
извините, суперпользователь съел мои угловые скобки.
Sirex
Я хотел бы, чтобы это работало, но я все еще вижу IP от eth0. С 'iptables -t nat -A POSTROUTING -s 1.2.3.4 -j MASQUERADE' ip 1.2.3.4 запутывается
George
даже сделал: ip route add 1.2.3.4 через 1.2.3.4 dev eth1
George
я не думаю, что понимаю ваши настройки достаточно, чтобы дать вам точные команды. Но при условии, что вы маршрутизируете трафик от клиента по каналу vpn (который вы можете или не можете использовать в настоящее время, в зависимости от таблицы маршрутизации клиента), и у вас есть маскарад, он будет работать.
Sirex
0

Это связано с маршрутом по умолчанию, а не с iptables. Если вы хотите переключить шлюз по умолчанию, выполните следующие команды:

ip -4 route del default
ip -4 route add default via <gateway ip> dev <interface>

IP-адрес шлюза - это шлюз или маршрутизатор для подсети этого интерфейса. Таким образом, если eth1 находится на Y.Y.Y.Y и маска сети равна 255.255.255.0, шлюз должен находиться в той же подсети (например, что-то на Y.Y.Y. *). Вы можете иметь только один шлюз по умолчанию за раз, если вы не используете специализированную настройку.

hololeap
источник
Спасибо! Это имеет смысл, но что если у меня 10 ips? eth1, eth2 и т. д.?
George
На самом деле у меня есть eth0, eth0: 0, eth0: 1 и т. Д. 'Ip -4 route add default через XX.XX.XX.XX dev eth0: 0' всегда по умолчанию eth0
George
Даже если у вас есть 10 интерфейсов с 10 разными IP-адресами, ответ тот же: вы все равно сможете использовать только один шлюз по умолчанию через один интерфейс одновременно. Насколько я знаю, использование виртуального интерфейса (eth0: 0, eth0: 1 и т. Д.) Прекрасно работает с ip команда, но, возможно, он рассматривает eth0: 0 как эквивалентный eth0. Я не совсем уверен.
hololeap
0

Решение:

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to BB.BB.BB.BB

BB.BB.BB.BB = исходный IP

Это оно!

George
источник