Задачка по роутингу

Автор: iVan Дата: 19.01.2006 20:52 Доброе время суток уважаемые коллеги администраторы!)
помогите решить задачку)
есть небольшая локальная сетка 192.168.0.0/24, в ней линукс сервер 19.168.0.2 и адсл роутер 192.168.0.1
на всех остальных машинах шлюзом прописан 0.2 сервер, он же уже осуществляет маскарадинг через свой шлюз по дефолту 0.1. тоесть раздаёт всем в сетке инет.
всё работает замечательно пока не подключился я к региональной локальной сети, но со старым провайдером расставаться не собираюсь. мне нужно разрешить всем компам в моей сети пользоваться ресурсами региональной сети.
так вот, в региональной сети мне дали ОДИН айпи в такой вот подсети: 192.168.134.0/24 и адрес шлюза 192.168.134.1
решил оставить шлюз старого провайдера поумолчанию, дабы ненароком не спалить весь дорогущий трафик что купил в новой региональной сетке.
та сеть, как я понял, состоит из множества 192.168.X.0/24 подсетей, объединённых одним шлюзом. в тех подсетях есть много машин с полезными рисурсами. я хочу чтобы они были доступны всем машинам в моей сети, но в инет через региональную сеть пускать только один комп (мой=))
ещё известно что днс-ы той региональной сети это 192.168.0.1 и 192.168.0.100...
тут сразу виден конфликт, что сервер 192.168.0.1 есть и в той сети и в другой. ладно, в своей сменил его на 192.168.0.3
пробывал прописать эти два сервера напрямую, типа:
---
route add -host 192.168.0.1 dev eth1 gw 192.168.134.1
route add -host 192.168.0.100 dev eth1 gw 192.168.134.1
---
вроде стали пинговаться со шлюза.. но с другой машины в моей сети не видны.
мне наверное надо сменить подсеть в моей сетке. но на какую? какие ещё подсети дают локалкам обычно, чтобы не конфликтовали ни с кем? 169.254.0.0?
и ещё вопрос, как мне быть со шлюзом по умолчанию, ака default gw? ведь шлюз можно прописать только один.

---
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.134.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 192.168.0.3 0.0.0.0 UG 0 0 0 eth0
---
помогите пожалуйста разобраться!
Re: задачка по роутингу 20.01.2006 07:43Neonovice Под локальные сети отведены следующие подсети:

CLASS A 10.0.0.0/8
CLASS B 172.16.0.0/12
CLASS C 192.168.0.0/16

Поскольку ваш региональный провайдер использует всю (или всё-таки не всю?) сеть класса C, вам нужно либо выяснить у него, какие подсети из класса C он не использует, либо для своих нужд использовать подсети из сетей класса A или B,
например 10.1.1.0/24 или 172.16.10.128/25 (последняя охватывает диапазон от 172.16.10.128 до 172.16.10.255), и тогда создать отдельный маршрут к сети 192.168.0.0/24.
Re: задачка по роутингу 20.01.2006 12:45iVan у провайдера пытался выяснить уже какие подсети использует. разговаривал с каким то младшим админишкой он ничего толкового не сказал. наверное лучше сменю на чтонибудь что вы, Neonovice, посоветовали.
---
route add -net 192.168.0.0 netmask 255.255.0.0 dev eth1 gw 192.168.134.1
---
так?
Re: задачка по роутингу 20.01.2006 13:02Neonovice Да, и не забудьте перенастроить вашу локалку на использование подсети из класса A или B, а также defaultroute на всех компах локалки на ваш шлюз.
Re: задачка по роутингу 20.01.2006 22:23Woodoo iVan писал(а):

> у провайдера пытался выяснить уже какие подсети использует.
> разговаривал с каким то младшим админишкой он ничего толкового
> не сказал.

Здесь нужен nat - эта сетка не в вашей "зоне влияния" и там не исключена возможность подсетей с вашими ip.
Провайдер выделил 1 ip - в этих рамках и нужно оставаться.

наверное лучше сменю на чтонибудь что вы, Neonovice,
> посоветовали.
> ---
> route add -net 192.168.0.0 netmask 255.255.0.0 dev eth1 gw
> 192.168.134.1
> ---

А вот здесь нужно понять один момент - как клиенты вашей подсети собираются использовать ресурсы "региональной подсети"? Что там - ftp, http, ms-network?
Re: задачка по роутингу 20.01.2006 23:50iVan 2 Neonovice: огромное спасибо! всё сразу заработало!

---
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.134.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
172.16.16.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.0.0 192.168.134.1 255.255.0.0 UG 0 0 0 eth1
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 172.16.16.2 0.0.0.0 UG 0 0 0 eth0
---

>Здесь нужен nat - эта сетка не в вашей "зоне влияния" и там не исключена возможность подсетей с вашими ip.
---
-A POSTROUTING -s 172.16.16.0/255.255.255.0 -j MASQUERADE
-A FORWARD -s 172.16.16.10 -i eth0 -j ACCEPT
-A FORWARD -d 172.16.16.10 -o eth0 -j ACCEPT
-A FORWARD -s 172.16.16.13 -i eth0 -j ACCEPT
-A FORWARD -d 172.16.16.13 -o eth0 -j ACCEPT
-A FORWARD -s 172.16.16.14 -i eth0 -j ACCEPT
-A FORWARD -d 172.16.16.14 -o eth0 -j ACCEPT
-A FORWARD -s 172.16.16.15 -i eth0 -j ACCEPT
-A FORWARD -d 172.16.16.15 -o eth0 -j ACCEPT
-A FORWARD -s 172.16.16.11 -i eth0 -j ACCEPT
-A FORWARD -d 172.16.16.11 -o eth0 -j ACCEPT
-A FORWARD -s 172.16.16.16 -i eth0 -j ACCEPT
-A FORWARD -d 172.16.16.16 -o eth0 -j ACCEPT
...
---
такое правило одновременно выпускает всех в инет по старому каналу и осуществляет маскарадинг в региональную сеть, не так ли?

>А вот здесь нужно понять один момент - как клиенты вашей подсети собираются использовать ресурсы "региональной подсети"? Что там - ftp, http, ms-network?
все три вышеперечисленных плюс что то вроде ed2k сети. в основном http. на smb ресурсы можно забить, хотя для этих целей у меня уже на готове cgi скрипт самбы.

теперь остаётся лиш решить последний важный вопрос. есть два шлюза у меня тут. один 172.16.16.1 (адсл роутер, шлюз по умолчанию на линь серве) и 192.168.134.1 - шлюз который дал региональный пров, через которого хожу на все остальные сети 192.168.0.0/24.
так вот, через шлюз 192.168.134.1 есть так же доступ в инет, но там трафик дорогой, зато быстро. так вот я хочу сделать так чтобы с одной машины в моей сети мог выходить через этот быстрый канал а все остальные так ходили по старому каналу, через модем.
это вроде одно правило на фаерволе и всё.. только запутался что то с этими SNAT'ами и DNAT'ами..
как правельно?
Re: задачка по роутингу 21.01.2006 21:22iVan никак не пойду, как же мне выпустить один комп в инет через шлюз регионального провайдера..
---
iptables -t nat -A PREROUTING -i eth0 -s 172.16.16.10 -d ! 192.168.0.0/255.255.0.0 -j DNAT --to-destination 192.168.134.1
---
теоретически такое должно работать, но как только даю это правило вообще не могу ни на один сайт зайти с этого компа.
в этом примере я подменяю адрес назначения, быть может мне нужен ещё SNAT? получили пакет, FORWARD его пропустил. подменили айпи отправителя SNAT-ом и сразу же отправили его на 192.168.134.1 шлюз DNAT-ом.. как думаете, сработает?
Re: задачка по роутингу 21.01.2006 22:35Woodoo Наверное, с помощью средств пакета iproute.
Но прежде нужно определиться с моделью роутинга на обоих шлюзах - это зависит от функциональных требований к системе. Возможно, что iproute нужно будет настраивать на обоих шлюзах.
Re: задачка по роутингу 22.01.2006 07:17Neonovice iproute тут скорее всего пока не нужен, все должно решиться средствами route + маскарад или NAT на iptables.

