Network configuration (Suomi)

From ArchWiki

Tässä artikkelissa kerrotaan kuinka verkkoyhteydet pystyy konfiguroimaan OSI kerroksella 3 ja ylöspäin. Ethernettiin ja langattomaan paneutudaan paremmin niiden alasivuilla.

Tarkista yhteys

Määrittääksesi vian yhteydessä, käy seuraava lista läpi ja varmista että kaikki tapaukset täyttyvät:

  1. Verkon käyttöliittymä on listattu ja otettu käyttöön. Muussa tapauksessa tarkista laitteen ajuri – katso ethernet ajuri tai langaton ajuri.
  2. Olet yhdistettynä verkkoon: kaapeli on kytketty kiinni tai olet yhdistettynä langattomasti LAN verkkoon.
  3. Sinun verkon käyttöliittymään on asetettu IP osoite.
  4. Reititystaulu on asetettu oikein.
  5. Voit pingata verkon sisäisen IP osoitteen (kuten sinun yhdyskäytävä).
  6. Voit pingata julkisen IP osoitteen (kuten 8.8.8.8, joka on Googlen DNS palvelin ja on kätevä osoite testailulle).
  7. Tarkista jotta voit selvittää verkkotunnuksia (kuten archlinux.org).

Ping

Pingausta käytetään yhteyden selvittämiseen palvelimelle.

$ ping www.example.com
PING www.example.com (93.184.216.34): 56(84) data bytes

64 bytes from 93.184.216.34: icmp_seq=0 ttl=56 time=11.632 ms

64 bytes from 93.184.216.34: icmp_seq=1 ttl=56 time=11.726 ms

64 bytes from 93.184.216.34: icmp_seq=2 ttl=56 time=10.683 ms

...

Jokaisesta vastauksesta pingaus apuväline printtaa samanlaisen rivin kuin ylhäällä esimerkissä on. Lisätietoa löytyy ping(8) manuaalista. Huomaa, että tietokoneet voivat olla konfiguroituja olemaan vastaamatta ICMP echo pyyntöihin. [1]

Jos et saa vastausta, oletusyhdyskäytävä tai ISP eli palveluntarjoaja saattaa olla ongelmana. Voit suorittaa traceroute-työkalun tarkistellaksesi polkua palvelimelle.

Huomautus: Saman tapaisen virheilmoituksen kuin ping: icmp open socket: Operation not permitted ilmetessä, kun ping-työkalua suoritetaan, yritä asentaa iputils paketti uudestaan.

Verkon hallinnointi

Muodostaaksesi verkkoyhteyden käy seuraavat askeleet läpi:

  1. Varmistu siitä, että verkon käyttöliittymä on listattuna ja otettuna käyttöön.
  1. Yhdistä verkkoon. Kiinnitä Ethernet kaapeli tai yhdistä langattomaan LAN verkkoon.
  1. Konfiguroi verkkoyhteys:
Huomautus: Asennuskuva käyttää systemd-resolved sekä systemd-networkd taustaprosesseja, jotka on konfiguroitu DHCP ohjelmassa langallisille ja langattomille verkkokäyttöliittymille.

net-tools

Arch Linux on merkinnyt vanhentuneeksi net-tools paketin korvatakseen sen iproute2 paketilla.[2]

Vanhentunut komento Korvaava komento
arp ip neighbor
ifconfig ip address, ip link
netstat ss
route ip route

Laajemmalle selvitykselle asiasta, katso tämä blogi päivitys.

iproute2

iproute2 on riippuvuutena base meta paketissa ja antaa ip(8) komentorivi käyttöliittymän, jolla hallitaan verkon käyttöliittymiä, IP osotteita ja polku taulun. Ole tietoinen kumminkin siitä, ettei ip säilytä asetuksia uudelleen käynnistyksessä. Konfiguroimiseen voidaan käyttää verkon hallintajärjestelmää tai voidaan automatisoida ip komentoja käyttämällä skriptejä ja systemd yksiköillä. Huomioi myös, että ip komennot voidaan yleensä lyhentää. Selkeyden vuoksi ne kumminkin tässä artikkelissa ovat pidemmässä muodossa.

