Fórum Root.cz

Hlavní témata => Server => Téma založeno: Green_Raul 08. 06. 2013, 09:45:15

Název: Routování dvou subnetů
Přispěvatel: Green_Raul 08. 06. 2013, 09:45:15
Zdravím,

mám CentOS 6.4 server se dvěma síťovkama.

Eth0 - (LAN segment připojený do switche) - 192.168.93.2/24
Eth1 - (WAN segment připojený do routeru od ISP) - 192.168.90.2/24

Router od ISP má adresu 192.168.90.1, kterou jsem nastavil jako default gw. Server nyní může do internetu, ale nedaří se mi proroutovat LAN segment na WAN a nastavit maškarádu... IP forwarding je zapnutý.

Poradíte prosím někdo? Díky.
Název: Re:Routování dvou subnetů
Přispěvatel: SHIUNG 08. 06. 2013, 10:16:00
Ahoj,
pomocí iptables:
Kód: [Vybrat]
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
service iptables save
service iptables restart
Název: Re:Routování dvou subnetů
Přispěvatel: Green_Raul 08. 06. 2013, 10:27:44
Ahoj,
díky za odpověď - to bylo první co jsem zkusil, ale nic.

[root@srvr etc]$ iptables --list-rules -t nat
-P PREROUTING ACCEPT
-P POSTROUTING ACCEPT
-P OUTPUT ACCEPT
-A POSTROUTING -o eth1 -j MASQUERADE

[root@srvr etc]$ ping www.seznam.cz -I eth0
PING www.seznam.cz (77.75.72.3) from 192.168.93.2 eth0: 56(84) bytes of data.
From srvr (192.168.93.2) icmp_seq=2 Destination Host Unreachable

[root@srvr etc]$ ping www.seznam.cz -I eth1
PING www.seznam.cz (77.75.72.3) from 192.168.90.2 eth1: 56(84) bytes of data.
64 bytes from www.seznam.cz (77.75.72.3): icmp_seq=1 ttl=248 time=11.1 ms

[root@srvr etc]$ route -n
Směrovací tabulka v jádru pro IP
Adresát         Brána           Maska           Přízn Metrik Odkaz  Užt Rozhraní
10.8.0.2        0.0.0.0         255.255.255.255 UH    0      0        0 tun0
10.8.0.0        10.8.0.2        255.255.255.0   UG    0      0        0 tun0
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U     1003   0        0 eth0
0.0.0.0         192.168.90.1    0.0.0.0         UG    0      0        0 eth1

Nějaké návrhy?
Název: Re:Routování dvou subnetů
Přispěvatel: SHIUNG 08. 06. 2013, 10:34:52
A určitě máš povoleno routování?
Kód: [Vybrat]
vi /etc/sysctl.conf
net.ipv4.conf.default.forwarding=1

Restart sítě proběhl? Ještě jednou se mi u CentOS se mi stalo, že systém byl zmatený z těch pravidel a po restartu celého serveru to bylo OK.
Název: Re:Routování dvou subnetů
Přispěvatel: Green_Raul 08. 06. 2013, 10:42:18
Ano forwarding je na 100% zapnutý. Restartů sítě proběhlo už požehnaně i pár kompletních restartů serveru. Vypnul jsem pro jistotu úplně NetworkManager a zkontroloval ručně veškerá nastavení sítě. Sedím u toho už několik hodin a nemohu takovou trivku vyřešit... :) Než jsem tam přidal druhý interface (protože potřebuji nastavit proxy), tak jsem měl v IP tables pravidla na port forwardingy a pro OpenVPN, nastaven firewall a vše mi krásně fungovalo. Teď nedokážu ani spojit dva subnety. Jde to se mnou z kopce.
Název: Re:Routování dvou subnetů
Přispěvatel: Palo M. 08. 06. 2013, 12:16:11
Vystrel do tmy: Skus si vypisat aj:
Kód: [Vybrat]
iptables -L FORWARD -n -vMozno tam uvidis nieco zaujimave. A mozno nie.
Název: Re:Routování dvou subnetů
Přispěvatel: AlYoSHA 08. 06. 2013, 12:54:24
[root@srvr etc]$ ping www.seznam.cz -I eth0
PING www.seznam.cz (77.75.72.3) from 192.168.93.2 eth0: 56(84) bytes of data.
From srvr (192.168.93.2) icmp_seq=2 Destination Host Unreachable

[root@srvr etc]$ ping www.seznam.cz -I eth1
PING www.seznam.cz (77.75.72.3) from 192.168.90.2 eth1: 56(84) bytes of data.
64 bytes from www.seznam.cz (77.75.72.3): icmp_seq=1 ttl=248 time=11.1 ms

