URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 84901
[ Назад ]

Исходное сообщение
"Два айпишника от одного провайдера"

Отправлено Евгений , 14-Апр-09 03:00 
Перерыл кучу инфы. Не помогло. плиз, ХЕЛП!

Ситуация: Пров дал два айпишника (один - медленный анлим, другой - скоростной но дорогой) из одной сети соответственно с одним гетвеем.
Задача: разделять трафик по интерфейсам.

Настройки:
eth0 - 11.11.11.79 netmask 255.255.255.0
eth2 - 11.11.11.78 netmask 255.255.255.0

iptables -t nat -A POSTROUTING -o eth2 -j SNAT --to-source 11.11.11.78 #unlim
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 11.11.11.79 #speed
(это только вырезка из большого файла)

ip route add 11.11.11.0/24 dev eth0 src 11.11.11.79 table lim
ip route add default via 11.11.11.1 dev eth0 table lim (вот тут он грит: RTNETLINK answers: No such process)
ip route add 192.168.0.0/24 dev eth1 table lim
ip route add 127.0.0.0/8 dev lo table lim

ip route add 11.11.11.0/24 dev eth2 src 11.11.11.78 table unlim
ip route add default via 11.11.11.1 dev eth2 table unlim  (вот тут он грит: RTNETLINK answers: No such process)
ip route add 192.168.0.0/24 dev eth1 table unlim
ip route add 127.0.0.0/8 dev lo table unlim

ip rule add from XX.XX.XX.79 table lim
ip rule add from XX.XX.XX.78 table unlim
ip rule add from 192.168.0.0/24 table lim (хотя - бы всю подсеть смаршрутизировать)

ip route flush cache

Когда выставляю правила для разных айпишников из сети 192.168.0.0 - они не действуют.
Подскажите, как быть? Где ошибка?


Содержание

Сообщения в этом обсуждении
"Два айпишника от одного провайдера"
Отправлено Zz , 14-Апр-09 11:08 
>Перерыл кучу инфы. Не помогло. плиз, ХЕЛП!

http://www.opennet.me/tips/info/2009.shtml

>
>Ситуация: Пров дал два айпишника (один - медленный анлим, другой - скоростной
>но дорогой) из одной сети соответственно с одним гетвеем.
>Задача: разделять трафик по интерфейсам.

Извините, интерфейсов у вас один должен быть.

>
>Настройки:
>eth0 - 11.11.11.79 netmask 255.255.255.0
>eth2 - 11.11.11.78 netmask 255.255.255.0

ню-ню.

>
>iptables -t nat -A POSTROUTING -o eth2 -j SNAT --to-source 11.11.11.78 #unlim
>
>iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 11.11.11.79 #speed
>
>(это только вырезка из большого файла)

А остальное мы должны телепатически понять ?
Раз вы такой умный, что знаете что показывать а что нет, то чёж сами тогда не разберетесь ?

>
>ip route add 11.11.11.0/24 dev eth0 src 11.11.11.79 table lim
>ip route add default via 11.11.11.1 dev eth0 table lim (вот тут
>он грит: RTNETLINK answers: No such process)

таблицы кто будет прописывать, Пушкен?

>[оверквотинг удален]
>тут он грит: RTNETLINK answers: No such process)
>ip route add 192.168.0.0/24 dev eth1 table unlim
>ip route add 127.0.0.0/8 dev lo table unlim
>
>ip rule add from XX.XX.XX.79 table lim
>ip rule add from XX.XX.XX.78 table unlim
>ip rule add from 192.168.0.0/24 table lim (хотя - бы всю подсеть
>смаршрутизировать)
>
>ip route flush cache

Вы не прочитали ни одной статьи из найденных, а если прочитали, то не поняли. Правила должны иметь приоритет.

>
>Когда выставляю правила для разных айпишников из сети 192.168.0.0 - они не
>действуют.

Вкурите вывод "ip ru sh"

>Подскажите, как быть? Где ошибка?

Читать доки, читать форум.


