Linux-Bulgaria.ORG
навигация

 

начало

пощенски списък

архив на групата

семинари ...

документи

как да ...

 

 

Предишно писмо Следващо писмо Предишно по тема Следващо по тема По Дата По тема (thread)

Re: lug-bg: Рутиране на две връзки към един гейтуей


  • Subject: Re: lug-bg: Рутиране на две връзки към един гейтуей
  • From: "Dimitar G. Katerinski" <train@xxxxxxx>
  • Date: Fri, 28 Jan 2005 01:16:03 +0200

Kamen TOMOV wrote:
Здравейте,

Здравей,


Имам Линукс машина с ядро 2.6, на който има 3 мрежови карти. Бих искал
да попитам какви правила трябва да имам в руутинг таблицата, така че
външния трафик от мрежа 192.168.254.0/25 да се рутира през първата
карта, а този от мрежа 192.168.254.128/25 - през втората. Проблемът
идва от там, че GW1 е същия като GW2, както и мрежата на GW1 е същата
като мрежата на GW2.
Дотук почти разбрах, с изключение на GW1 и GW2 шлюзове за рутера ли са или за машините във вътрешната мрежа? Ще приема, че говориш за машините
от вътрешната ти мрежа.


Конфигурацията е следната:

Шлюзове : GW1=GW2 Мрежи : NW1=NW2
Мрежови маски   : NM1=NM2
Интерфейси      :
                eth1: NW1/NM1, gw1: GW1, ip: IP1
                eth2: NW2/NM2, gw2: GW2, ip: IP2
Хм, оттук виждам, като ли че говориш за двете ти изходящи връзки? Също така предполагам, че на eth0 ти е вътрешната мрежа. Това, че шлюза по подразбиране за всеки от двата ти външни интерфейса е един същ, не е никакъв проблем.

Това което опитах до сега е следното:
iptables -t nat -A POSTROUTING -s 192.168.254.0/25 -o eth1 -j SNAT \
        --to-source IP1
iptables -t nat -A POSTROUTING -s 192.168.254.128/25 -o eth1 -j SNAT \
        --to-source IP2
Можеш и със по простото:

iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source IP1
iptables -t nat -A POSTROUTING -o eth2 -j SNAT --to-source IP2

Дано си допуснал грешка при преписване на правилата тук в e-mail-а, иначе правиш SNAT два пъти на един и същ интерфейс eth1.


Изтрих всичко от главната таблица за рутиране и добавих следното:
Така, първо не е хубаво да триеш от главната таблица нищо, то не ти
пречи да изпълниш това, което искаш. Имаш шансове ако работиш отдалечено, и объркаш нещо да се "отрежеш" зловещо.


ip route add to 192.168.254.0/25 dev eth0 src 192.168.254.1 table 170
ip route add to NW1/NM1 dev eth1 src IP1 table 180
ip route add to NW2/NM2 dev eth2 src IP2 table 190
ip rule add prio 58 table 170
ip rule add from 192.168.254.0/25 to NW1/NM1 \
        iif eth1 table 180 prio 59
ip rule add from 192.168.254.128/25 to NW2/NM2 \
        iif eth2 table 190 prio 60

Тъй, тия правила дето си ги попълнил, по тоя начин са ми малко объркващи. А и тия prio-ритита дето си ги използвал ... нещо не ми се връзват защо са ти в случая. Нека да обясня по-принцип как е хубаво да се направи. Създаваш две рутиращи таблици, по една за всяка изходяща връзка. За всяка таблица, си представяш, че имаш машина с два интерфейса, един за вътрешната мрежа, и един за мрежата на провайдера ти. Във всяка таблица, трябва да присъстват минимум по три записа. Първият запис е source route указващ мрежата на провайдера, интерфейса на който е и самият изходящ ип адрес към мрежата. Вторият запис аналогично указва, вътрешната мрежа, на кой интерфейс е и самият изходящ ип адрес към мрежата. Третият запис, указва кой е шлюза по подразбиране и на кой интерфейс се намира.
Следните команди следва да бъдат изпълнени:

Първата таблица provider1 (или я замени с някой номер):
ip ro add NW1/NM1 dev eth1 src IP1 table provider1
ip ro add 192.168.254.0/24 dev eth0 src 192.168.254.1 \
                                         table provider1
ip ro add default via GW1 dev eth1 table provider1

Втората таблица provider2 (или я замени с някой номер):
ip ro add NW2/NM2 dev eth2 src IP2 table provider2
ip ro add 192.168.254.0/24 dev eth0 src 192.168.254.1 \
                                         table provider2
ip ro add default via GW2 dev eth2 table provider2


Остава да укажем, коя подмрежа, коя таблица ще ползва:
ip ru add from 192.168.254.0/25 table provider1
ip ru add from 192.168.254.128.0/25 table provider2

За всеки случай, ако имаш netfilter правила във FORWARD chain на filter таблицата, ги прегледай, или спри за момент, докато се увериш, че те не са ти проблем. Също така, провери и стойността на /proc/sys/net/ipv4/ip_forward.

След тези команди очаквах GW1 да бъде достъпен на част от мрежата ми
(192.168.254.0/25), но това не стана. Той не беше достъпен нито от
рутера ми, нито от някой възел от вътрешната ми мрежа.
Нормално е да не е достъпен от самият рутер, спомняш си, че ти казах да не триеш правила от main таблицата.


Това е, мисля че ако не съм объркал нещо в този късен час, всичко би трябвало да тръгне. Ако искаш можем да дискутираме правилата, които си ползвал, но лично аз в момента нямам сили да ти посоча грешките. Това което аз ти написах е възможно най простата установка.



Поздрави,
Димитър
============================================================================
A mail-list of Linux Users Group - Bulgaria (bulgarian linuxers).
http://www.linux-bulgaria.org - Hosted by Internet Group Ltd. - Stara Zagora
To unsubscribe: http://www.linux-bulgaria.org/public/mail_list.html
============================================================================



 

наши приятели

 

линукс за българи
http://linux-bg.org

FSA-BG
http://fsa-bg.org

OpenFest
http://openfest.org

FreeBSD BG
http://bg-freebsd.org

KDE-BG
http://kde.fsa-bg.org/

Gnome-BG
http://gnome.cult.bg/

проект OpenFMI
http://openfmi.net

NetField Forum
http://netField.ludost.net/forum/

 

 

Linux-Bulgaria.ORG

Mailing list messages are © Copyright their authors.