Verkon käyttöliittymät

Oletukselta udev antaa nimiä verkon käyttöliittymille käyttäen Ennalta arvattavia verkko käyttölliittymien nimiä, joka antaa käyttöliittymien nimille etuliitteen en (wired/Ethernet), wl (wireless/WLAN), tai ww (WWAN).

Vinkki: Jos haluat vaihtaa itse käyttöliittymän nimen, katso #Vaihda käyttöliittymän nimeä ja #Palauta perinteisiin käyttöliittymän nimiin.

Verkon käyttöliittymien listaus

Langalliset ja langattomat käyttöliittymänimet saa listattua komennolla ls /sys/class/net tai komennolla ip link. Huomioi että lo on rengas laite ja sitä ei todellisuudessa käytetä yhteyksien muodostamiseen.

Langattomat laitenimet voidaan myös hakea käyttämällä iw dev. Katso myös Network configuration/Wireless#Get the name of the interface.

Jos sinun verkonkäyttöliittymää ei ole listalla varmista, että laitteen ajuri latautui onnistuneesti. Katso Network configuration/Ethernet#Device driver tai Network configuration/Wireless#Device driver.

Verkkokäyttöliittymien aktivointi ja käytöstä poistaminen

Verkkokäyttöliittymät voidaan ottaa pois käytöstä tai laittaa takaisin käyttöön komennolla ip link set käyttöliittymä up|down, katso ip-link(8).

Tarkistaaksesi käyttöliittymän status eth0:

$ ip link show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state DOWN mode DEFAULT qlen 1000
...

UP kohdassa <BROADCAST,MULTICAST,UP,LOWER_UP> indikoi käyttöliittymän toiminnasta, ei tuo myöhempi ilmenevistä state DOWN.

Huomautus: Jos oletus reitti on käyttöliittymän eth0 kautta, sen alasottaminen poistaa myös reitin ja sen tuominen takaisin ylös ei automaattisesti luo uudelleen oletus reittiä. Katso #Reititystaulu sen uudelleen luonnille.

Staattinen IP osoite

Staattinen IP osoite voidaan konfiguroida kaikkein tavallisimmilla verkonhallintajärjestelmillä ja myös dhcpcd:n avulla.

Staattisen IP osoitteen konfiguroimiseen manuaalisesti, lisää IP osoite kuten kuvattu #IP osoitteet kohdassa, pohjusta reititystaulu ja konfiguroi DNS palvelimet.

IP osoitteet

IP osoitteita hallitaan käyttämällä komentoa ip-address(8).

Listaa IP osoitteet:

$ ip address show

Lisää IP osoite käyttöliittymään:

# ip address add osoite/prefix_len broadcast + dev käyttöliittymä
Huomioi että:
Huomautus: Varmista että manuaalisesti annetut IP osoitteet eivät ole ristiriidassa DHCP:llä annetujen osoitteiden kanssa.

Poista IP osoite käyttöliittymästä:

# ip address del osoite/prefix_len dev käyttöliittymä

Poista kaikki osoitteet jotka vastaavat kriteerejä, eli jostain erityisestä käyttöliittymästä:

# ip address flush dev käyttöliittymä
Vinkki: IP osoitteet voidaan laskea ipcalc:in avulla (ipcalc).

Reititystaulu

reititystaulua käytetään määrittämään jos yhteys IP osoitteeseen suoraan on saatavissa tai mitä yhdyskäytävää (reititin) tulisi käyttää. Jos mikään muu reitti ei täsmää IP osoitetta, oletus yhdyskäytävää käytetään.

Reititystaulua hallitaan komennolla ip-route(8).

PREFIX on joko CIDR notaatio tai default oletus yhdyskäytävälle.

Listaa IPv4 reitit:

$ ip route show

Listaa IPv6 reitit:

$ ip -6 route

Lisää reitti:

# ip route add PREFIX via osoite dev käyttöliittymä

Poista reitti:

# ip route del PREFIX via osoite dev käyttöliittymä

