Назад | Перейти на главную страницу

PBR с iptables

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

Итак, вот что у меня есть:

По отдельности это легко реализовать, но вместе ... С настройкой это в основном работает: пользователь 1002 переходит через eth1 и никуда не уходит, если он недоступен. Однако некоторые хосты по-прежнему маршрутизируются через eth0. Понятия не имею почему.

Вот моя установка:

пользователь @ localhost: правило ~ $ ip

0:  from all lookup local
1000:   from all fwmark 0x5 lookup 5
2000:   from all fwmark 0x5 lookup 6
32766:  from all lookup main
32767:  from all lookup default`


user@localhost:~$ ip route list table 5
0.0.0.0/1 via 10.10.0.185 dev eth1


user@localhost:~$ ip route list table 6

blackhole 0.0.0.0/1


user@localhost:~$sudo iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT


user@localhost:~$ sudo iptables -t nat -S
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-A POSTROUTING -o eth1 -j MASQUERADE


user@localhost:~$ sudo iptables -t mangle -S
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-A OUTPUT -m owner --uid-owner 1002 -j MARK --set-xmark 0x5/0xffffffff

Вы указали маршрут 0.0.0.0/1. это подсеть состоит из 0.0.0.0 по 127.255.255.255 включительно. Совершенно непонятно, почему вы хотите использовать только маршрут половина возможных IP-адресов. Я подозреваю, что вы хотели все это маршрутизировать (например, 0.0.0.0/0) вместо этого.