Linux за българи: Форуми

Linux секция за напреднали => Хардуерни и софтуерни проблеми => Темата е започната от: edmon в Jul 15, 2006, 12:17



Титла: Adsl lan lan adsl i tn
Публикувано от: edmon в Jul 15, 2006, 12:17
имам следните неща
един комп с три карти

eth0: 87.118.17.250 mask 255.255.255.0
eth1: 192.168.10.1 mask 255.255.255.0
eth2: 192.168.25.1 mask 255.255.255.0

eth2 е ADSL.

като сложа разни такива:
route add -net 212.39.72.0/24 gw 192.168.25.1
route add -net 212.39.65.0/24 gw 192.168.25.1

заявките от 192.168.10.1/24  към www.btc.bg минават през този линк eth2
.
Проблема е следния:
имам още един комп с :
eth0: 87.118.17.252 mask 255.255.255.0
eth0:1  192.168.1.1 mask 255.255.255.0

може ли по подобен начин да насоча заявките към определини мрежи ... примерно така:
route add -net 212.39.72.0/24 gw 87.118.17.250

за моженето може... ама ако може и да работи...
така че
ако някой от 192.168.1.1/24 на втората машина иска да гледа
www.btc.bg да мине през 87.118.17.250 а от там през ADSL-a
:))))
mersi


Титла: Adsl lan lan adsl i tn
Публикувано от: BRADATA в Jul 15, 2006, 15:22
Би ли описал малко по-подробно мрежовата конфигурация на втората машина? С две карти ли е, каква и е функцията в мрежата етц...


Титла: Adsl lan lan adsl i tn
Публикувано от: edmon в Jul 15, 2006, 20:03
втората машина прави НАТ:) през един интерфейс


Титла: Adsl lan lan adsl i tn
Публикувано от: BRADATA в Jul 16, 2006, 00:25
Дай route таблиците и на двете машини, защото както описваш ситуацията не трябва да имаш проблем. Също така конфигурациятра на firewall-а на първата машина.
бтв Двате машини виждат ли се? (пинг етц?)


Титла: Adsl lan lan adsl i tn
Публикувано от: Hapkoc в Jul 16, 2006, 12:50
Не би трябвало да имаш проблем, мисля, че е достатъчно да включиш препращането на пакети на първата машина:

sysctl -w net.ipv4.ip_forward=1

(net.ipv4.ip_forward=1 го слагаш и в /etc/sysctl.conf).


Титла: Adsl lan lan adsl i tn
Публикувано от: edmon в Jul 16, 2006, 20:00
на първата машина рута е:
Примерен код

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
87.118.176.0    *               255.255.255.0   U     0      0        0 eth0
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0
192.168.1.0     satlan.zlatogra 255.255.255.0   UG    0      0        0 eth0
212.39.65.0     192.168.25.1    255.255.255.0   UG    0      0        0 eth2
192.168.12.0    *               255.255.255.0   U     0      0        0 eth1
192.168.10.0    *               255.255.255.0   U     0      0        0 eth1
192.168.25.0    *               255.255.255.0   U     0      0        0 eth2
212.39.72.0     192.168.25.1    255.255.255.0   UG    0      0        0 eth2
83.228.40.0     192.168.25.1    255.255.252.0   UG    0      0        0 eth2
83.228.32.0     192.168.25.1    255.255.252.0   UG    0      0        0 eth2
83.228.0.0      192.168.25.1    255.255.224.0   UG    0      0        0 eth2
87.126.128.0    192.168.25.1    255.255.192.0   UG    0      0        0 eth2
87.126.0.0      192.168.25.1    255.255.128.0   UG    0      0        0 eth2
default         zlatograd.net   0.0.0.0         UG    0      0        0 eth0


на втората:
Примерен код

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
87.118.176.192  *               255.255.255.192 U     0      0        0 eth0
87.118.176.0    *               255.255.255.0   U     0      0        0 eth0
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0
192.168.11.0    *               255.255.255.0   U     0      0        0 eth0
default         zlatograd.net   0.0.0.0         UG    0      0        0 eth0


:)))


Титла: Adsl lan lan adsl i tn
Публикувано от: edmon в Jul 16, 2006, 21:14
така всъщност до сега установих че заявките трагват от втората машина стигат до първата от там минават през АДСЛ-а
ама не се връщат.
т.е.
с tcpdump  виждам на този интерфейс само да излизат.

а също така:
от машината с адсл:
Примерен код
satlan:~# ping www.btc.bg
PING www.btc.bg (212.39.65.217) 56(84) bytes of data.
64 bytes from 217_65.btc-net.bg (212.39.65.217): icmp_seq=1 ttl=59 time=24.2 ms
64 bytes from 217_65.btc-net.bg (212.39.65.217): icmp_seq=2 ttl=59 time=23.9 ms