Распишите подробнее конфигурацию сети со всеми шлюзами, и не забудьте указать режим работы ADSL-модема.
Re: задачка по роутингу 22.01.2006 17:42iVan >Распишите подробнее конфигурацию сети со всеми шлюзами, и не забудьте указать режим работы ADSL-модема.
я вроде уже всё расписал..
один коммутатор который объединяет все компы в локальной сети.
172.16.16.2 - адсл модем, на нём настроен нат и доступ к нему только через один комп возможен (сервер)(привязка к маку). модем подключён напрямую в коммутатор.
сам сервер 172.16.16.1 с двумя сетевушками. одна смотрит во внутреннюю сеть другая в региональную (192.168.134.*не_скажу_какой_ip*).
и ещё пользовательские компы 172.16.16.10-172.16.16.16.
машины 11-16 должны ходить в инет по адсл а машина 10 по региональной сети через шлюз 192.168.134.1.
уже сделан доступ в региональную сеть всем компам в локалке. и инет у всех есть, только ходит по адсл. осталось только для 10-ой машины сделать инет через региональную сеть.
что ещё сказать? всё это наглядно показано в таблице маршрутизации чуть выше.
Re: задачка по роутингу 22.01.2006 17:49iVan слушайте, а если на моей 10-ой машине прописать маршрут вот так:
---
route add -net 192.168.0.0 netmask 255.255.0.0 dev eth0 gw 172.16.16.1
---
а шлюз поумолчанию сделать вот этот 192.168.134.1
поидее это решило бы проблему..


жаль, но не сработало...
Re: задачка по роутингу 23.01.2006 08:18Neonovice iVan писал(а):
> один коммутатор который объединяет все компы в локальной сети.
> 172.16.16.2 - адсл модем, на нём настроен нат и доступ к нему
> только через один комп возможен (сервер)(привязка к маку).
> модем подключён напрямую в коммутатор.

Фактически у вас в сети два маршрутизатора: модем (хотя вы и не пишете в точности, в каком режиме он у вас работает, но вроде в режиме роутера) и 172.16.16.1. Пропишите на модеме все клиентские машины из подсети 172.16.16.0, которые имеют право выходить в интернет через него, и на них на всех укажите default route на 172.16.16.2. Не забудьте на модеме организовать правила файервола, либо поднимайте файерволы на всех клиентских машинах (если есть параноидальные симптомы, хотя ак будет на самом деле безопаснее)

> сам сервер 172.16.16.1 с двумя сетевушками. одна смотрит во
> внутреннюю сеть другая в региональную
> (192.168.134.*не_скажу_какой_ip*).
> и ещё пользовательские компы 172.16.16.10-172.16.16.16.
> машины 11-16 должны ходить в инет по адсл а машина 10 по
> региональной сети через шлюз 192.168.134.1.
> уже сделан доступ в региональную сеть всем компам в локалке. и
> инет у всех есть, только ходит по адсл. осталось только для
> 10-ой машины сделать инет через региональную сеть.

На сервере меняете default route с 172.16.16.2 на 198.168.134.1, и на машине 172.16.16.10 прописываете default route на шлюз, а не на модем.
Вносите соответствующие изменения в правила iptables на шлюзе.

Если так не нравится, тогда вам на самом деле придется делать маршрутизацию на шлюзе при помощи iproute, но тут я не помощник, т.к. сам никогда этим не пользовался. Инфы об этом много, даже здесь. Ищите.
[gazette.linux.ru.net]
Re: задачка по роутингу 23.01.2006 18:37iVan >На сервере меняете default route с 172.16.16.2 на 198.168.134.1, и на машине 172.16.16.10 прописываете default route на шлюз, а не на модем.
ну это канешно же легче всего.. модем работает как маршрутизатор. хотя ещё придётся прописать маршруты к сети 192.168.0.0/24 на каждом компе.. или на модеме сразу.. но мне не нравится это решение. так как раньше были проблемы разделения скорости канала. кто то один занимал весь канал а все остальные не могли спокойно лазить по сайтам. на линукс сервере уже довольно длительный период времени работает htb+sfq и прекрасно себя зарекомендовал.