DHCP

DHCP (lyhenne sanoista Dynamic Host Configuration Protocol) palvelin antaa asiakasohjelmalle dynaamisen IP osoitteen, aliverkkopeitteen, oletus yhdyskäytävän IP osoitteen ja mahdollisesti myös DNS nimi palvelimen.

DHCP käyttöä varten tarvitaan DHCP palvelin sisäisestä verkosta ja DHCP asiakasohjelma:

Asiakasohjelma Paketti Archiso Huomioitavaa Systemd yksiköt
dhcpcd dhcpcd Kyllä DHCP, DHCPv6, ZeroConf, static IP dhcpcd.service, dhcpcd@käyttäjäliittymä.service
ISC dhclient dhclient Kyllä DHCP, DHCPv6, BOOTP, static IP dhclient@käyttäjäliittymä.service
Huomautus:
  • Kahta DHCP asiakasohjelmaa ei pitäisi käyttää samanaikaisesti.
  • Erillisen DHCP asiakasohjelman sijasta voi myös käyttää verkonhallintajärjestelmää, joista osalla on sisäänrakennettu DHCP asiakasohjelma.
  • Vaihtoehtoisesti, iwd sisältää sisäänrakennetun DHCP asiakasohjelman, jota voidaan käyttää joissakin konfiguraatioissa: iwd#Enable built-in network configuration.
Vinkki:
  • Voit tarkistaa mikäli DHCP palvelin on käynnissä paketilla dhcping.
  • Kun IP:n muodostaminen on vielä prosessissa, jotain samanlaista voi suorittaa watch -n 1 ping -c 1 archlinux.org.

Palvelimet

Palvelin Paketti IPv4 IPv6 GUI Käyttäjäliittymät Varaston takapää(t) Huomioitavaa
dhcpd dhcp Kyllä Kyllä Glass-ISC-DHCP ? Tiedosto
dnsmasq dnsmasq Kyllä Kyllä Ei ? Tiedosto Myös DNS, PXE ja TFTP
Kea kea Kyllä Kyllä Kea-Anterius (Kokeellinen) REST, RADIUS ja NETCONF Tiedosto, MySQL, PostgreSQL ja Cassandra Myös DNS

Verkonhallintajärjestelmät

Verkonhallintajärjestelmä mahdollistaa verkkoyhteyksien asetusten hallinnan niin sanotuissa verkkoprofiileissa helpottaakseen verkkojen vaihtelua.

Huomautus: Vaihtoehtoja on monia, mutta muista että jokainen on molemmin puoli pois sulkeva; kahta taustaprosessia ei saa suorittaa samaan aikaan.
Verkonhallintajärjestelmä GUI Archiso [3] CLI työkalut PPP tuki
(esim 3G modeemi)
DHCP asiakasohjelma Systemd yksiköt
ConnMan 8 epävirallinen Ei connmanctl(1) Kyllä (ofonoAUR kanssa) sisäinen connman.service
netctl 2 epävirallinen Ei netctl(1), wifi-menu Kyllä dhcpcd tai dhclient netctl-ifplugd@interface.service, netctl-auto@interface.service
NetworkManager Kyllä Ei nmcli(1), nmtui(1) Kyllä sisäinen tai dhclient NetworkManager.service
systemd-networkd Ei Kyllä (base) networkctl(1) Ei sisäinen systemd-networkd.service, systemd-resolved.service

Aseta isäntänimi

Isäntänimi on yksilöllinen nimi luotu tunnistamaan laite verkossa, joka on konfiguroitu tiedostossa /etc/hostname. katso hostname(5) ja hostname(7) yksityiskohdille. Tiedosto voi sisältää järjestelmän verkkotunnuksen, jos yhtään. Isäntänimen asettamiseksi, muokkaa /etc/hostname sisältääksesi yhden rivin isäntänimeni:

/etc/hostname
isäntänimeni
Vinkki: Isäntänimen valitsemiselle, katso RFC 1178.

Vaihtoehtoisesti käyttäen hostnamectl(1):