--- www.btc.bg ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 23.953/24.121/24.290/0.229 ms
satlan:~# traceroute www.btc.bg
traceroute to www.btc.bg (212.39.65.217), 30 hops max, 40 byte packets
 1  192.168.25.1 (192.168.25.1)  1.015 ms  1.064 ms  1.005 ms
 2  * * *
 3  * * *
 4  * * *
 5  * * *
...........
и тн


а от машинка зад НАТ-а
Примерен код

C:\Documents and Settings\Admin>tracert -d www.btc.bg

Tracing route to www.btc.bg [212.39.65.217]
over a maximum of 30 hops:

  1    <1 ms    <1 ms    <1 ms  192.168.10.1
  2     1 ms     1 ms     1 ms  192.168.25.1
  3     *        *        *     Request timed out.
  4     *        *        *     Request timed out.
  5     *        *        *     Request timed out.
  6    27 ms    22 ms    24 ms  212.39.65.217

Trace complete.






Титла: Adsl lan lan adsl i tn
Публикувано от: Hapkoc в Jul 17, 2006, 23:32
Значи - понеже гледам, че на двете машини имаш публични адреси (87.118.17.250 и 87.118.17.252), та мисълта ми е такава - ако си сложил маршрут към дадена мрежа на 87.118.17.252 през 87.118.17.250 и си пуснал препращането на пакети на 87.118.17.250, би трябвало (както казваш) пакетите за съответната мрежа да минават през 87.118.17.250 и да отиват до там. На връщане, т.к. на 87.118.17.250 не се осъществява NAT, по какъв маршрут ще минат пакетите зависи от маршрутизаторите по-пътя.

Може би трябва да дадеш малко разяснения относно физическата връзка м/у 87.118.17.250 и 87.118.17.252, а също и към 87.118.17.252 през 87.118.17.250 и си пуснал препращането на пакети на 87.118.17.250, би трябвало (както казваш) пакетите за съответната мрежа да минават през 87.118.17.250 и да отиват до там. На връщане, т.к. на 87.118.17.250 не се осъществява NAT, по какъв маршрут ще минат пакетите зависи от маршрутизаторите по-пътя.

Може би трябва да дадеш малко разяснения относно физическата връзка м/у 87.118.17.250 и 87.118.17.252, а също и към 192.168.1.0/24. Ако правилно съм разбрал, че правиш NAT през картата, на която е конфигуриран и 87.118.17.252 адрес, то не ми се струва много удачно.


Титла: Adsl lan lan adsl i tn
Публикувано от: Dean79 в Jul 18, 2006, 07:39
При наличието на 2 шлюза трябва да бъдеш сигурен, че пакетите ще се връщат през същия интерфейс.
Прочети това:
http://lartc.org/howto/lartc.rpdb.multiple-links.html


Титла: Adsl lan lan adsl i tn
Публикувано от: edmon в Jul 18, 2006, 10:50
това го четох:)
обаче явно съм мноо тъп и като направих
резултата беше че нито разбирам кво правя нито
направих нещо,
та искам да кажа че съм се пробвал преди да пиша глупости по форумите.
а двете машини са свързани през суич..


Титла: Adsl lan lan adsl i tn
Публикувано от: Hapkoc в Jul 18, 2006, 11:18
Добре де, дай малко подробности. Примерно:

машина едно има такиви и такива интерфейси, те са свързани насам и натам. машина две има такива и такива интерфейси, те са свързани там и там. машините от 192.168.1.0/24 са свързани по ето този начин към машина две. линията от доставчик едно влиза еди къде си, тази от доставчик две - еди къде си.

Може и картинка някаква да направиш за по-нагледно.


Титла: Adsl lan lan adsl i tn
Публикувано от: в Jul 18, 2006, 12:22
Пейстни си nat таблицата на втория компютър, мисля че се досещам откъде идва проблема...


Титла: Adsl lan lan adsl i tn
Публикувано от: edmon в Jul 18, 2006, 14:02
хех ми да пасте-на:
Примерен код

gw:~# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DNAT       tcp  --  localIP-148          anywhere            tcp dpt:www to:192.168.1.1:8081
DNAT       tcp  --  localIP-24           anywhere            tcp dpt:www to:192.168.1.1:8081
DNAT       tcp  --  localIP-95           anywhere            tcp dpt:www to:192.168.1.1:8081
DNAT       tcp  --  localIP-146          anywhere            tcp dpt:www to:192.168.1.1:8081
DNAT       tcp  --  localIP-56           anywhere            tcp dpt:www to:192.168.1.1:8081
DNAT       tcp  --  localIP-102          anywhere            tcp dpt:www to:192.168.1.1:8081
DNAT       tcp  --  localIP-104          anywhere            tcp dpt:www to:192.168.1.1:8081
DNAT       tcp  --  localIP-144          anywhere            tcp dpt:www to:192.168.1.1:8081
DNAT       tcp  --  localIP-158          anywhere            tcp dpt:www to:192.168.1.1:8081
DNAT       tcp  --  localIP-65           anywhere            tcp dpt:www to:192.168.1.1:8081
DNAT       tcp  --  localIP-76           anywhere            tcp dpt:www to:192.168.1.1:8081
DNAT       tcp  --  localIP-145          anywhere            tcp dpt:www to:192.168.1.1:8081
DNAT       tcp  --  localIP-161          anywhere            tcp dpt:www to:192.168.1.1:8081
DNAT       tcp  --  localIP-164          anywhere            tcp dpt:www to:192.168.1.1:8081
DNAT       tcp  --  localIP-189          anywhere            tcp dpt:www to:192.168.1.1:8081
DNAT       udp  --  anywhere             gw.zlatograd.net    udp dpt:4672 to:192.168.1.125:4672
DNAT       udp  --  anywhere             gw.zlatograd.net    udp dpt:4673 to:192.168.1.11:4673
DNAT       tcp  --  anywhere             gw.zlatograd.net    tcp dpt:5900 to:192.168.1.88:5900
DNAT       udp  --  anywhere             gw.zlatograd.net    udp dpt:4672 to:192.168.1.125:4672
DNAT       tcp  --  anywhere             anywhere            tcp dpt:domain to:192.168.1.1:53
DNAT       udp  --  anywhere             anywhere            udp dpt:domain to:192.168.1.1:53

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
SNAT       all  --  192.168.1.0/24       anywhere            to:87.118.176.252

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination


Титла: Adsl lan lan adsl i tn
Публикувано от: edmon в Jul 18, 2006, 15:02
Цитат (Dean79 @ Юли 18 2006,08:39)
При наличието на 2 шлюза трябва да бъдеш сигурен, че пакетите ще се връщат през същия интерфейс.
Прочети това:
http://lartc.org/howto/lartc.rpdb.multiple-links.html

наистина разбирам това че е нужно да  укажа това от каде да се връщат пакетите.
и също така разбирам че това се прави и управлява с допълнителни таблици .  с ip route.......
но следвайки точно това което е описано не се получи нищо. е само си спрях тотално интернета.


Титла: Adsl lan lan adsl i tn
Публикувано от: в Jul 18, 2006, 15:02
Цитат
target     prot opt source               destination
SNAT       all  --  192.168.1.0/24       anywhere            to:87.118.176.252


Ето това е проблемa..

За destination-ите, за които ще минава през другата машина SNAT не бива да се прави, защото ще стане следното, когато примерна машина (да речем 192.168.1.5) реши да се свърже с btc.bg:

192.168.1.5 иска да се свърже с www.btc.bg:

src 192.168.1.5 dst www.btc.bg via 192.168.1.1, syn
(SNAT): src 87.118.176.252 dst www.btc.bg via (static route) 192.168.25.1, syn
(forward): src 87.118.176.252 dst www.btc.bg via 87.118.176.250
........
syn пакетът достига до www.btc.bg, връща се syn-ack, за да се установи връзка:

src www.btc.bg dst 87.118.176.252, syn-ack
пакетът се връща обаче по друг маршрут и отговорът отива на съвсем друг интерфейс на машината 192.168.1.1 - на интерфейсът с IP адрес 87.118.176.252. Това става понеже рутерите на доставчика ти нямат идея, че за да стигнат до  87.118.176.252, трябва да минават през  87.118.176.250 (и добре че нямат). Та просто обратния маршрут не минава през  87.118.176.250 и точка.


Сещам се за два начина да се разреши това:

В линукс има едно нещо наречено route path verification - т.е ако отговорът от хост ти се върне по друг интерфейс, а не по този от който се очаква, пакетът просто се дропи. Това е вид защита от spoofing. Така че можеш да пробваш на втората машина да направиш :

echo 0 > /proc/sys/net/ipv4/conf/eth0/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/eth1/rp_filter

за да изключиш този механизъм (и теоретично да си носиш риска от атаки с подправени пакети).

А има и по-добър вариант: просто недей да нат-ваш на втората машина пакети с destination: www.btc.bg. Така маршрута на отиване и връщане ще бъде един и същ :)


Титла: Adsl lan lan adsl i tn
Публикувано от: edmon в Jul 18, 2006, 16:12
ами тя идеята е да минат през 250 защото там има АДСЛ
иначе за кво да го правя.

