У меня два сетевых адаптера и два IP-адреса. Как мне настроить маршрутизацию таким образом, чтобы все отправлялось через первый IP-адрес, за исключением трафика данного (локального) пользователя, чей трафик отправляется через второй IP-адрес?
Я знаю, что есть несколько HOWTO, но за последние 3 дня мне не удалось их использовать.
Мне понравилось это http://www.debian-administration.org/article/379/Policy_routing статья лучшая, единственная разница в моей ситуации в том, что я не занимаюсь PPP подключениями, у меня два интерфейса Ethernet.
После настройки всего (?) Трафик веб-просмотра данного локального пользователя можно увидеть в wirehark, SYN ACK возвращается к правильному IP-адресу и интерфейсу, но браузер не отвечает.
Пожалуйста помоги.
---ПОЛНАЯ ИСТОРИЯ---
При использовании новой установки Ubuntu 10.10 для тестирования есть два подключения:
eth0: ip=192.168.168.236 gw=192.168.168.1
wlan0: ip=192.168.2.12 gw=192.168.2.1
nameserver is 192.168.168.1
Брандмауэр вначале пуст (т.е. без правил), все политики ПРИНЯТ.
root@kipkopp:~# ip rule list
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
root@kipkopp:~# ip route show
192.168.2.0/24 dev wlan0 proto kernel scope link src 192.168.2.12 metric 2
192.168.168.0/24 dev eth0 proto kernel scope link src 192.168.168.236 metric 1
169.254.0.0/16 dev eth0 scope link metric 1000
default via 192.168.168.1 dev eth0 proto static
root@kipkopp:~# cat /etc/iproute2/rt_tables
#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
100 copyofmain
101 new
(При сборке таблицы copyofmain новая таблица пуста)
root@kipkopp:~# ip route show table copyofmain
192.168.2.0/24 dev wlan0 proto kernel scope link src 192.168.2.12 metric 2
192.168.168.0/24 dev eth0 proto kernel scope link src 192.168.168.236 metric 1
169.254.0.0/16 dev eth0 scope link metric 1000
default via 192.168.168.1 dev eth0 proto static
root@kipkopp:~# iptables -t mangle -A OUTPUT -m owner --uid-owner 1001 -j MARK --set-mark 1
root@kipkopp:~# ip rule add fwmark 1 pri 100 table copyofmain
root@kipkopp:~# ip rule add from 192.168.168.236 pri 200 table copyofmain
root@kipkopp:~# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source=192.168.168.236
Попытка перейти на веб-сайты с uid = 1001 все в порядке.
(Создание «нового» стола)
root@kipkopp:~# ip route show table new
192.168.2.0/24 dev wlan0 proto kernel scope link src 192.168.2.12 metric 1
192.168.168.0/24 dev eth0 proto kernel scope link src 192.168.168.236 metric 2
169.254.0.0/16 dev wlan0 scope link metric 1000
default via 192.168.2.1 dev wlan0 proto static
root@kipkopp:~# ip rule add from 192.168.2.1 pri 200 table new
root@kipkopp:~# iptables -t nat -A POSTROUTING -o wlan0 -j SNAT --to-source=192.168.2.12
root@kipkopp:~# ip rule show
0: from all lookup local
100: from all fwmark 0x1 lookup copyofmain
200: from 192.168.168.236 lookup copyofmain
200: from 192.168.2.12 lookup new
32766: from all lookup main
32767: from all lookup default
Uid 1001 по-прежнему использует таблицу copyofmain и может путешествовать по сети.
root@kipkopp:~# ip rule delete from all fwmark 0x1 lookup copyofmain
root@kipkopp:~# ip rule add fwmark 1 pri 100 table new
root@kipkopp:~# ip rule list
0: from all lookup local
100: from all fwmark 0x1 lookup new
200: from 192.168.168.236 lookup copyofmain
200: from 192.168.2.12 lookup new
32766: from all lookup main
32767: from all lookup default
Uid 1001 больше не может просматривать.
root@kipkopp:~# echo 0 > /proc/sys/net/ipv4/conf/eth0/rp_filter
root@kipkopp:~# echo 0 > /proc/sys/net/ipv4/conf/wlan0/rp_filter
root@kipkopp:~# ip route flush cache
Без улучшения.
Я меняю маршрут по умолчанию в основной (!) Таблице:
root@kipkopp:~# ip route delete default via 192.168.168.1 dev eth0 proto static
root@kipkopp:~# ip route add default via 192.168.2.1 dev wlan0 proto static
Uid 1001, как и другие пользователи, с удовольствием просматривает страницы.