# hostnamectl set-hostname isäntänimeni

Väliaikaisesti asettaaksesi isäntänimen (uudelleen käynnistykseen saakka), käytä hostname(1) paketista inetutils:

# hostname isäntänimeni

Laittaaksesi "sievän" isäntänimen ja muuta koneen metadataa, katso machine-info(5).

Paikallinen isäntänimen resoluutio

myhostname Name Service Switch (NSS) systemd moduuli tarjoaa paikallisen isäntänimen resoluution ilman muokkausta tiedostossa /etc/hosts (hosts(5)). Se on aktivoituna oletukselta.

Jotkin asiakasohjelmat voivat kumminkin silti luottaa /etc/hosts, katso [4] [5] esimerkeille.

Konfiguroidaksesi hosts tiedostoa, lisää seuraavat rivit /etc/hosts:

127.0.0.1        localhost
::1              localhost
127.0.1.1        isäntänimeni.localdomain        isäntänimeni
Huomautus: Isäntänimien/peitenimien järjestys joka seuraa IP osoitetta /etc/hosts on merkityksellinen. Ensimmäistä merkkijonoa pidetään canonical isäntänimenä ja listään isäntä domainilla, missä domaini komponentit erotellaan toisistaan pisteellä (eli .localdomain yllä). Kaikkia muita peitenimiä samalla rivillä pidetään peiteniminä (engl. alias). Katso hosts(5) lisätiedolle.

Tämän seurauksena järjestelmä selvittää molempiin kirjauksiin:

$ getent hosts
127.0.0.1       localhost
127.0.0.1       localhost
127.0.1.1       isäntänimeni.localdomain isäntänimeni

Pysyvällä IP osoitteella olevassa järjestelmässä tulisi käyttää tätä pysyvää IP osoitetta 127.0.1.1 sijasta.

Paikallisen verkon isäntänimen resoluutio

