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

Выбор сетевого интерфейса

Предположим, у меня есть несколько сетевых интерфейсов, и я хочу выборочно использовать их для каждого приложения. 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

Это вообще не работает. Что в этом плохого?

Заранее спасибо!

Что в этом плохого?

  1. Вы уверены, что насчет «-m user»? Может быть «-м хозяин»?
  2. «-T nat -A POSTROUTING -m user -uid-owner» лучше делать с «-m mark --mark» - вы уже поставили отметку, помните?

Что ж, в любом случае, установка вполне законная. Ты можешь использовать tcpdump чтобы отладить это.