Привет всем !
Есть роутер под Ubuntu 9.04 Desktop
В роутере торчит 3 сетевых карты:
eth0 (IP 10.13.80.111/255.255.248.0 ) смотрит на провайдера №1 с гейтом с IP 10.13.87.254 (провайдер№1)
eth1 (IP 192.168.1.2/255.255.255.0 ) смотрит на ADSL модем , который является гейтом №2 с IP 192.168.1.1 (провайдер №2)
eth2 (IP 10.235.153.227/255.255.255.0) смотрит в локальную сеть
задача - пустить трафик на порты 80, 443,110,25,5190 через провайдера №2 а все остальное пустить через провайдера №1
1) создал 2 таблицы в файле /etc/iproute2/rt_tables
207 A1
208 T1
2) написал скрипт :
#! /bin/sh
# Обнуляем таблицы
ip route flush table A1
ip route flush table T1
#===================================================
# Таблица маршрутов для провайдера №1
ip route add 10.13.80.0/21 dev eth0 src 10.13.80.111 table T1
ip route add 10.235.153.0/24 dev eth2 src 10.235.153.227 table T1
ip route add 127.0.0.0/8 dev lo table T1
ip route add default via 10.13.87.254 table T1
# Таблица маршрутов для провайдера №2
ip route add 192.168.1.0/24 dev eth1 src 192.168.1.2 table A1
ip route add 10.235.153.0/24 dev eth2 src 10.235.153.227 table A1
ip route add 127.0.0.0/8 dev lo table A1
ip route add default via 192.168.1.1 table A1
#===================================================
#
ip route add 10.13.80.0/21 dev eth0 src 10.13.80.111
ip route add 192.168.1.0/24 dev eth1 src 192.168.1.2
# Default ROUTE
ip route add default via 10.13.87.254
#===========================
ip rule add from 10.13.80.111 table T1
ip rule add from 192.168.1.2 table A1
#================================================
ip rule add fwmark 1 table A1
ip rule add fwmark 2 table T1
#================================================
ip route flush cache
#================================================
iptables -t mangle -A PREROUTING -s 10.235.153.0/24 -p tcp --dport 80 -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -s 10.235.153.0/24 -p tcp --dport 80 -j RETURN
iptables -t mangle -A PREROUTING -s 10.235.153.0/24 -p tcp --dport 110 -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -s 10.235.153.0/24 -p tcp --dport 110 -j RETURN
iptables -t mangle -A PREROUTING -s 10.235.153.0/24 -p tcp --dport 25 -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -s 10.235.153.0/24 -p tcp --dport 25 -j RETURN
iptables -t mangle -A PREROUTING -s 10.235.153.0/24 -p tcp --dport 443 -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -s 10.235.153.0/24 -p tcp --dport 443 -j RETURN
iptables -t mangle -A PREROUTING -s 10.235.153.0/24 -p tcp --dport 5190 -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -s 10.235.153.0/24 -p tcp --dport 5190 -j RETURN
iptables -t mangle -A PREROUTING -s 10.235.153.0/24 -p tcp --dport 443 -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -s 10.235.153.0/24 -p tcp --dport 443 -j RETURN
iptables -t mangle -A PREROUTING -s 10.235.153.0/24 -j MARK --set-mark 2
#================================================
iptables -t nat -A POSTROUTING -s 10.235.153.0/24 -m mark --mark 1 -j SNAT --to-source 192.168.1.2
iptables -t nat -A POSTROUTING -s 10.235.153.0/24 -m mark --mark 2 -j SNAT --to-source 10.13.80.111
Проблема в том, что то что идет с локальной сети в интернет через роутер на порты 80, 443,110,25,5190 запросы уходят через второго провайдера, но не возвращаются
Через первого провайдера остальной трафик бегает. В чем может быть бок ?
Пользовался руководством
http://www.opennet.ru/base/net/debian_multilink.txt.html
Пользователь решил продолжить мысль 22 Июня 2009, 03:12:15:
Интересная штука наблюдается, если сделать то же самое но с одной таблицей :
например
1) оставим таблицу T1
2) все что касается таблицы А1 закоментим
3) ip route add default via 192.168.1.1
4) добавим маршруты в сеть первого провайдера ip route add 10.0.0.0/255.0.0.0 dev eth0 src 10.13.80.111
5) заменим SNATы на
iptables -t nat -A POSTROUTING -s 10.235.153.0/24 -m mark --mark 2 -j SNAT --to-source 10.13.80.111
iptables -t nat -A POSTROUTING -s 10.235.153.0/24 -j SNAT --to-source 192.168.1.2
6) маркировку поставим только для направления на подсеть провайдера 1
iptables -I PREROUTING -t mangle -s 10.235.153.0/24 -i eth2 -d 10.0.0.0/255.0.0.0 -j MARK --set-mark 2
в таком виде работает - если я с компьютера в локальной сети обращаюсь в сеть 10.0.0.0/255.0.0.0 то пакеты нормально бегут не через дефолт гейт а через гейт на 1 провайдера.
Вопрос - разве нельзя в UBUNTU Desktop рулить не по направлениям а по портам ? Кто-нить пробовал такое сделать ?