LINUX.ORG.RU
ФорумAdmin

Router & iproute2


0

0

Доброго времени суток!

Возникла проблема:
есть роутер и два провайдера на нем:

eth1: 192.168.75.200 gw 192.168.75.1 (default) - 1-й пров
eth3: 192.168.82.200 gw 192.168.82.1 - 2-й пров
192.168.80.0/24, 192.168.81.0/24, 192.168.83.0/24 - локальная сеть (не спрашивайте почему так криво - так получилось ;) )

Так вот, при помощи iproute2+iptables все разруливается между юзверями нормально - проблем ноль:


iptables -A POSTROUTING -d ! 192.168.0.0/255.255.0.0 -o eth2 -j SNAT --to-source 192.168.82.200


#ip route list
192.168.81.0/24 dev eth1  proto kernel  scope link  src 192.168.81.1 
192.168.80.0/24 dev eth0  proto kernel  scope link  src 192.168.80.1 
192.168.83.0/24 dev eth4  proto kernel  scope link  src 192.168.83.1 
192.168.82.0/24 dev eth2  proto kernel  scope link  src 192.168.82.200 
192.168.75.0/24 dev eth3  proto kernel  scope link  src 192.168.75.200 
127.0.0.0/8 dev lo  scope link 
default via 192.168.75.1 dev eth3  metric 1


#ip rule list
0:      from all lookup local 
10:     from 192.168.81.16 to 192.168.0.0/16 lookup main 
15:     from 192.168.81.16 lookup reserv 
32766:  from all lookup main
32767:  from all lookup default 

# ip route show table reserv
default via 192.168.82.1 dev eth2 


Но... возникла необходимость на сам роутер подать и-нет не через 75.200, а через 82.200

Вот тут то я и застрял:

ip rule add from 192.168.82.200 to 192.168.0.0/16 table main priority  10
ip rule add from 192.168.82.200 table utel priority 15
ip route add default via 192.168.82.1 dev eth2 table reserv
ip route flush cache

результата - ноль. Все равно лезет на через 75.1

Курение манов результата тоже не дало.

Вопрос: как заставить сам роутер ходить через 82.1 а не через 75.1 ?
★★★★

Так не получится ?

ip route del default
ip route add default via 192.168.82.1 dev eth2
ip route add table prov_1 default via 192.168.75.1 dev eth3

ip rule add pref 5 from 192.168.0.0/16 lookup prov_1

spirit ★★★★★
()

если правильно понял, ты хочешь чтобы сам роутер (с адреса 192.168.82.200) ходил в инет через 192.168.82.1,

тогда не понятно вот что
ip rule add from 192.168.82.200 to 192.168.0.0/16 table main priority 10
ip rule add from 192.168.82.200 table utel priority 15
ip route add default via 192.168.82.1 dev eth2 table reserv
ip route flush cache

зачем ты загоняешь пакеты от 192.168.82.200 в таблицу utel, а дефолт роут прописываешь в reserv.

видимо нужно так
ip route add default via 192.168.82.1 dev eth2 table utel


проверь вот так

ping -I 192.168.82.200 ya.ru
и посмотри куда пакеты побегут.

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

Это просто ошибка ручного набора (utel). Набирал в спешке.

В том то и дело, что при

ip rule add from 192.168.82.200 to 192.168.0.0/16 table main priority 10
ip rule add from 192.168.82.200 table reserv priority 15
ip route add default via 192.168.82.1 dev eth2 table reserv
ip route flush cache

и ping -I 192.168.82.200 ya.ru

Пакеты ходят нормально...

Но... при ping -I eth2 ya.ru они не ходят через eth2 (82.200)


Хотя в man ping:

-I interface address Set source address to specified interface address. Argument may be numeric IP address or  name  of device

Вот в том то и загвоздка, что задефаултить его не получается.


З.Ы. Чуствую, что где-то конкретно туплю, а где - понять не могу ;)

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

а у тебя алиасов нигде нет? покажи как вот что ifconfig ip route show t (по всем таблицам) ip rule show

chocholl ★★
()

А просто сделать маршрут по умолчанию на 82.200, безо всяких table не помогает?

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

Тогда все ходят через 82.200
А это не нужно.

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

root@lakecity:/etc/iproute2# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:11:3B:04:C9:DB  
          inet addr:192.168.80.1  Bcast:192.168.80.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:32447 errors:174 dropped:0 overruns:0 frame:0
          TX packets:42437 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:3245851 (3.0 Mb)  TX bytes:42116846 (40.1 Mb)
          Interrupt:11 Base address:0x1f00 

eth1      Link encap:Ethernet  HWaddr 00:11:3B:04:C9:D8  
          inet addr:192.168.81.1  Bcast:192.168.81.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1413691 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1849804 errors:0 dropped:0 overruns:6 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:128489858 (122.5 Mb)  TX bytes:2042865037 (1948.2 Mb)
          Interrupt:9 Base address:0x3e00 

eth2      Link encap:Ethernet  HWaddr 00:11:3B:04:D1:66  
          inet addr:192.168.82.200  Bcast:192.168.82.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:5646422 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3023895 errors:0 dropped:0 overruns:2 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:604903926 (576.8 Mb)  TX bytes:237337273 (226.3 Mb)
          Interrupt:7 Base address:0x5d00 

eth3      Link encap:Ethernet  HWaddr 00:60:8C:BF:1A:B3  
          inet addr:192.168.75.200  Bcast:192.168.75.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:102842 errors:0 dropped:0 overruns:0 frame:0
          TX packets:80360 errors:0 dropped:0 overruns:1 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:71648145 (68.3 Mb)  TX bytes:8800111 (8.3 Mb)
          Interrupt:4 Base address:0x7c00 

eth4      Link encap:Ethernet  HWaddr 00:11:3B:04:C9:8F  
          inet addr:192.168.83.1  Bcast:192.168.83.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:8363 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4267 errors:0 dropped:0 overruns:0 carrier:33
          collisions:39 txqueuelen:1000 
          RX bytes:917877 (896.3 Kb)  TX bytes:2690027 (2.5 Mb)
          Interrupt:10 Base address:0x300 

root@lakecity:/etc/iproute2# ip route show t main   
192.168.81.0/24 dev eth1  proto kernel  scope link  src 192.168.81.1 
192.168.80.0/24 dev eth0  proto kernel  scope link  src 192.168.80.1 
192.168.83.0/24 dev eth4  proto kernel  scope link  src 192.168.83.1 
192.168.82.0/24 dev eth2  proto kernel  scope link  src 192.168.82.200 
192.168.75.0/24 dev eth3  proto kernel  scope link  src 192.168.75.200 
127.0.0.0/8 dev lo  scope link 
default via 192.168.75.1 dev eth3  metric 1

root@lakecity:/etc/iproute2# ip route show t local
broadcast 127.255.255.255 dev lo  proto kernel  scope link  src 127.0.0.1 
broadcast 192.168.75.0 dev eth3  proto kernel  scope link  src 192.168.75.200 
local 192.168.82.200 dev eth2  proto kernel  scope host  src 192.168.82.200 
local 192.168.81.1 dev eth1  proto kernel  scope host  src 192.168.81.1 
local 192.168.83.1 dev eth4  proto kernel  scope host  src 192.168.83.1 
broadcast 192.168.81.0 dev eth1  proto kernel  scope link  src 192.168.81.1 
broadcast 192.168.83.0 dev eth4  proto kernel  scope link  src 192.168.83.1 
broadcast 192.168.80.255 dev eth0  proto kernel  scope link  src 192.168.80.1 
broadcast 192.168.82.255 dev eth2  proto kernel  scope link  src 192.168.82.200 
broadcast 192.168.75.255 dev eth3  proto kernel  scope link  src 192.168.75.200 
local 192.168.80.1 dev eth0  proto kernel  scope host  src 192.168.80.1 
broadcast 192.168.80.0 dev eth0  proto kernel  scope link  src 192.168.80.1 
broadcast 192.168.82.0 dev eth2  proto kernel  scope link  src 192.168.82.200 
local 192.168.75.200 dev eth3  proto kernel  scope host  src 192.168.75.200 
broadcast 192.168.81.255 dev eth1  proto kernel  scope link  src 192.168.81.1 
broadcast 192.168.83.255 dev eth4  proto kernel  scope link  src 192.168.83.1 
broadcast 127.0.0.0 dev lo  proto kernel  scope link  src 127.0.0.1 
local 127.0.0.1 dev lo  proto kernel  scope host  src 127.0.0.1 
local 127.0.0.0/8 dev lo  proto kernel  scope host  src 127.0.0.1