"Два айпишника от одного провайдера"
Отправлено Евгений , 14-Апр-09 13:37 

>http://www.opennet.me/tips/info/2009.shtml

Спасибо за ссылку, читал, когда настраивал три канала инета на раздачу. Все работает до сих пор. На всякий случай перечитал еще раз. Не помогло.
>
>>
>>Ситуация: Пров дал два айпишника (один - медленный анлим, другой - скоростной
>>но дорогой) из одной сети соответственно с одним гетвеем.
>>Задача: разделять трафик по интерфейсам.
>
>Извините, интерфейсов у вас один должен быть.

Физический интерфейс должен быть один? Сделать алиас?

> А остальное мы должны телепатически понять ?
> Раз вы такой умный, что знаете что показывать а что нет,
>то чёж сами тогда не разберетесь ?

Конфиг:
Тут есть ipables
#!/bin/sh
IPT="/sbin/iptables"

LOCAL="eth1"
INSIS="eth0"
UNLIM="eth2"

IP_INSIS="11.11.11.79"
IP_UNLIM="11.11.11.78"

echo 1 > /proc/sys/net/ipv4/ip_forward
$IPT -F
$IPT -X
$IPT -t nat -F
$IPT -t nat -X
$IPT -t mangle -F
$IPT -t mangle -X

$IPT -P INPUT ACCEPT
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT

$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT


$IPT -A INPUT -m state --state INVALID -j DROP
$IPT -A FORWARD -m state --state INVALID -j DROP
$IPT -A FORWARD -i $LOCAL -o $UNLIM -j ACCEPT
$IPT -A FORWARD -o $LOCAL -i $UNLIM -j ACCEPT
$IPT -A FORWARD -i $LOCAL -o $LOCAL -j ACCEPT

$IPT -t nat -A POSTROUTING -o eth2 -j SNAT --to-source 11.11.11.78
$IPT -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 11.11.11.79 #activate vista

$IPT -t mangle -A PREROUTING -d 62.148.237.132 -j MARK --set-mark 0x2
$IPT -t mangle -A PREROUTING -s 192.168.0.95 -d ! 192.168.0.0/24 -j MARK --set-mark 2

>таблицы кто будет прописывать, Пушкен?

Тут есть ip

#!/bin/sh
IPT=/sbin/ip

IP_LOCAL="192.168.0.1"
IP_UNLIM="11.11.11.78"
IP_INSIS="11.11.11.79"

GW_INSIS="11.11.11.1"

IF_LOCAL="eth1"
IF_UNLIM="eth2"
IF_INSIS="eth0"

NET_LOCAL=192.168.0.0/24
NET_INSIS=88.86.206.0/24
NET_UNLIM=88.86.206.0/24

$IPT route flush table lim
$IPT route flush table unlim

$IPT route add from $NET_LOCAL to $NET_LOCAL dev $IF_LOCAL table main

         #В таблицу lim
$IPT route add $NET_INSIS dev $IF_INSIS src $IP_INSIS table lim
$IPT route add default via $GW_INSIS dev $IF_INSIS table lim
$IPT route add $NET_LOCAL dev $IF_LOCAL table lim
$IPT route add 127.0.0.0/8 dev lo table lim
         #В таблицу unlim
$IPT route add $NET_UNLIM dev $IF_UNLIM src $IP_UNLIM table unlim
$IPT route add default via $GW_INSIS dev $IF_UNLIM table unlim
$IPT route add $NET_LOCAL dev $IF_LOCAL table unlim
$IPT route add 127.0.0.0/8 dev lo table unlim
         #В таблицу main
$IPT route add $NET_INSIS dev $IF_INSIS src $IP_INSIS table main
$IPT route add $NET_UNLIM dev $IF_UNLIM src $IP_UNLIM table main
$IPT route add default via $GW_INSIS dev $IF_UNLIM table main

$IPT route add YY.YY.YY.1/32 via 88.86.206.1 dev eth0 table lim (это ДНС провайдерский)

$IPT rule add from $IP_INSIS table lim
$IPT rule add to YY.YY.YY.1 table lim
$IPT rule add fwmark 2 table lim
$IPT rule add from $IP_UNLIM table unlim

$IPT route flush cache

cat rt_tables
255     local
254     main
253     default
0       unspec
10 lim
20 unlim

ip rule show
0:      from all lookup local
32761:  from 11.11.11.78 lookup unlim
32762:  from all fwmark 0x2 lookup lim
32763:  from all to YY.YY.YY.1 lookup lim
32764:  from 192.168.0.95 lookup lim
32765:  from 11.11.11.79 lookup lim
32766:  from all lookup main
32767:  from all lookup default

ip route
192.168.0.0/24 dev eth1  proto kernel  scope link  src 192.168.0.1
88.86.206.0/24 dev eth2  scope link  src 88.86.206.78
169.254.0.0/16 dev eth2  scope link
default via 88.86.206.1 dev eth2

ip route show table lim
192.168.0.0/24 dev eth1  scope link
88.86.206.0/24 dev eth0  scope link  src 88.86.206.79
127.0.0.0/8 dev lo  scope link
(Вот как раз в этой таблице и отсутствует дефаултовый шлюз)

ip route show table unlim
83.167.6.1 via 88.86.206.1 dev eth2
192.168.0.0/24 dev eth1  scope link
88.86.206.0/24 dev eth2  scope link  src 88.86.206.78
127.0.0.0/8 dev lo  scope link
default via 88.86.206.1 dev eth2

ip route show table local
broadcast 192.168.0.255 dev eth1  proto kernel  scope link  src 192.168.0.1
broadcast 127.255.255.255 dev lo  proto kernel  scope link  src 127.0.0.1
broadcast 11.11.11.0 dev eth0  proto kernel  scope link  src 11.11.11.79
broadcast 11.11.11.0 dev eth2  proto kernel  scope link  src 11.11.11.78
local 192.168.0.1 dev eth1  proto kernel  scope host  src 192.168.0.1
broadcast 192.168.0.0 dev eth1  proto kernel  scope link  src 192.168.0.1
local 11.11.11.78 dev eth2  proto kernel  scope host  src 11.11.11.78
local 11.11.11.79 dev eth0  proto kernel  scope host  src 11.11.11.79
broadcast 11.11.11.255 dev eth0  proto kernel  scope link  src 11.11.11.79
broadcast 11.11.11.255 dev eth2  proto kernel  scope link  src 11.11.11.78
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

ip route show table main
192.168.0.0/24 dev eth1  proto kernel  scope link  src 192.168.0.1
11.11.11.0/24 dev eth2  scope link  src 11.11.11.78
169.254.0.0/16 dev eth2  scope link
default via 11.11.11.1 dev eth2

ip route show table default - тут пусто

>Вы не прочитали ни одной статьи из найденных, а если прочитали,
>то не поняли. Правила должны иметь приоритет.

Приоритет расставляется автоматически, на сколько я понял и вижу.

Если бы я видел, что не так, я - бы не обратился в этот форум с вопросом.

З.Ы.: Задача, которая стоит передо мной - сделать маршрутизацию по нужному каналу в зависимости от адреса назначение, порта назначение, адреса источника и т.д., но это все делается, насколько я понимаю, через -j MARK --set-mark 0x2


"Два айпишника от одного провайдера"
Отправлено PavelR , 14-Апр-09 20:39 
>
>>
>>Извините, интерфейсов у вас один должен быть.
>
>Физический интерфейс должен быть один? Сделать алиас?

Нууу, как-то не вполне корректно то, что несколько интерфейсов с одинаковыми масками в одну сеть. Оно как бы не сильно вредит, AFAIK, но по сути где-то маска должна быть /32.

>
>
>$IPT -t mangle -A PREROUTING -d 62.148.237.132 -j MARK --set-mark 0x2
>$IPT -t mangle -A PREROUTING -s 192.168.0.95 -d ! 192.168.0.0/24 -j MARK
>--set-mark 2

