@Konkase

Как настроить policy routing с подменой src ip и dst interface?

Добрый день!

Ситуация такая:
2 провайдера, требуется настроить маршрутизацию таким образом, чтобы output icmp шли через второго, а всё остальное через первого.

Добавил route table, route list. Iptables подменяет src
настроечки:
[root@serv ~]# ip ru list
0:	from all lookup local 
32757:	from all fwmark 0x1 lookup gw2 
32758:	from 192.168.110.135 lookup gw2 
32759:	from 192.168.21.6 lookup gw1

[root@serv ~]# ip ro sh ta gw1
default via 192.168.21.1 dev eth0 
[root@serv ~]# ip ro sh ta gw2
default via 192.168.110.1 dev eth1

iptables -A POSTROUTING -p icmp -j SNAT --to-source 192.168.110.1 -t nat
iptables -A OUTPUT -p icmp -j MARK --set-xmark 0x1/0xffffffff

icmp трафик идёт через шлюз первого провайдера, но с сорцом второго. если запустить ping -I eth1 (порт второго провайдера), то пинги вообще не уходят, пока явно не пропишу маршрут через gw второго прова. Как быть?
  • Вопрос задан
  • 486 просмотров
Решения вопроса 1
@Konkase Автор вопроса
FORWARD пакеты у меня нормально метятся и отправляются куда нужно. проблема была именно с OUTPUT с сервера. решена так:

iptables -A OUTPUT -t mangle -p icmp -j MARK --set-mark 100
iptables -A POSTROUTING -t nat -p icmp -j SNAT --to-source 192.168.110.135

from all fwmark 0x64 lookup gw-a 
from 192.168.210.6 lookup gw-d
from 192.168.110.135 lookup gw-a

# ip ro
default via 192.168.210.1 dev eth0 
192.168.210.0/24 dev eth0  scope link  src 192.168.210.6 
192.168.110.128/26 dev eth1  scope link  src 192.168.110.135

# ip ro sh table gw-a
default via 192.168.110.129 dev eth1 
192.168.110.128/26 dev eth1  scope link  src 192.168.110.135 

# ip ro sh table gw-d
default via 192.168.210.1 dev eth0 
192.168.210.0/24 dev eth0  scope link  src 192.168.210.6
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@MechanID
Админ хостинг провайдера
возможно вы cможете приспособить мои конфиги для своих задач
у меня шлюз - делит траф на двух провайдеров,
интерфейсы:
enp2s0 локальная сеть
enp2s1 пров1
enp2s3 пров2

некоторые клиенты ходят только через 1го провайдера (ктото через пров1 а ктото через пров2) остальные через обоих сразу
все команды ниже из iptables-save таблица mangle:
Ловим весь новые соединения и вешаем метки
-A PREROUTING -i enp2s0 -m state --state NEW -j MULTIWAN_MARK
Ловим трафик имеющий отношение к уже остановленным соединениям и цепляем маркировку на пакеты
-A PREROUTING -i enp2s0 -m state --state RELATED,ESTABLISHED -j MULTIWAN_RESTORE
-A MULTIWAN_RESTORE -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff

на внешних интерфейсах метки 0x8000 и 0x8001
-A FORWARD -i enp2s1 -j CONNMARK --set-xmark 0x8000/0xffffffff
-A FORWARD -i enp2s3 -j CONNMARK --set-xmark 0x8001/0xffffffff
-A POSTROUTING -o enp2s1 -j CONNMARK --set-xmark 0x8000/0xffffffff
-A POSTROUTING -o enp2s3 -j CONNMARK --set-xmark 0x8001/0xffffffff

тут некоторым клиентам надо ходить только через 1н внешний интерфейс указываем кому какой внешний
-A MULTIWAN_MARK -s 10.10.0.3/32 -j MULTIWAN_enp2s3
-A MULTIWAN_MARK -s 10.10.0.200/32 -j MULTIWAN_enp2s1
-A MULTIWAN_MARK -s 10.10.0.4/32 -j MULTIWAN_enp2s1
-A MULTIWAN_MARK -s 10.10.0.5/32 -j MULTIWAN_enp2s1
-A MULTIWAN_MARK -s 10.10.0.2/32 -j MULTIWAN_enp2s3

марировка ипов из списка выше
-A MULTIWAN_enp2s1 -j MARK --set-xmark 0x8000/0xffffffff
-A MULTIWAN_enp2s3 -j MARK --set-xmark 0x8001/0xffffffff

и трафик раскидывается на двух провейдров 1н 1ному
default proto static
nexthop via 192.168.10.254 dev enp2s1 weight 1
nexthop via 172.16.0.1 dev enp2s3 weight 1
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы