Предположим, у меня есть несколько сетевых интерфейсов, и я хочу выборочно использовать их для каждого приложения. eth0 - это стандартный интерфейс со стандартным шлюзом в основной таблице маршрутизации. eth1 - это еще один интерфейс с другим шлюзом.
Предположим, я запускаю приложение как пользователь user_eth1.
Я использовал следующий набор правил для правил iptables / ip.
IPTABLES:
iptables -t mangle -A OUTPUT -m user --uid-owner user_eth1 -j MARK --set-mark 100
iptables -t nat -A POSTROUTING -m user -uid-owner -o eth1 user_eth1 -j SNAT --to-source <eth_ipaddress>
IPRULE:
ip rule add fwmark 100 lookup table100
и я создаю "table100" следующим образом (без сомнения)
ip route show table main | grep -Ev ^default | while read ROUTE; do ip route add table table100 $ROUTE; done
ip route add default via <default_gateway> table table100
Это вообще не работает. Что в этом плохого?
Заранее спасибо!
Что в этом плохого?
Что ж, в любом случае, установка вполне законная. Ты можешь использовать tcpdump
чтобы отладить это.