Fórum Root.cz
Hlavní témata => Server => Téma založeno: Michal Stanke 19. 05. 2020, 10:48:36
-
Dobré odpoledne.
Řešíme zapeklitý problém na (starší) virtuálce s Debianem 9.11. Po restartu nefunguje IPv6 konektivita. Ihned po spuštění když spustím ping ipv6.google.com nebo ping nebezi.cz
, zobrazí se resolvnutá IPv6, ale nepingá. Když to zkusím znovu za chvíli, vypíše se rovnou něco ve smyslu connect: Síť není dostupná
nebo tak nějak.
Dočasným řešením je příkaz ip route add default via 2A01:0430:002E::1
, nicméně toto nepřežije restart. Nastavení síti na Linuxu moc nerozumím, nicméně podle různých rad jsem se koukal do /etc/network/interfaces
a sledoval výstup příkazů ip route
a ip -6 route
, ale před i po spuštění uvedeného příkazu je vše stejné a routa vypadá, že je tam uvedena správně. Z návodů na webu jsem zkoušel https://serverfault.com/questions/526008/ipv6-default-gateway-route-disappear-after-reboot a https://serverfault.com/questions/477471/ipv6-only-works-after-pinging-the-default-gateway, které mi přišly relevantní, ale nijak nepomohly.
Nevím, jestli to spolu souvisí, nicméně systemctl status networking
prozrazuje nějakou chybu, ale nenašel jsem v žádném logu podrobnosti.
● networking.service - Raise network interfaces
Loaded: loaded (/lib/systemd/system/networking.service; enabled; vendor preset: enabled)
Active: active (exited) since Mon 2020-05-18 22:22:32 CEST; 12h ago
Docs: man:interfaces(5)
Process: 334 ExecStart=/sbin/ifup -a --read-environment (code=exited, status=0/SUCCESS)
Process: 327 ExecStartPre=/bin/sh -c [ "$CONFIGURE_INTERFACES" != "no" ] && [ -n "$(ifquery --read-environment --list --exclude=lo)" ] && udevadm settle (code=exited, status=1/FAILURE)
Main PID: 334 (code=exited, status=0/SUCCESS)
Tasks: 0 (limit: 4915)
Memory: 0B
CPU: 0
CGroup: /system.slice/networking.service
-
zkuste:
sysctl -a |grep ipv6
lsmod |grep ip
jestli mate ipv6 stack zapnuty v kernelu.
-
Síť jsem nikdy neřešil, po čem se tam mám prosím koukat? První příkaz dá 415 řádků. Se sysctl jsem se snažil pracovat podle https://serverfault.com/questions/526008/ipv6-default-gateway-route-disappear-after-reboot. U druhého už je to méně, ale nepřijde mi to moc popisné. Mám sem vložit výstup?
-
Kdyby ale bylo IPv6 vypnuté na úrovni kernelu, ten příkaz na přidání routy by asi nepomohl, což z nějakého důvodu pomáhá, nebo i tak by pomohl?
-
Dejte sem konfiguraci /etc/network/interfaces (pripadne zamente IP, ale hure se to pak hleda).
-
Tohle mi dělalo taky. Řešil jsem to umístěním onoho nastavení výchozí route do nějakého skriptu, to ale není koncepční.
Jedním z důvodů, proč se výchozí route nenastaví, by mohlo být chybějící nebo chybně zpracované router advertisement od routeru.
-
Síť jsem nikdy neřešil, po čem se tam mám prosím koukat? První příkaz dá 415 řádků. Se sysctl jsem se snažil pracovat podle https://serverfault.com/questions/526008/ipv6-default-gateway-route-disappear-after-reboot. U druhého už je to méně, ale nepřijde mi to moc popisné. Mám sem vložit výstup?
pokud ukaze zaznamy typu:
root@hyp11:~# sysctl -a |grep ipv6 |grep disable
net.ipv6.conf.all.disable_ipv6 = 1 # 1 znamena ipv6 je vypnute, ale v kernelu je
net.ipv6.conf.all.disable_policy = 0
net.ipv6.conf.br0.disable_ipv6 = 1
net.ipv6.conf.br0.disable_policy = 0
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.default.disable_policy = 0
pokud neco ukaze znamena to ze v kernelu je zapnute.
ale pravda pokud vam pomuze manualne pridat routu, tak je zapnute.
jestli mate Network manager muze se mlatit s nastavenim interfaces v souboru /etc/network/interfaces
zkusil bych ho vypnout a disablovat v systemd.
pote pridat statickou konfiguraci do /etc/network/interfaces
iface eth0 inet6 static
address 2001:db8:1234:5::1:1
netmask 64
# Disabling auto-configuration
# autoconf 0
# The router is auto-configured and has no fixed address
# (accept_ra 1). If it had:
# gateway 2001:db8:1234:5::1
ale priznam se ipv6 uplne nemusim.
pripadne by network manager mohl neco hlasit do logu
journalctl -u NetworkManager.service
-
Děkuji všem moc za tipy.
Dejte sem konfiguraci /etc/network/interfaces (pripadne zamente IP, ale hure se to pak hleda).
Klidně veřejně přiznám, že je to server openalt.org, na tomhle zrovna není nic moc tajného. Soubor vypadá takto a adresář /etc/network/interfaces.d/ je prázdný:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
iface lo inet6 loopback
allow-hotplug ens3
iface ens3 inet static
address 83.167.252.162
netmask 255.255.255.0
gateway 83.167.252.1
dns-nameservers 83.31.33.19 80.79.16.5
iface ens3 inet6 static
address 2A01:0430:002E::162
netmask 64
gateway 2A01:0430:002E::1
Takto vypadá po rebootu (kdy IPv6 nefunguje) i po spuštění v předhozím příspěvku zmiňovaného příkazu (kdy už to pak funguje).
pokud ukaze zaznamy typu:
root@hyp11:~# sysctl -a |grep ipv6 |grep disable
net.ipv6.conf.all.disable_ipv6 = 1 # 1 znamena ipv6 je vypnute, ale v kernelu je
net.ipv6.conf.all.disable_policy = 0
net.ipv6.conf.br0.disable_ipv6 = 1
net.ipv6.conf.br0.disable_policy = 0
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.default.disable_policy = 0
pokud neco ukaze znamena to ze v kernelu je zapnute.
Všechno je 0, až na jedno:
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.ens3.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0
net.ipv6.conf.veth1.disable_ipv6 = 0
net.ipv6.conf.virbr0.disable_ipv6 = 1
net.ipv6.conf.virbr0-nic.disable_ipv6 = 0
jestli mate Network manager muze se mlatit s nastavenim interfaces v souboru /etc/network/interfaces
zkusil bych ho vypnout a disablovat v systemd.
pote pridat statickou konfiguraci do /etc/network/interfaces
iface eth0 inet6 static
address 2001:db8:1234:5::1:1
netmask 64
# Disabling auto-configuration
# autoconf 0
# The router is auto-configured and has no fixed address
# (accept_ra 1). If it had:
# gateway 2001:db8:1234:5::1
Pokud tomu alespoň trochu rozumím (snažím se tak odhadnout, snažím se spíš odvodit smysl těch nastavení a souborů z kontextu), právě tak je to zřejmě nastavené, viz výše.
journalctl -u NetworkManager.service
Žel -- No entries --
.
-
Tohle mi dělalo taky. Řešil jsem to umístěním onoho nastavení výchozí route do nějakého skriptu, to ale není koncepční.
Na Googlu jsem ještě mezitím našel, že někdo (z jiného důvodu) přidával do /etc/network/interfaces nějaké post-up
a podle všeho by tak měla jít přidat ta routa, abych to nemusel po rebootu volat ručně. Ale nevím, jaká je přesně syntaxe a nechci špatnou syntaxí přijít o síť úplně. Možná je to i ten zmiňovaný skript? Souhlasím s tím, že je to nekoncepční, ale nakonec to může být lepší než nic.
-
allow-hotplug ens3
iface ens3 inet static
address 83.167.252.162
netmask 255.255.255.0
gateway 83.167.252.1
dns-nameservers 83.31.33.19 80.79.16.5
iface ens3 inet6 static
address 2A01:0430:002E::162
netmask 64
up /sbin/ip -6 ro add default via 2A01:0430:002E::1 dev ens3
down /sbin/ip -6 ro del default via 2A01:0430:002E::1 dev ens3
systemd-networkd:
ens3.network
[Match]
Name=ens3
[Network]
Address=83.167.252.162/24
Address=2A01:0430:002E::162/64
DNS=83.31.33.19
DNS=80.79.16.5
[Route]
Gateway=83.167.252.1
Destination=0.0.0.0/0
[Route]
Gateway=2A01:0430:002E::1
Destination=::/0
-
allow-hotplug ens3
iface ens3 inet static
address 83.167.252.162
netmask 255.255.255.0
gateway 83.167.252.1
dns-nameservers 83.31.33.19 80.79.16.5
iface ens3 inet6 static
address 2A01:0430:002E::162
netmask 64
up /sbin/ip -6 ro add default via 2A01:0430:002E::1 dev ens3
down /sbin/ip -6 ro del default via 2A01:0430:002E::1 dev ens3
systemd-networkd:
ens3.network
[Match]
Name=ens3
[Network]
Address=83.167.252.162/24
Address=2A01:0430:002E::162/64
DNS=83.31.33.19
DNS=80.79.16.5
[Route]
Gateway=83.167.252.1
Destination=0.0.0.0/0
[Route]
Gateway=2A01:0430:002E::1
Destination=::/0
Tyjo, díky. Vypadá to, že toto nastavení v /etc/systemd/networkd/ens3.network pomohlo, ale /etc/network/interfaces jsem musel nechat původní. Dohromady s tím up/down /sbin/ip -6 ro ... to nefungovalo. Ještě to trochu procvičím, ale myslím, že je vyřešeno.
-
Bohužel, po dalším restartu už to opět nejede. S jednou drobnou změnou, ping zobrazí resolvnutou IPv6 a nepingá. Ale už se ani při dalším pokusu nezobrazuje žádné
connect: Síť není dostupná
ani nic podobného.
Vracím to tedy vše do původního stavu, i když je možné, že toto byl krok správným směrem.
-
Co se tyce toho sytemd-networkd, tak ja to pouzivam takto:
/etc/network/interfaces:
auto lo
iface lo inet loopback
systemctl disable networking
systemctl enable systemd-networkd
Zbytek sitove konfigurace jiz obsluhuje systemd-networkd. Akorat dualstack v jednom interface.network nepouzivam, mam pro ipv4 a ipv6 samostatne sitovky(vlany), tak je pripadne potreba si s tim pohrat, pokud bych tam mel nejakou chybku.
Pro kazde ladeni je vhodne pouzit, aby se odhalilo pripadne spatne nastavene routovani, cili chyba v konfigu:
ip -4 a
ip -4 ro
ip -6 a
ip -6 ro
Jeste bych upozornil, ze nekdy mi ipv6 sit nefungovala po restartu systemd-networkd, ale po rebootu to bylo ok.