LINUX.ORG.RU

Сообщения lunix

 

Разный внешний IP в зависимости на какой внутренний IP шлюза пришел запрос - маршрутизация

Форум — Admin

Задачка для тех кто на самом деле разбирается в маршрутизации!

Имеем один физический интерфейс eth0:

DEVICE="eth0"
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
NM_CONTROLLED=no
BRIDGE=virbr0

На виртуальном интерфейсе virbr0, настроено несколько внешних IP:

DEVICE="virbr0"
TYPE="Bridge"
BOOTPROTO="static"

IPADDR0=XXX.1.1.2
PREFIX0=24
GATEWAY=XXX.1.1.1

IPADDR1=YYY.1.1.2
PREFIX1=24
GATEWAY1=YYY.1.1.1

IPADDR2=ZZZ.1.1.2
PREFIX2=24
GATEWAY2=YYY.1.1.1

Все корректно работает, можно менять маршрут по умолчанию на любой из: GATEWAY, GATEWAY1 или GATEWAY2

Поднимаю OpenVPN и поднимаю tap интерфейсы:

/sbin/ifconfig tap0 inet 10.9.0.1 netmask 255.255.255.0
/sbin/ifconfig tap0:0 inet 10.9.0.2 netmask 255.255.255.0
/sbin/ifconfig tap0:1 inet 10.9.0.3 netmask 255.255.255.0

Подключается клиент и получает IP: 10.9.0.10

Теперь самое главное, я хочу чтобы в зависимости какой у клиента установлен основной шлюз, выполнялись РАЗНЫЕ правила SNAT, а именно исходящий IP.

Сейчас стоит такое правило:

iptables -t nat -A POSTROUTING -s 10.9.0.10/32 -o virbr0 -j SNAT --to-source XXX.1.1.2

Меняя --to-source на одно из 3-х: XXX.1.1.2, YYY.1.1.2, ZZZ.1.1.2 корректно меняется через какой внешний IP натится клиент.

Я хочу так переделать правило, чтобы оно отрабатывало не по IP локального клиента -s 10.9.0.10/32, а по IP шлюза на который пришел запрос на маршрутизацию, т.е.

  • пришел запрос на IP шлюза 10.9.0.1 отработал NAT --to-source XXX.1.1.2
  • пришел запрос на IP шлюза 10.9.0.2 отработал NAT --to-source YYY.1.1.2
  • пришел запрос на IP шлюза 10.9.0.3 отработал NAT --to-source ZZZ.1.1.2

Я пытался маркировать пакеты, но не получается, не до конца понимаю цепочку прохождения пакетов на маршрутизаторе..

Подскажите пожалуйста как настроить?

OS Centos 7

 , , ,

lunix
()

RSS подписка на новые темы