а как така да не ги натвам за бтц.бг
аз бтц.бг го дажам за пример ...
става въпрос за всичките мрежи на бтц
а като гледам в рипе те са си накупили към 25
как да ги изключа от правилото всичките:(





Титла: Adsl lan lan adsl i tn
Публикувано от: в Jul 18, 2006, 16:48
Ами ей така. CIDR маски съвсем спокойно може да се използват с iptables. В най-лошия случай ще напишеш 25 правила, но ако се справяш по-добре с математиката ще ги съкратиш поне няколко пъти. Да не говорим, че 25 правила по никакъв начин няма да ти затормозят performance.

П.П. ебахмааму, ся забелязах че първата машина също била директно навързана към 192.168.1.0/24 мрежата. Много объркано става за жалост. Значи няма да стане без нат-ване на втората машина. Единственият вариант е с rp_filter = 0, несиметричен рутинг и кофтите последствия от това..


Титла: Adsl lan lan adsl i tn
Публикувано от: в Jul 18, 2006, 17:43
Хм, или на първата машина да правиш nat на реалния адрес на втората машина, колкото и причудливо да изглежда, пак е вариант..


Титла: Adsl lan lan adsl i tn
Публикувано от: edmon в Jul 18, 2006, 23:49
добре то тва  е ясно че ще станат много батаци така че викам да питам тогава друго по същия въпрос.
щом не става така да направа друго.
т.е. това с мултилинк ама какво става не знам а и ми е много чудно ако направя точно така както пише тука:
http://lartc.org/howto/lartc.rpdb.multiple-links.html
...
значи:
ip route add 87.11.11.0/24 dev eth0 src 87.11.11.254 table T1
ip route add default via 12.12.12.1 table T1
ip route add 192.168.25.0/24 dev eth2 src 192.168.25.2 table T2
ip route add default via 192.168.25.2 table T2

до тука хубаво ама много ми е интересно как вообще някакъв трафик ще тръгне да минава през 192.168.25.1.
87.11.11.0 е няква мрежа, 12.12.12.1 е gw.
192.168.25.0/24 примерно е мрежата която пуска АДЛС на ЛАН частта си.

за това се питам дори и да ги напиша другите работи от наръчника къв е смисала





Титла: Adsl lan lan adsl i tn
Публикувано от: в Jul 19, 2006, 08:37
Ами много накратко казано, ще ти свърши работа ако жертваш още една машина за default gw на всички останали без първите 2. На нея можеш да си дефинираш такива таблици (ще трябва и правила - ip rule add blabla). Можеш да балансираш между двете линии (по желание с приоритет на едната върху другата - weight), а можеш да си правиш и таблици с мрежи за които да се минава през даден маршрут. Конкретно в твоя случай обаче ако ги сложиш на една от двете машини, пак ще се сблъскаш със същите проблеми - след като и двата гейтуей-а са ти в един мрежов сегмент, отиването ще бъде с един хоп повече от връщането.

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


Титла: Adsl lan lan adsl i tn
Публикувано от: edmon в Jul 19, 2006, 21:28
ами да де тая машина дето писах е пред тия двете:)


Титла: Adsl lan lan adsl i tn
Публикувано от: в Jul 20, 2006, 09:36
Е, ами идеално. Измисляш им някакъв събнет (да речем 172.16.1.0/24). Слагаш на трите машини по едно ип от този събнет на интерфейсите, които са навързани там.

Клиентските машини не бива да са навързани във същия събнет, в който са навързани 2-та гейтуей-а накрая, в противен случай ще имаш същите проблеми. Важното е пакетите да излизат през тази трета машинка и да се връщат през нея, без на предпоследния хоп на връщане да се сетят, че има малко по-кратък път до крайната цел :)


Титла: Adsl lan lan adsl i tn
Публикувано от: edmon в Jul 20, 2006, 12:02
вече ми е много тъпо от тая работа и почвам да питам мноо ама какъв гейтуей да им сложа на тия машинки след основния гейтуей?
вече съм толкова замотан че хич не мислия кво правя:(


Титла: Adsl lan lan adsl i tn
Публикувано от: в Jul 20, 2006, 12:36
Да речем, че картинката изглежда така:

клиент1 \                                                               gw1
клиент2 \  ----------       ------------                      /  
клиент3 - |  switch | --- | gateway|------- switch
.....          /  -----------      ------------                      \
клиентХ/                                                                 gw2

На gateway (третата машина) си слагаш rulesets и routing tables според това, което си прочел в lartc
.
gw1, gw2 са ти двете машини - едната с АДСЛ-а, другата с етернета към провайдъра

клиент1...Х имат default gw - адреса на gateway
gateway има 2 интерфейса - един към "вътрешната мрежа", един към събнета с gw1, gw2.

клиент1...клиентХ са в различен мрежов сегмент от gw1/gw2, за да не възниква гадния проблем.

Това е най-читавия начин.