[root@srvr etc]$ route -n
Směrovací tabulka v jádru pro IP
Adresát         Brána           Maska           Přízn Metrik Odkaz  Užt Rozhraní
10.8.0.2        0.0.0.0         255.255.255.255 UH    0      0        0 tun0
10.8.0.0        10.8.0.2        255.255.255.0   UG    0      0        0 tun0
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U     1003   0        0 eth0
0.0.0.0         192.168.90.1    0.0.0.0         UG    0      0        0 eth1

Nějaké návrhy?

Co povie traceroute?
Název: Re:Routování dvou subnetů
Přispěvatel: AlYoSHA 08. 06. 2013, 13:04:27
Zdravím,

mám CentOS 6.4 server se dvěma síťovkama.

Eth0 - (LAN segment připojený do switche) - 192.168.93.2/24
Eth1 - (WAN segment připojený do routeru od ISP) - 192.168.90.2/24

Router od ISP má adresu 192.168.90.1, kterou jsem nastavil jako default gw. Server nyní může do internetu, ale nedaří se mi proroutovat LAN segment na WAN a nastavit maškarádu... IP forwarding je zapnutý.

Poradíte prosím někdo? Díky.

Navyse ked dobre rozumiem tak ping cez eth0 vam nejde.  Ale to posielate paket interfejsom ktory nevedie smerovm von.  WAN je predsa eth0 tam je router.  Aspon tak mi to pripada - musel by som poznat topologiu vase siete.
Název: Re:Routování dvou subnetů
Přispěvatel: AlYoSHA 08. 06. 2013, 13:05:14
oprava WAN je eth1
Název: Re:Routování dvou subnetů
Přispěvatel: Mirek Prýmek 08. 06. 2013, 13:19:23
[root@srvr etc]$ ping www.seznam.cz -I eth0
PING www.seznam.cz (77.75.72.3) from 192.168.93.2 eth0: 56(84) bytes of data.
From srvr (192.168.93.2) icmp_seq=2 Destination Host Unreachable
A určitě to jde takhle testovat? Nemám po ruce žádný linuxový router a s iptables si moc netykám, ale jako první věc bych to určitě zkoušel regulerně zvenku, z jiného stroje, aby ten paket fakt přišel zvenku. Nejsem si totiž vůbec jistej, jestli se POSTROUTING aplikuje na pakety, které nepřišly zvenku - podle tohodle obrázku http://www.billauer.co.il/non-html/ipmasq-html1x.gif bych řekl, že spíš ne (cpu je tam totiž z "host's IP stack". Že mají zdrojovou adresu "vnějšího rozhranní" by na tom nemělo nic měnit).

Je to jenom takovej návrh, co zkusit. Jak říkám, s iptables si moc netykám, používám PF, kde se tohle neřeší :)
Název: Re:Routování dvou subnetů
Přispěvatel: Mirek Prýmek 08. 06. 2013, 13:21:41
Omlouvám se, čumím do toho obrázku a popletl jsem si POST- a PRE- :) Takže ten komentář je asi bezpředmětný...
Název: Re:Routování dvou subnetů
Přispěvatel: AlYoSHA 08. 06. 2013, 13:24:32
Faktom ale je ze dostupnot LAN IPky by bolo lepsie testovat zo siete.  A pokial ide o konferu chcelo by to nejaky obrazok ako ta siet vyzera. Niekedy LAN nemusi byt LAN :-)
Název: Re:Routování dvou subnetů
Přispěvatel: James_Scott 08. 06. 2013, 13:24:49
Mně se moc nezdá ta routing table.  Nevidím tam záznam, který by směřoval pro LAN subnet.
Název: Re:Routování dvou subnetů
Přispěvatel: AlYoSHA 08. 06. 2013, 13:33:06
Ked na to pride tak tam nie je ani WAN.  Nejak divne pretoze obe by tam mali byt ako link.
Název: Re:Routování dvou subnetů
Přispěvatel: AlYoSHA 08. 06. 2013, 13:45:34
Ak nad nejakym rozhranim dvihnes nejaky alias napr 192.168.90.1/24 , tak jadro by malo vytvorit patricny zaznam v routovacej tabulke pre siet 192.168.90.0/24 v ktorej sa ten alias nachadza.  Jadro potom vie, ze ktorym interfejsom ma odoslat paket ktory ma ciel v rovnakej sieti. Pokial taky alias vytvoris a v routovacej tabulke nevznikne patricny zaznam, tak je nieco hnileho v state danskom.  Posli vypis "ip a" a "ip r"
Název: Re:Routování dvou subnetů
Přispěvatel: Green_Raul 08. 06. 2013, 14:10:19
Vážně díky všem za rozvinutí diskuze... Já do toho koukal už moc dlouho a přestávál jsem v tom cokoliv vidět.

