Hur Networkmanager stoppas

Ibland händer det att administratören vill låta network.service sköta nätverket i stället för att låta NetworkManager göra det. Jag skulle pröva det enkla först att köra dessa kommandon som root.

# systemctl stop NetworkManager.service

# systemctl disable NetworkManager[.service] (eller utan .service på slutet)

# systemctl enable network.service

# systemctl start network.service

Men om det inte fungerar kan vi felsöka enligt nedanstående guide.

Fedoras nätverk sköts av Networkmanager, men eftersom den fortfarande inte klarar allt kan den behöva ersättas av det äldre network.service. Men att bara stoppa Networkmanager leder ofta till problem. Ett av dessa är när loggarna fylls av text som "RTNETLINK answers: File exists" och "Failed to start LSB: Bring up/down networking". Problemet kan vara att det i någon av konfigurationsfilerna placerade i /etc/sysconfig/network-scripts står "BOOTPROTO=dhcp". Detta triggar i gång dhclient, och leder till att network.service failar. Nedanstående bild exemplifierar hur en konfigurationsfil kan se ut när man kör network.service

 

Se alltså till att soppa NetworkManager.service på detta sätt:

# systemctl stop NetworkManager.service

Och för att NetworkManager inte ska starta vid en omstart

# systemctl disable NetworkManager.service

Men det är inte det enda som behöver påtgärdas. Man måste också ta bort länken från /etc/resolv.conf till /etc/NetworkMananger/NetworkManager.conf (eller /var/run/NetworkManager/resolv.conf) för annars kommer network.service att klaga, eller åtminstone kommer inte dns-tjänsten att fungera så du hittar inte ut från nätverket. Sen kanske man ska lägga till resolv.conf manuellt och starta om network.service så att den ska befolkas med dns-servrarna som är angivna i konfigurationsfilerna för nätverksenheterna. I mitt fall heter de ifcfg-eno1 ifcfg-eno2 osv, och de finns som vanligt i /etc/sysconfig/network-scripts

Det kanske allra vanligaste felet är ändock slarvfel i konfigurationsfilerna. Jag hade till exemepel skrivit IPADDRESS="10.0.0.30" i stället för IPADDR osv. Såna fel gör att network.service visserligen kan gå i gång, men inte tilldela enheten en ip-adress. Sen är det bara att aktivera network.service.

Och sen försöka starta med systemctl enable network.service Om något är galet kommer terminalen att spotta ur sig vad den anser krånglar. Från det kan man sedan jobba vidare med att försöka lösa problemet.

Det var några stolpar. En fråga som kan uppstå är varför inte använda NetworkManager? Ja, gör det om den klarar av behoven. Men det finns vissa fall då man måste stänga av den och ersätta med network.service då den inte klarar av allt, t ex vid virtualisering. Men den tiden är nog snart här. Det kan vara bra att öva på hur man t ex lägger en ip-adress genom kommandot nmcli. Här ger jag ett exempel. Det ska bli bestående, inte som med ip addr add 10.0.0.30/24 dev ens3 som bara består till nästa omstart.

# nmcli c modify ens3 ipv4.addresses 10.0.0.30/24

Nå't annat som ibland är nödvändigt att kunna är att lägga till en default route. Ponera att du till exempel inte kan nå internet från din dator. När du pingar en adress i ditt eget nätverk når du det och får svar. Däremot misslyckas du när du ska ut på internet. Kanske får du ett felmeddelande i terminalen som säger: "connect: Network is unreachable". Problemet är att du inte har en väg ut. När du testar får du ett alltså svar som nedan.

nmcli

Okej! Om du alltså har Networkmanager som din nätverkshanterare kan du testa följande. Du kommer att hamna i interaktivt läge och därifrån kunna lösa problemet. Så här kan det se ut:

nmcli3

Kortfattat kan vi säga att vi redigerar inställningarna för enheten enp2s0 och lägger till en väg ut (route) sparar samt avslutar med quit. Då ska du kunna se att du har fått en standardväg ut på internet. Den första nätverksadressen är ditt nät hemma med nätmasken sist (10.0.1.0/24). Har du ett annat nät skriver du givetvis det; t ex 192.168.1.0/24. Den sista nätverksadressen är den väg ut som din dator har. I ett hemmanätverk är det routerns interna nätverksadress. I mitt fall är det 10.0.1.1. För dig kan det vara 192.168.1.1 för att ta ett exempel.

nmcli2

Nu kan du pinga och få svar. Bra va! Det här har resulterat i en textfil som finns i /etc/sysconfig/network-scripts på en Red Hat-, Centos- eller Fedora-dator. Så här kan det som kommandona ovan spottar ur sig se ut.

nmcli4

Och nästa gång du startar datorn kommer du ut på internet! :)

Det går att göra mycket mer med nmcli, som alltså är ett terminalverktyg till Networkmanager. Det här ska bara ge en försmak. Med lite letande ska du kunna hitta guider som vägleder vidare.