Portál AbcLinuxu, 7. května 2025 14:44
inet addr:172.16.26.62 Bcast:172.16.26.255 Mask:255.255.255.0 GW: 172.16.26.1
Tomuto připojení jsem nastavil metriku na 1.
U druhého (PF) máme IP:
inet addr:10.109.13.146 Bcast:10.109.13.255 Mask:255.255.255.128 GW 10.109.13.129
Tato IP je jen SNATovaná veřejná UP 81.201.***.** a metriku jsem nastavil na 5.
Můj problém je v tom, že když se pokouším přistupovat na server z venčí (na druhé připojení), tak se na něj nedostanu.
Když přistupuji na to první, tak na to se dostanu.
Dokonce když pingám z jednotlivých zařízení, tak to druhé prostě nefunguje. Stačí ale odebrat defaultní routu prvního a začne fungovat druhé.
Viz:
root@test:~# ping -I eth1 www.seznam.cz
PING www.seznam.cz (77.75.72.3) from 10.109.13.146 eth1: 56(84) bytes of data.
^C
--- www.seznam.cz ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 999ms
root@test:~# ping -I eth2 www.seznam.cz
PING www.seznam.cz (77.75.72.3) from 172.16.26.62 eth2: 56(84) bytes of data.
64 bytes from www.seznam.cz (77.75.72.3): icmp_req=1 ttl=246 time=8.51 ms
Routy jsou takovéto:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 172.16.26.1 0.0.0.0 UG 1 0 0 eth2
default 10.109.13.129 0.0.0.0 UG 5 0 0 eth1
10.109.13.128 * 255.255.255.128 U 0 0 0 eth1
172.16.26.0 * 255.255.255.0 U 0 0 0 eth2
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
192.168.2.0 * 255.255.255.0 U 0 0 0 eth0
Co dělám špatně?
Díky za odpověď.
Řešení dotazu:
# vytvoreni routovacich tabulek (CS, PF) a rout
$ip route add 172.16.26.0 dev eth2 src 172.16.26.62 table T1
$ip route add default via 172.16.26.1 table T1
$ip route add 10.109.13.128 dev eth1 src 10.109.13.146 table T2
$ip route add default via 10.109.13.129 table T2
# nastaveni rout
$ip route add 172.16.26.0 dev eth2 src 172.16.26.62
$ip route add 10.109.13.128 dev eth1 src 10.109.13.146
# nasteveni defaultni routy
$ip route add default via 172.16.26.1
# nasteveni smerovacich rout (aby slo dovnitr a ven to, jakym interfacem to prislo)
$ip rule add from 172.16.26.62 table T1
$ip rule add from 10.109.13.146 table T2
# prirazeni konexi do tabulek
$ip route add 192.168.1.0 dev eth0 table T1
$ip route add 10.109.13.128 dev eth1 table T1
$ip route add 127.0.0.0/8 dev lo table T1
$ip route add 192.168.1.0 dev eth0 table T2
$ip route add 172.16.26.0 dev eth2 table T2
$ip route add 127.0.0.0/8 dev lo table T2
# nastaveni nexthopu (v pripade vypadku GW)
$ip route add default scope global nexthop via 172.16.26.1 dev eth2 weight 1 nexthop via 10.109.13.129 dev eth1 weight 2
Ovšem místo "rule" jsem psal stále "route" (už je moc hodin, nějak jsem to přehlédl).
Teď vše funguje perfektně route
, ze kterého v takovém případě není vidět téměř nic?
Je v něm vidět třeba to, že u obou připojení je nastavna defaultní gw, jakou mají metriku a podobně
Je z něj vidět jen obsah tabulky main
, žádné další tabulky a žádná pravidla. Takže jakmile další tabulky a pravidla používáte, není z něj vidět skoro nic a nelze na základě něj vůbec odhadovat, jak se pakety routují.
Místo této poznámky jste mohl napsat, že třeba místo route byste očekával ip route
Samotný výstup "ip route show
" je sice přehlednější, ale pořád ukazuje jen tabulku main
. Takže by to chtělo "ip rule show
" a buď obsah všech relevantních tabulek nebo rovnou "ip route show table all
" (který je ale dost nepřehledný).
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.