Zřejmě po celou tu dobu funguje vše :) kromě testu, kterým jsem to já blbec celou tu dobu testoval (tedy ping www.seznam.cz -I eth0 - který vrací destination host unreachable)... To je ta lenost zvednou se ze židle a jít k nějaké klientské stanici... Omlouvám se vám.

Každopádně nastavení je nyní takovéto:

[root@srvr etc]$ service network restart
Deaktivuji rozhraní eth0:                                  [  OK  ]
Deaktivuji rozhraní eth1:                                  [  OK  ]
Deaktivuji rozhraní loopback:                              [  OK  ]
Aktivuji rozhraní loopback:                                [  OK  ]
Aktivuji rozhraní eth0:                                    [  OK  ]
Aktivuji rozhraní eth1:                                    [  OK  ]
[root@srvr etc]$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 2c:27:d7:15:57:ee brd ff:ff:ff:ff:ff:ff
    inet 192.168.90.2/24 brd 192.168.90.255 scope global eth1
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 00:1c:c4:7b:78:aa brd ff:ff:ff:ff:ff:ff
    inet 192.168.93.2/24 brd 192.168.93.255 scope global eth0
4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 100
    link/[65534]
    inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
5: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
    link/ether 52:54:00:c7:cf:9d brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
6: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 500
    link/ether 52:54:00:c7:cf:9d brd ff:ff:ff:ff:ff:ff
[root@srvr etc]$ ip r
10.8.0.2 dev tun0  proto kernel  scope link  src 10.8.0.1
10.8.0.0/24 via 10.8.0.2 dev tun0
192.168.93.0/24 dev eth0  proto kernel  scope link  src 192.168.93.2
192.168.122.0/24 dev virbr0  proto kernel  scope link  src 192.168.122.1
192.168.90.0/24 dev eth1  proto kernel  scope link  src 192.168.90.2
169.254.0.0/16 dev eth1  scope link  metric 1002
169.254.0.0/16 dev eth0  scope link  metric 1003
default via 192.168.90.1 dev eth1
[root@srvr etc]$ iptables --list-rules
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -i virbr0 -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -i virbr0 -p udp -m udp --dport 67 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport 67 -j ACCEPT
-A FORWARD -d 192.168.122.0/24 -o virbr0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.122.0/24 -i virbr0 -j ACCEPT
-A FORWARD -i virbr0 -o virbr0 -j ACCEPT
-A FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable
[root@srvr etc]$ iptables --list-rules -t nat
-P PREROUTING ACCEPT
-P POSTROUTING ACCEPT
-P OUTPUT ACCEPT
-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535
-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p udp -j MASQUERADE --to-ports 1024-65535
-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -j MASQUERADE
-A POSTROUTING -o eth1 -j MASQUERADE


Název: Re:Routování dvou subnetů
Přispěvatel: Mirek Prýmek 08. 06. 2013, 19:02:53
Takže závěr je takový, že ten ping takhle fakt nefunguje by design?
Název: Re:Routování dvou subnetů
Přispěvatel: Green_Raul 08. 06. 2013, 19:35:13
Ano závěr je opravdu takový, že jsi měl pravdu a navedl mě k tomu to zkusit nastavit, tak jak jsem to nastavil hned napoprvé... A poté to dojít zkusit přímo ze stanice na LAN subnetu... Vše fungovalo... Nastavení iptables pro forwarding OpenVPN a jiných služeb hostovaných na LANu a poté DHCPD, DNS, Squid, qlproxy atd. už šlo jako po másle a nezabralo mi snad ani tolik času jako ten routing.  ::) Co dodat.
Název: Re:Routování dvou subnetů
Přispěvatel: Mirek Prýmek 08. 06. 2013, 20:23:21
Zajímavý. Teď ještě vědět přesně, proč to tak je. Chtělo by to nějakýho gurua, kterej by nám to objasnil :)

Mohl bys zkusit tohle?
# echo 0 >/proc/sys/net/ipv4/conf/eth0/rp_filter
# echo 0 >/proc/sys/net/ipv4/conf/eth1/rp_filter
a potom zas ten ping?
Název: Re:Routování dvou subnetů
Přispěvatel: j 08. 06. 2013, 20:52:30
Mezi nama ... NATovat privatni rozsah je hodne blbej napad .... co kdyby ti aspon ten tvuj "isp" dal rekneme 4 Ccka?