Portál AbcLinuxu, 10. května 2025 07:31
pr:~# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.202.100.0 * 255.255.255.0 U 0 0 0 eth2 10.202.102.0 10.202.100.20 255.255.255.0 UG 0 0 0 eth2 192.168.2.0 * 255.255.255.0 U 0 0 0 eth0 192.168.1.0 * 255.255.255.0 U 0 0 0 eth1 10.202.105.0 10.202.100.10 255.255.255.0 UG 0 0 0 eth2 default 192.168.1.1 0.0.0.0 UG 0 0 0 eth1
pr:~# ifconfig eth0 Link encap:Ethernet HWaddr 00:E0:4C:03:D0:04 inet addr:192.168.2.100 Bcast:192.168.2.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:4717749 errors:0 dropped:0 overruns:0 frame:0 TX packets:3629686 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:3894207161 (3.6 GiB) TX bytes:644997531 (615.1 MiB) Interrupt:16 Base address:0xfc00 eth1 Link encap:Ethernet HWaddr 00:E0:4C:03:B9:90 inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:45144286 errors:0 dropped:0 overruns:0 frame:0 TX packets:37594108 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:2574421497 (2.3 GiB) TX bytes:1244375824 (1.1 GiB) Interrupt:18 Base address:0xf800 eth2 Link encap:Ethernet HWaddr 00:00:00:00:00:10 inet addr:10.202.100.1 Bcast:10.202.100.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:41182455 errors:0 dropped:0 overruns:0 frame:0 TX packets:49263287 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1885652119 (1.7 GiB) TX bytes:2114146390 (1.9 GiB) Interrupt:23 Base address:0xdc00 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:85299 errors:0 dropped:0 overruns:0 frame:0 TX packets:85299 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:13709910 (13.0 MiB) TX bytes:13709910 (13.0 MiB)
ip addr show
' a 'ip route show
'? V tomhle mi dělá problémy se zorientovat.
pr:~# ip addr show 1: lo: LOOPBACK,UP mtu 16436 qdisc noqueue 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: eth0: BROADCAST,MULTICAST,UP mtu 1500 qdisc htb qlen 1000 link/ether 00:e0:4c:03:d0:04 brd ff:ff:ff:ff:ff:ff inet 192.168.2.100/24 brd 192.168.2.255 scope global eth0 3: eth1: BROADCAST,MULTICAST,UP mtu 1500 qdisc htb qlen 1000 link/ether 00:e0:4c:03:b9:90 brd ff:ff:ff:ff:ff:ff inet 192.168.1.100/24 brd 192.168.1.255 scope global eth1 4: eth2: BROADCAST,MULTICAST,PROMISC,UP mtu 1500 qdisc htb qlen 1000 link/ether 00:00:00:00:00:10 brd ff:ff:ff:ff:ff:ff inet 10.202.100.1/24 brd 10.202.100.255 scope global eth2 48: tun0: POINTOPOINT,MULTICAST,NOARP,UP mtu 1500 qdisc pfifo_fast qlen 100 link/[65534] inet 10.201.110.20 peer 10.201.110.21/32 scope global tun0
pr:~# ip route show 10.201.110.21 dev tun0 proto kernel scope link src 10.201.110.20 10.202.100.0/24 dev eth2 proto kernel scope link src 10.202.100.1 10.202.102.0/24 via 10.202.100.20 dev eth2 10.201.110.0/24 via 10.201.110.21 dev tun0 10.201.104.0/24 via 10.201.110.21 dev tun0 192.168.2.0/24 dev eth0 proto kernel scope link src 192.168.2.100 10.201.10.0/24 via 10.201.110.21 dev tun0 10.201.105.0/24 via 10.201.110.21 dev tun0 192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.100 10.201.106.0/24 via 10.201.110.21 dev tun0 10.201.107.0/24 via 10.201.110.21 dev tun0 10.201.101.0/24 via 10.201.110.21 dev tun0 10.201.102.0/24 via 10.201.110.21 dev tun0 10.201.20.0/24 via 10.201.110.21 dev tun0 10.201.103.0/24 via 10.201.110.21 dev tun0 10.202.105.0/24 via 10.202.100.10 dev eth2 10.201.1.0/24 via 10.201.110.21 dev tun0 default via 192.168.1.1 dev eth1
a ak chcu pristupovat do pc zo siete 10.202.102.0 tak ich gw cize moj server routuje na ine rozhranie ako je rozhranie nastavene v route
Kam konkrétně ty pakety posílá?
P.S.: Interpunkce a diakritika by také dost pomohly srozumitelnosti vašeho dotazu…
To je divné, dpokud si nezačnete hrát s pravidly, neměl by se počítač chovat jinak k vlastním paketům než k těm, které pro někoho forwarduje. Co vám vypíše 'ip rule show
'?
V tom případě bude asi problém právě v tom. Tipoval bych, že to vypadá nějak takhle:
ip rule add priority 1000 from 10.202.100.33 table 100 ... ip route add default via ... table 100
ale už v té tabulce není nic dalšího. Je-li to tak, pak veškeré pakety z 10.202.100.33 spadnou do tabulky 100 a ta je pošle na tu gateway, aniž by do toho automaticky vytvořená položka pro 10.202.102.0/24 mohla promluvit.
32640: from 10.202.100.118 lookup eth0 32641: from 10.202.100.117 lookup eth0 32642: from 10.202.100.116 lookup eth1 32643: from 10.202.100.115 lookup eth0 32644: from 10.202.100.114 lookup eth0 32645: from 10.202.100.113 lookup eth0 32646: from 10.202.100.112 lookup eth1 32647: from 10.202.100.111 lookup eth0 32648: from 10.202.100.110 lookup eth0 32766: from all lookup main 32767: from all lookup default
eth0
a eth1
?
pr:~# ip route show table eth0 default via 192.168.2.1 dev eth0 pr:~# ip route show table eth1 default via 192.168.1.1 dev eth1
Tak to je přesně ten problém, o kterém jsem psal před chvílí. Paket z 10.202.100.118 spadne podle pravidla s prioritou 32640 do tabulky eth0 a ta ho pošle na 192.168.2.1 bez ohledu na cílovou adresu, protože obsahuje pouze jednu (default) položku. Chcete-li, aby to fungovalo správně, buď do tabulek eth0 a eth1 přidejte odpovídající položky:
ip route add 10.202.102.0/24 via 10.202.100.20 table eth0 ip route add 10.202.102.0/24 via 10.202.100.20 table eth1
nebo přidejte přednostní pravidlo, které pakety pro 10.202.102.0/24 pošle do tabulky main
:
ip rule add priority 20000 to 10.202.102.0/24 table main
V každém případě optimální řešení je nastavit položku odpovídající linuxovému
ip route add 10.202.102.0/24 via 10.202.100.20
i na stanicích z 10.202.100.0/24.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.