Network configuration (Suomi) - ArchWiki

Jump to content
From ArchWiki

Aiheeseen liittyen

- Network Debugging
- Firewalls
- Internet sharing
- Router

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:

1. - staattinen IP osoite

1. - dynaaminen IP osoite: käytä DHCP:tä

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ä:

  - osoite annetaan CIDR notaationa täydentämään aliverkonpeitettä
  - `+` on erikoismerkki joka pakottaa `ip`:n päättelemään aliverkonpeitteen lähettävän osoitteen IP osoitteesta.

  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

- Linuxin verkon ylläpitäjän käsikirja
- Debian referenssi: Verkon pohjustus
- RHEL7: Verkkotyöskentelyn käsikirja
- Linux kodin verkkotyöskentely
- Linux verkkotyöskentely pinon valvominen ja säätö: Datan vastaanottaminen
- Linux verkkotyöskentely pinon valvominen ja säätö: Datan lähettäminen
- Paketin matkan jäljittäminen käyttäen tracepointteja, perf ja eBPF

Category:

- Network configuration (Suomi)