LINUX.ORG.RU
ФорумAdmin

2 провайдера маршрутизация ip route хелп


0

1
есть провайдер 1 и 2, есть в локальной сети компьютер на котором есть веб, нужно что бы с какого провайдера поступил пакет, через того же и отдавал трафик
сделал:
внешний IP первого провайдера: INET_IP
внешний IP второго провайдера: INET_IP2
пров 1 интерфейс=INET_IF
пров 2 интерфейс=INET_IF2
пров 1 шлюз=INET_GATE
пров 2 шлюз=INET_GATE2
ну и интерфейс локалки соответственно=LAN_IF
ip rule del table T1
ip rule del table T2
ip route add $INET_GATE dev $INET_IF src $INET_IP table T1
ip route add default via $INET_GATE table T1
ip route add $INET_GATE2 dev $INET_IF2 src $INET_IP2 table T2
ip route add default via $INET_GATE2 table T2
ip route add $INET_GATE dev $INET_IF src $INET_IP
ip route add $INET_GATE2 dev $INET_IF2 src $INET_IP2
ip route add default via $INET_GATE metric 10
таким образом схема работает на половину, все что на сервере отдается правильно, а из локалки отдается в маршрут по умолчанию, где-то посоветовали маркировать пакеты, все тщетно :(

делал так:
iptables -N CONNMA
iptables -A CONNMA -i $INET_IF -j CONNMARK --set-mark 1
iptables -A CONNMA -i $INET_IF2 -j CONNMARK --set-mark 2
iptables -A CONNMA -j RETURN

#iptables -t mangle -A PREROUTING -i $LAN_IF -j CONNMARK --restore-mark
#iptables -t mangle -A FORWARD -i $INET_IF -j CONNMA
#iptables -t mangle -A FORWARD -i $INET_IF2 -j CONNMA

не получилось, подскажите как сделать и ли где ошибку делаю :(


Последнее исправление: coolmans2010 (всего исправлений: 1)

очень пожалуйста спасибо форматирование много благодарностей конечно поможем используй тег

spunky ★★
()
Ответ на: комментарий от spunky

[code]
ага, только вот сейчас они чето не работают
короче делал еще так:
iptables -t mangle -A INPUT -i $INET_IF -j CONNMARK --set-mark 1
iptables -t mangle -A INPUT -i $INET_IF2 -j CONNMARK --set-mark 2
iptables -t mangle -A OUTPUT -j CONNMARK --restore-mark
iptables -t mangle -A FORWARD -i $INET_IF -m conntrack --ctstate DNAT -j CONNMARK --set-mark 1
iptables -t mangle -A FORWARD -i $INET_IF2 -m conntrack --ctstate DNAT -j CONNMARK --set-mark 2
iptables -t mangle -A FORWARD -j CONNMARK --restore-mark

iptables -A PREROUTING -t nat -i $INET_IF2 -d $INET_IP2 -p tcp -m multiport --dports 80 -j CONNMARK --set-mark 2
iptables -A PREROUTING -t mangle -i $LAN_IF -p tcp --src 192.168.0.2 -m multiport --sports 80 -j CONNMARK --restore-mark
тоже самое (((
[/code]

coolmans2010
() автор топика
Ответ на: комментарий от spunky

[code] 0: from all lookup local 32687: from all fwmark 0x1 lookup T1 32688: from all fwmark 0x2 lookup T2 32689: from Ip 2 prov lookup T2 32690: from Ip 1 prov lookup T1 32691: from Ip 2 prov lookup T2 32692: from Ip 1 prov lookup T1 32693: from Ip 2 prov lookup T2 32694: from Ip 1 prov lookup T1 32695: from all fwmark 0x2 lookup T2 32696: from all fwmark 0x2 lookup T2 32697: from all fwmark 0x2 lookup T2 32698: from all fwmark 0x65 lookup T2 32699: from all fwmark 0x2 lookup T2 32700: from Ip 2 prov lookup T2 32702: from Ip 2 prov lookup T2 32704: from Ip 2 prov lookup T2 32706: from Ip 2 prov lookup T2 32708: from Ip 2 prov lookup T2 32710: from Ip 2 prov lookup T2 32712: from Ip 2 prov lookup T2 32714: from Ip 2 prov lookup T2 32716: from Ip 2 prov lookup T2 32718: from Ip 2 prov lookup T2 32720: from Ip 2 prov lookup T2 32722: from Ip 2 prov lookup T2 32724: from Ip 2 prov lookup T2 32726: from Ip 2 prov lookup T2 32728: from Ip 2 prov lookup T2 32730: from Ip 2 prov lookup T2 32732: from Ip 2 prov lookup T2 32734: from Ip 2 prov lookup T2 32736: from Ip 2 prov lookup T2 32738: from Ip 2 prov lookup T2 32740: from Ip 2 prov lookup T2 32742: from Ip 2 prov lookup T2 32744: from Ip 2 prov lookup T2 32746: from Ip 2 prov lookup T2 32748: from Ip 2 prov lookup T2 32750: from Ip 2 prov lookup T2 32752: from Ip 2 prov lookup T2 32754: from Ip 2 prov lookup T2 32756: from all fwmark 0x14 lookup T2 32759: from Ip 2 prov lookup T2 32761: from all fwmark 0x14 lookup T2 32764: from Ip 2 prov lookup T2 32766: from all lookup main 32767: from all lookup default [\code][/code] Да че у вас с форумом?

coolmans2010
() автор топика
Ответ на: комментарий от coolmans2010

я, к сожалению, не крутил connmark, но насколько мне помнится и видится в мане, таргет CONNMARK позволяет поставить на пакет метку, благодаря которой данный пакет можно в других очередях определить с помощью параметра --mark, которого у тебя в наличии не имеется.

spunky ★★
()
Ответ на: комментарий от spunky
 0: from all lookup local
32687: from all fwmark 0x1 lookup T1
32688: from all fwmark 0x2 lookup T2
32689: from Ip 2 prov lookup T2
32690: from Ip 1 prov lookup T1
32691: from Ip 2 prov lookup T2
32692: from Ip 1 prov lookup T1
32693: from Ip 2 prov lookup T2
32694: from Ip 1 prov lookup T1
32695: from all fwmark 0x2 lookup T2
32696: from all fwmark 0x2 lookup T2
32697: from all fwmark 0x2 lookup T2
32698: from all fwmark 0x65 lookup T2
32699: from all fwmark 0x2 lookup T2
32700: from Ip 2 prov lookup T2
32702: from Ip 2 prov lookup T2
32704: from Ip 2 prov lookup T2
32706: from Ip 2 prov lookup T2
32708: from Ip 2 prov lookup T2
32710: from Ip 2 prov lookup T2
32712: from Ip 2 prov lookup T2
32714: from Ip 2 prov lookup T2
32716: from Ip 2 prov lookup T2
32718: from Ip 2 prov lookup T2
32720: from Ip 2 prov lookup T2
32722: from Ip 2 prov lookup T2
32724: from Ip 2 prov lookup T2
32726: from Ip 2 prov lookup T2
32728: from Ip 2 prov lookup T2
32730: from Ip 2 prov lookup T2
32732: from Ip 2 prov lookup T2
32734: from Ip 2 prov lookup T2
32736: from Ip 2 prov lookup T2
32738: from Ip 2 prov lookup T2
32740: from Ip 2 prov lookup T2
32742: from Ip 2 prov lookup T2
32744: from Ip 2 prov lookup T2
32746: from Ip 2 prov lookup T2
32748: from Ip 2 prov lookup T2
32750: from Ip 2 prov lookup T2
32752: from Ip 2 prov lookup T2
32754: from Ip 2 prov lookup T2
32756: from all fwmark 0x14 lookup T2
32759: from Ip 2 prov lookup T2
32761: from all fwmark 0x14 lookup T2
32764: from Ip 2 prov lookup T2
32766: from all lookup main
32767: from all lookup default

Нормально всё, не паникуй.

spunky ★★
()
Ответ на: комментарий от spunky

да я не паникую, просто не первый день голову ломаю, без маршрутизации с одним провайдером, мапинг(проброс портов в локалку) отлично работает, а вот возникла необходимость второго провайдера и использование его не как резервного и запасного, а как альтернативного, что бы как с первого провайдера так и со второго провайдера можно было в локалку попасть и не только на сервер(что собственно сразу заработало после пару маршрутов без всяких меток).

coolmans2010
() автор топика
Ответ на: комментарий от coolmans2010

мне кажется, что если почистить таблицу правил, оставив там только local, from INET_IP lookup T1, from INET_IP2 lookup T2, main и default, заделать в T1 и T2 соответствующие дефолты, и объяснить, что значит «доступ в локалку». У тебя пробрасывается какой-то порт внутрь?

spunky ★★
()
Ответ на: комментарий от spunky

да я чистил все, но попробую еще, а доступ в локалку я имел введу к серверу который находится за маршрутизатором внутри локальной сети.

coolmans2010
() автор топика
Ответ на: комментарий от coolmans2010

мнээ... т.е. локальная сеть маршрутизируемая? Или там всё-таки внутренние адреса из RFC1918 - из сетей 10.0.0./8, 172.16.0.0/12, 192.168.0.0/16?

spunky ★★
()
Ответ на: комментарий от spunky
192.168.0.0/16
все разрешающие правила есть, я уже голову себе сломал

iptables -A PREROUTING -t nat -d $INET_IP -p tcp -m multiport --dports 80 -j DNAT --to-destination 192.168.0.2
iptables -A PREROUTING -t nat -d $INET_IP2 -p tcp -m multiport --dports 80 -j DNAT --to-destination 192.168.0.2
iptables -t filter -A FORWARD -i $INET_IF2 -o $LAN_IF -d 192.168.0.2 -m conntrack --ctstate NEW -p tcp -m multiport --dports 80  -j ACCEPT
iptables -t filter -A FORWARD -i $LAN_IF -o $INET_IF -m conntrack --ctstate NEW -j ACCEPT
iptables -t filter -A FORWARD -i $LAN_IF -o $INET_IF2 -m conntrack --ctstate NEW -j ACCEPT
iptables -t filter -A FORWARD -p all -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

iptables -t nat -A POSTROUTING -s $LAN_NET -o $INET_IF -j SNAT --to-source $INET_IP
iptables -t nat -A POSTROUTING -s $LAN_NET -o $INET_IF2 -j SNAT --to-source $INET_IP2
coolmans2010
() автор топика

непонятно, зачем городить дополнительную цепочку? не проще ли маркировать трафик прямо в таблице mangle? ( iptables -t mangle -A FORWARD -i $INET_IF -j CONNMARK --set-mark 1 )

nixtrian
()

а еще можно попробовать обратный прокси-сервер использовать.

nixtrian
()

ip rule

Пакеты то вы промаркировали а вот правила для маркированых пакетов видимо не сделали, вам необходимо создать еще одну таблицу маршрутизации в rt_tables, и написать правило ip rule add from all fwmark 0x1 lookup NEW_TABLE

pyatak123
()
Ответ на: ip rule от pyatak123

как? есть же правила;

ip route add $INET_GATE2 dev $INET_IF2 src $INET_IP2 table T2
ip route add default via $INET_GATE2 table T2
ip rule add from $INET_IP2 table T2
ip rule add fwmark 2 table T2


iptables -A PREROUTING -t mangle -i $INET_IF2 -d $INET_IP2 -p tcp -m multiport --dports 80 -j LOG --log-prefix " prein "
iptables -A PREROUTING -t mangle -i $INET_IF2 -d $INET_IP2 -p tcp -m multiport --dports 80 -j CONNMARK --set-mark 2

iptables -A PREROUTING -t nat -d $INET_IP2 -p tcp -m multiport --dports 80 -j LOG --log-prefix " preinaccept "
iptables -A PREROUTING -t nat -d $INET_IP2 -p tcp -m multiport --dports 80 -j DNAT --to-destination 192.168.0.2

#iptables -t mangle -A FORWARD -i $LAN_IF -o $INET_IF2 -j LOG --log-prefix " restorefor "
#iptables -t mangle -A FORWARD -i $LAN_IF -o $INET_IF2 -j CONNMARK --restore-mark

iptables -t filter -A FORWARD -i $INET_IF2 -o $LAN_IF -d 192.168.0.2 -p tcp -m multiport --dports 80 -j LOG --log-prefix " acceptlan"
iptables -t filter -A FORWARD -i $INET_IF2 -o $LAN_IF -d 192.168.0.2 -p tcp -m multiport --dports 80 -j ACCEPT

#iptables -A PREROUTING -t mangle -i $LAN_IF -p tcp --src 192.168.0.2 -m multiport --sports 80 -j LOG --log-prefix " restorepre "
iptables -A PREROUTING -t mangle -i $LAN_IF -p tcp --src 192.168.0.2 -m multiport --sports 80 -j CONNMARK --restore-mark

iptables -t filter -A FORWARD -i $LAN_IF -o $INET_IF2 -j LOG --log-prefix " accepmarktout"
iptables -t filter -A FORWARD -i $LAN_IF -o $INET_IF2 -j ACCEPT

специально залогировал preinaccept  отрабатывает а acceptlan нет, думаю где в маршрутах чтоли, до этого настраивал PPPOE потом удалил а он до сих пор при поднятии интерфейса какие-то свои левые подсети добавляет в маршрут:( хз где их искать и удалять вот у меня сейчас так:

default via ипшлюз dev eth2  metric 100
default via 192.168.0.1 dev eth2  metric 203
подсетьпров2 dev eth4  proto kernel  scope link  src пвнешнегоинтерфейса 2
подсетьпров21 dev eth2  proto kernel  scope link  src ипвнешнегоинтерфейса 1
169.254.0.0/16 dev eth4  proto kernel  scope link  src 169.254.204.127  metric 202
169.254.0.0/16 dev eth3  proto kernel  scope link  src 169.254.240.2  metric 204
192.168.0.0/24 dev eth3  proto kernel  scope link  src 192.168.0.1
192.168.0.0/24 dev eth2  proto kernel  scope link  src 192.168.0.76  metric 203
coolmans2010
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.