У меня есть eth0 с IP XXXX и eth0:0 с IP YYYY

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

Пример:

VPN-клиент подключается к eth0(IP XXXX) -> IP XXXX

VPN-клиент подключается к eth0:0(ГГГГ) -> IP ГГГГ

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

VPN-клиент подключается к eth0:2(ZY.ZY.ZY.ZY) -> IP ZY.ZY.ZY.ZY

VPN-клиент подключается к eth0:3(ZA.ZA.ZA.ZA) -> IP ZA.ZA.ZA.ZA

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

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

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

ip_forward равен 1

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

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

3 ответа3

0

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

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

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

0

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

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

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

0

Решение:

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

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

Это оно!

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