а за ссылку спасибо. буду разбираться
Re: задачка по роутингу 25.01.2006 16:28iVan немного почитав статейки по iptables и iproute2 пришёл к такому решению:
---
echo 200 fast_inet >> /etc/iproute2/rt_tables
ip route add default via 192.168.134.1 dev eth1 table fast_inet
iptables -t mangle -A POSTROUTING -s 172.16.16.10 -d ! 192.168.0.0/16 -j MARK --set-mark 30
ip rule add fwmark 30 table fast_inet
ip route flush cache
---
вот только не знаю ещё, сработает или нет.. вечером попробую..
Re: задачка по роутингу 26.01.2006 13:09iVan нет это не сработало. не могу понять в чём дело. добавляю строчку в rt_tables, прописываю шлюз по умолчанию, на всякий случай даю команду flush cache, всё впорядке, а вот после добавления правила и flush cache сервер рвёт все соединения и больше не пускает. что именно происходит я так и не понял, так как работаю удалённо.
у меня в таблице mangle уже есть правила которые ставят метки, но номера там другие.. такое ощущение что весь трафик сразу идёт по новой таблице маршрутизации, где не прописаны остальные маршруты..
---
echo 200 fast_inet >> /etc/iproute2/rt_tables
---
а может быть дето в этом? что означает это число? уж не приоритет ли таблицы?
и можно ли использовать ip rule add **from** при маскараде? не будет ли сервер просто вслепую роутить пакеты не запаковывая их, игнорируя правила iptables'а?

попробую ещё сделать нат средствами iproute2
---
ip route add nat 172.16.16.10 via 192.168.153.*мой айпи*
ip rule add from 172.16.16.10 table fast_inet
---
очень интересно, а правило nat нужно записывать в table fast_inet или просто?
нужно ли в table fast_inet добавлять остальные маршруты? почему то ни в одной документации об этом ничего не говорится. указывают только шлюз по дефолту..

а ещё попробую дописать недостающие правила для новой таблицы:
---
ip route add 172.16.16.0/24 dev eth0 table fast_inet
ip route add 192.168.134.0/24 dev eth1 table fast_inet
ip route add 127.0.0.0/8 dev lo table fast_inet

ip route add 172.16.16.0/24 dev eth0 src 172.16.16.1
ip route add 192.168.134.0/24 dev eth1 src 192.168.134.*мой айпи*
---
Re: задачка по роутингу 28.01.2006 18:51iVan проблема решена вот таким вот образом:
---
echo 200 fast_inet >> /etc/iproute2/rt_tables
ip route add default via 192.168.134.1 dev eth1 table fast_inet
ip route add 172.16.16.0/24 dev eth0 src 172.16.16.1 table fast_inet
ip route add 192.168.134.0/24 dev eth1 src 192.168.134.*ip* table fast_inet
ip route add 127.0.0.0/8 dev lo table fast_inet
ip rule add from 172.16.16.10 table fast_inet
---
жаль только что не удалось сделать динамический маршрут для таблицы fast_inet:
---
ip route add default scope global nexthop via 192.168.134.1 dev eth1 nexthop via 172.16.16.2 dev eth0 table fast_inet
---
на такое сразу ругается. а для основной таблицы я не хочу делать доступным быстрый канал, хочу лиш чтобы когда быстрый канал по каким то причинам не работал, автоматически по другому каналу ходили пакеты)
есть идеи?*)
Re: задачка по роутингу 29.01.2006 01:07Woodoo iVan писал(а):

> а для основной таблицы я не хочу
> делать доступным быстрый канал, хочу лиш чтобы когда быстрый
> канал по каким то причинам не работал, автоматически по другому
> каналу ходили пакеты)
> есть идеи?*)

Идей нет. Есть метрики (metric).
Улыбка
Re: задачка по роутингу 30.01.2006 12:59iVan >не могу понять в чём дело. добавляю строчку в rt_tables, прописываю шлюз по умолчанию, на всякий случай даю команду flush cache, всё впорядке, а вот после добавления правила и flush cache сервер рвёт все соединения и больше не пускает. что именно происходит я так и не понял, так как работаю удалённо.
теперь понял=)
когда собирал свеженькое ядрышко обратил внимание на то что у мну не была включена опция позволяющая iproute2 давать метки fw)
RSS-материал