Portál AbcLinuxu, 10. května 2025 11:21
Snažím se dát dohromady jeden skript změnu ip adres síťovky. Věc se má tak, že síťovku mám nakonfigurovanou v souboru /etc/network/interfaces (Debian) - tuto ip beru jako pevnou, kterou měnit nechci. Jakmile ji přiřadím další třeba dvě ip adresy takto:
ip addr add 192.168.1.2/24 dev bond0
ip addr add 192.168.1.3/24 dev bond0
Tak mi příkaz ip addr show bond0 vypíše ve zkratce toto:
inet 81.0.x.x/28 brd 81.0.x.x scope global bond0 // adresa nastavená v interfaces
inet 192.168.1.2/24 scope global bond0 // adresa nastavená příkazem ip addr
inet 192.168.1.3/24 scope global secondary bond0 // adresa nastavená příkazem ip addr
Proč mi to už tu první přidanou ip nehodí jako secondary? Dělá mi to celkem problémy, protože když se pokusím pomocí ip addr del odstranit adresu 192.168.1.2, tak mi to odstraní i 192.168.1.3.
1) Příkazu ifconfig bych se celkem rád vyhnul.
2) Dělat opičárny jako odstranit první adresu a pak znovu přidat druhou se mi taky nechce už jen z toho důvodu, že těch adres tam mám požehnaně.
3) Konfigurovat "pevnou" ip adresu ručně pomocí ip addr a ne v interfaces, ano to by asi fungovalo, ale...
Má někdo nějaký nápad, kudy ven, kromě těchto tří výše zmíněných?
Řešení dotazu:
To bohužel nejde...
To secondary znamena, ze je to druha adresa ze stejneho rozsahu
Zajímavý nápad. Na první pohled funguje správně, ale bojím se že narazím na problémy, protože "Unfortunately, this subterfuge will prevent the kernel from entering the correct corresponding network and broadcast routes."
Příznak secondary
se nastavuje, pokud jde o druhou (nebo další) adresu se stejným rozsahem, jako má některá už existující. To rozlišení je hlavně kvůli algoritmu určení preferované zdrojové adresy - je-li více adres se stejným rozsahem, přednost má "primární", tj. ta bez příznaku secondary
.
Tradiční chování bylo takové, že při odebrání "primární" adresy se odebraly automaticky i všechny secondary
se stejným rozsahem. Takže přidání dalších adres bez udání rozsahu (s délkou prefixu 32) by sice zajistilo, že se neodeberou, ale nejspíš by výsledkem bylo něco jiného než chcete. Máte-li ale systém s dostatečně novým jádrem, můžete zapsáním jedničky do
/proc/sys/net/ipv4/conf/*/promote_secondaries
přepnout rozhraní do režimu, kdy se po odebrání "primární" adresy stane "primární" některá ze současných secondary
, tj. je jí odebrán příznak secondary
a je na ni přepsán parametr src
u příslušné automaticky generované položky směrovací tabulky main
:
lion:~ # ip addr show dev eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000 link/ether 00:16:17:9b:24:fb brd ff:ff:ff:ff:ff:ff inet 192.168.1.2/24 brd 192.168.1.255 scope global eth0 inet 192.168.2.1/24 brd 192.168.2.255 scope global eth0 inet6 fe80::216:17ff:fe9b:24fb/64 scope link valid_lft forever preferred_lft forever lion:~ # ip addr add 10.11.12.13/24 dev eth0 lion:~ # ip addr add 10.11.12.14/24 dev eth0 lion:~ # ip addr add 10.11.12.15/24 dev eth0 lion:~ # ip addr add 10.11.12.16/24 dev eth0 lion:~ # ip addr show dev eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000 link/ether 00:16:17:9b:24:fb brd ff:ff:ff:ff:ff:ff inet 192.168.1.2/24 brd 192.168.1.255 scope global eth0 inet 192.168.2.1/24 brd 192.168.2.255 scope global eth0 inet 10.11.12.13/24 scope global eth0 inet 10.11.12.14/24 scope global secondary eth0 inet 10.11.12.15/24 scope global secondary eth0 inet 10.11.12.16/24 scope global secondary eth0 inet6 fe80::216:17ff:fe9b:24fb/64 scope link valid_lft forever preferred_lft forever lion:~ # ip route show | grep 10.11.12 10.11.12.0/24 dev eth0 proto kernel scope link src 10.11.12.13 lion:~ # ip addr del 10.11.12.13/24 dev eth0 lion:~ # ip addr show dev eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000 link/ether 00:16:17:9b:24:fb brd ff:ff:ff:ff:ff:ff inet 192.168.1.2/24 brd 192.168.1.255 scope global eth0 inet 192.168.2.1/24 brd 192.168.2.255 scope global eth0 inet 10.11.12.14/24 scope global eth0 inet 10.11.12.15/24 scope global secondary eth0 inet 10.11.12.16/24 scope global secondary eth0 inet6 fe80::216:17ff:fe9b:24fb/64 scope link valid_lft forever preferred_lft forever lion:~ # ip route show | grep 10.11.12 10.11.12.0/24 dev eth0 proto kernel scope link src 10.11.12.14
Výborně, děkuju za vysvětlení
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.