Можно конечно и маркерами, а можно и через
ip ru add pref XXX to 62.148.237.132 lookup <table>
ip ru add pref XXX from 192.168.0.95 lookup <table>

Это всё зависит от количества требуемых правил и личных вкусовых пристрастий.


>ip route show table lim
>192.168.0.0/24 dev eth1  scope link
>88.86.206.0/24 dev eth0  scope link  src 88.86.206.79
>127.0.0.0/8 dev lo  scope link
>(Вот как раз в этой таблице и отсутствует дефаултовый шлюз)

Но вы же его выставляли командой

$IPT route add default via $GW_INSIS dev $IF_INSIS table lim

и куда же он делся ? Поправьте команду.

>
>Приоритет расставляется автоматически, на сколько я понял и вижу.

А вас всегда устраивает то, что за вас делает автоматика ?

>
>Если бы я видел, что не так, я - бы не обратился
>в этот форум с вопросом.
>
>З.Ы.: Задача, которая стоит передо мной - сделать маршрутизацию по нужному каналу
>в зависимости от адреса назначение, порта назначение, адреса источника и т.д.,
>но это все делается, насколько я понимаю, через -j MARK --set-mark
>0x2

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

---

как-то по большому счету всё правильно.


"Два айпишника от одного провайдера"
Отправлено Евгений , 16-Апр-09 08:48 
>Можно конечно и маркерами, а можно и через
>ip ru add pref XXX to 62.148.237.132 lookup <table>
>ip ru add pref XXX from 192.168.0.95 lookup <table>
>
>Это всё зависит от количества требуемых правил и личных вкусовых пристрастий.

За это - спасибо. ) Так и сделаю.


>[оверквотинг удален]
>>192.168.0.0/24 dev eth1  scope link
>>88.86.206.0/24 dev eth0  scope link  src 88.86.206.79
>>127.0.0.0/8 dev lo  scope link
>>(Вот как раз в этой таблице и отсутствует дефаултовый шлюз)
>
>Но вы же его выставляли командой
>
>$IPT route add default via $GW_INSIS dev $IF_INSIS table lim
>
>и куда же он делся ? Поправьте команду.

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

>>Приоритет расставляется автоматически, на сколько я понял и вижу.
>
>А вас всегда устраивает то, что за вас делает автоматика ?

Тоже поправлю) Но мне кажется, чтобы запуститься - это не критично.
>[оверквотинг удален]
>>Если бы я видел, что не так, я - бы не обратился
>>в этот форум с вопросом.
>>
>>З.Ы.: Задача, которая стоит передо мной - сделать маршрутизацию по нужному каналу
>>в зависимости от адреса назначение, порта назначение, адреса источника и т.д.,
>>но это все делается, насколько я понимаю, через -j MARK --set-mark
>>0x2
>
>ну вообще  надо бы завести несколько маркеров, по одному на канал,
>чтобы не зависеть от шлюза по умолчанию.

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

>как-то по большому счету всё правильно.

Вот и у меня эта схема работает, если провайдера - ДВА. и шлюза тоже два. Но вот на один шлюз это все как - то спотыкается...


"Два айпишника от одного провайдера"
Отправлено Zz , 16-Апр-09 11:48 
>[оверквотинг удален]
>>
>>$IPT route add default via $GW_INSIS dev $IF_INSIS table lim
>>
>>и куда же он делся ? Поправьте команду.
>
>В том - то и дело, что он просто не хочет выставляться.
>Причину найти не могу. Когда пробовал разные варианты (крутил конфиги) он
>периодически выставлялся то в одной таблице, то в другой. Но ни
>разу не было, чтобы дефалтовый маршрут стоял в обоих таблицах.
>

дефолтный шлюз в каждой таблице - это норма. То, что не выставляется - не норма.
Проверяйте команды добавления и интерфейсы, используемые в них на момент выполнения команды.


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

а сам хост как ходить в инет будет ?