Liittääkseen kone LAN verkkoon isäntänimen kautta voidaan:

  • muokata /etc/hosts tiedostoa jokaiselle koneelle LAN verkossa, katso hosts(5)
  • asettaa DNS palvelin selvittämään isäntänimen ja pistämällä LAN laitteet käyttämään sitä (esimerkiksi #DHCP:n kautta)
  • tai helpolla tavalla: käyttää Zeroconf palvelua:
    • Isäntänimen resoluutio Microsoftin NetBIOS:sin kautta. Samba Linuxissa hoitaa saman. Tämä tarvitsee vain nmb.service. Tietokoneet, joissa on Windows, macOS, tai Linux ja nmb pyörimässä, löytävät tämän koneen.
    • Isäntänimen resoluutio mDNS:sän kautta. Tulee joko nss_mdns Avahi:n kautta (katso Avahi#Hostname resolution asetuksen varalta) tai systemd-resolved:in kautta. Tietokoneet, joissa on macOS tai Linux Avahi tai systemd-resolved pyörimässä, pystyvät löytämään tämän koneen. Vanhempi Win32 API ei tue mDNSää, joka voi estää pääsyn joiltain vanhoilta Windows ohjelmilta.

Vinkkejä ja konsteja

Vaihda käyttöliittymän nimeä

Huomautus: Kun nimikaavaa muutetaan, pitää myös päivittää kaikki verkkoon liittyvät konfiguraatio tiedostot ja itsetehdyt systemd yksikkötiedostot vastaamaan muutosta.

Laitteen nimi voidaan vaihtaa määrittämällä sen nimi manuaalisesti udev-rule:n avulla. Esimerkiksi:

/etc/udev/rules.d/10-network.rules
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="aa:bb:cc:dd:ee:ff", NAME="net1"
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="ff:ee:dd:cc:bb:aa", NAME="net0"

Nämä säännöt tulevat käyttöön automaattisesti bootatessa.

Muutama huomioitava asia:

  • Jos halutaan esittää MAC osoite jokaisesta kortista, käytä tätä komentoa: cat /sys/class/net/laitteen_nimi/address
  • Muista käyttää pieniä kirjaimia heksaluvussa udev säännöissä. Se ei pidä isoista kirjaimista.

Jos verkkokortilla on dynaaminen MAC osoite, voidaan käyttää DEVPATH muuttujaa, esimerkiksi:

/etc/udev/rules.d/10-network.rules
SUBSYSTEM=="net", DEVPATH=="/devices/platform/wemac.*", NAME="int"
SUBSYSTEM=="net", DEVPATH=="/devices/pci*/*1c.0/*/net/*", NAME="en"
DEVPATH kaikista sillä hetkellä liitetyistä korteista, katso mihin symlinks polussa /sys/class/net/ johtaa. Esimerkiksi:
file /sys/class/net/*
/sys/class/net/enp0s20f0u4u1: symbolic link to ../../devices/pci0000:00/0000:00:14.0/usb2/2-4/2-4.1/2-4.1:1.0/net/enp0s20f0u4u1
/sys/class/net/enp0s31f6:     symbolic link to ../../devices/pci0000:00/0000:00:1f.6/net/enp0s31f6
/sys/class/net/lo:            symbolic link to ../../devices/virtual/net/lo
/sys/class/net/wlp4s0:        symbolic link to ../../devices/pci0000:00/0000:00:1c.6/0000:04:00.0/net/wlp4s0

Laitteen polun pitäisi vastata sekä uutta että vanhaa laitteen nimeä, sillä se sääntö voidaan suorittaa useammin kuin vain kerran bootatessa. Esimerkiksi, toisessa säännössä, "/devices/pci*/*1c.0/*/net/enp*" olisi väärin, koska se lopettaa hakemisen kun nimi on vaihdettu en. Vain järjestelmän oletus-sääntö pyörähtää toisen kerran, aiheuttaen nimen muutoksen takaisin kuten esimerkiksi enp1s0.

Jos käytetään USB verkkolaitetta ( kuten Android puhelimen tethering), jolla on dynaaminen MAC osoite ja halutaan myös käyttää muita USB portteja, voitaisiin ennemmin käyttää sääntöä, joka vastaa riippuen tavarantoimittajasta tai tuotteen ID:stä:

/etc/udev/rules.d/10-network.rules
SUBSYSTEM=="net", ACTION=="add", ATTRS{idVendor}=="12ab", ATTRS{idProduct}=="3cd4", NAME="net2"

Testatakseen sääntöjä, ne voidaan käynnistää suoraan käyttäjätilasta, esimerkiksi udevadm --debug test /sys/class/net/* avulla. Ensin pitää muistaa ottaa alas käyttöliittymä, jota ollaan nimeämässä (esim. ip link set enp1s0 down).

Huomautus: Kun valitaan staattisia nimiä, nimiä jotka vastaavat tyyliä "ethX" ja "wlanX" pitäisi välttää, sillä tämä saattaa johtaa kilpailulliseen tilaan kernelin ja udevin välillä boottauksen aikana. Sen sijaan, on parempi käyttää käyttöliittymän nimiä, joita kerneli ei käytä oletukselta, esim.: net0, net1, wifi0, wifi1. Enemmän tietoa löytyy systemd:n dokumentaatiosta.

Palauta perinteisiin käyttöliittymän nimiin

Jos perinteisemmät käyttöliittymänimet kuten eth0 ovat parempia omaan käyttöön, ennalta arvattavat nimet voidaan poistaa käytöstä peittämällä udev sääntö:

# ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules

Vaihtoehtoisesti, lisää net.ifnames=0 kernelin parametreihin.

Kannan tutkiminen

ss on työkalu verkkoporttien tutkimiseen ja on osana iproute2 pakettia. Sillä on samallainen toiminnallisuus verraten vanhentuneeseen netstat työkaluun.

Yleisiä käyttökohteita ovat:

Näytä kaikki TCP Kannat palvelunimillä:

$ ss -at

Näytä kaikki TCP Kannat porttien numeroilla:

$ ss -atn

Näytä kaikki UDP Kannat:

$ ss -au

Lisätietoa löytyy ss(8) manuaalisivulta.

Vianmääritys

Katso myös