root@lakecity:/etc/iproute2# ip route show t reserv
default via 192.168.82.1 dev eth2 

root@lakecity:/etc/iproute2# ip rule show        
0:      from all lookup local 
10:     from 192.168.81.16 to 192.168.0.0/16 lookup main 
10:     from 192.168.82.200 to 192.168.0.0/16 lookup main 
15:     from 192.168.81.16 lookup reserv
15:     from 192.168.82.200 lookup reserv
32766:  from all lookup main 
32767:  from all lookup default

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

> Помогло ;)
> Завалилась вся таблица маршрутизации, пришлось с кнопки роутер бутать :)

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

Смысл был такой: т.к. большинство программ на шлюзе при отсылке пакетов не делают bind на какой-либо конкретный интерфейс, следовательно src IP не известен и определяется он при маршрутизации. А раз маршрутизацию проходит "пакет", имеющий только dst IP, то правила (ip rule) с "from x.x.x.x" игнорируются (указывать в правилах "to весь_internet" думаю не логично). Поэтому сразу напрашивается идея сделать default в таблице main такой, как нужен для самого шлюза, а default для пакетов локальной сети - в другой таблице (у них ведь известен src IP - 192.168.0.0/16).

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

Ах да, извиняюсь, надо было перед правилом
> ip rule add pref 5 from 192.168.0.0/16 lookup prov_1
добавить такое:
ip rule add pref 4 from 192.168.0.0/16 to 192.168.0.0/16 lookup main

(просто я это подразумевал по умолчанию)

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

>Ах да, извиняюсь, надо было перед правилом

Все нормально ;)

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

eth0 Link encap:Ethernet HWaddr 00:11:3B:04:C9:DB
inet addr:192.168.80.1 Bcast:192.168.80.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:32447 errors:174 dropped:0 overruns:0 frame:0
TX packets:42437 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3245851 (3.0 Mb) TX bytes:42116846 (40.1 Mb)
Interrupt:11 Base address:0x1f00

eth1 Link encap:Ethernet HWaddr 00:11:3B:04:C9:D8
inet addr:192.168.81.1 Bcast:192.168.81.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1413691 errors:0 dropped:0 overruns:0 frame:0
TX packets:1849804 errors:0 dropped:0 overruns:6 carrier:0
collisions:0 txqueuelen:1000
RX bytes:128489858 (122.5 Mb) TX bytes:2042865037 (1948.2 Mb)
Interrupt:9 Base address:0x3e00

а как так маки одинаковые?

я бы вот это убрал
10: from 192.168.82.200 to 192.168.0.0/16 lookup main
а в reserv лучше добавил роут на 192.168.0.0/16.

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

>я бы вот это убрал
>10: from 192.168.82.200 to 192.168.0.0/16 lookup main
>а в reserv лучше добавил роут на 192.168.0.0/16.

читать так

я бы вот это убрал
10: from 192.168.82.200 to 192.168.0.0/16 lookup main
а в reserv лучше добавил роут на все подсети.

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

Я однажды делал такое:

iptables -t mangle -A OUTPUT -m owner --uid-owner USER_1 -j MARK --set-mark 100

Создал еще одну таблицу, например mytable

ip rule add to all fwmark 100 lookup mytable

В этой таблице создай default gateway на нужный тебе IP.
Зайди под пользователем USER_1 и вперёд! (только у меня так не заворачивало пакеты от ping, но это ерунда)

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

Уррряяяя заработала! (с) Простоквашино

Огромнейшее спасибо! :)

Vanilin ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.