Innehållsförteckning
|
Tips |
|---|---|
|
För en modern Debian-specifik guide till nätverk, läs The Debian Administrator's Handbook - Configuring the Network. |
Låt oss gå igenom den grundläggande nätverksinfrastrukturen i ett modernt Debian-system.
Tabell 5.1. Lista över verktyg för nätverkskonfiguration
| paket | popcon | storlek | typ | beskrivning |
|---|---|---|---|---|
network-manager
|
V:418, I:478 | 7809 | config::NM | NetworkManager (daemon): hanterar nätverket automatiskt |
network-manager-gnome
|
V:58, I:212 | 18 | config::NM | NetworkManager (GNOME-frontend) |
netplan.io
|
V:1, I:7 | 340 | config::NM+nätverk | Netplan (generator): Enhetligt, deklarativt gränssnitt till NetworkManager och systemd-networkd backends |
ifupdown
|
V:599, I:973 | 200 | config::ifupdown | standardiserat verktyg för att ta upp och ner nätverket (Debian-specifikt) |
isc-dhcp-client
|
V:179, I:749 | 2884 | config::låg nivå | DHCP-klient |
pppoeconf
|
V:0, I:4 | 174 | config::hjälpare | konfigurationshjälp för PPPoE-anslutning |
wpasupplicant
|
V:386, I:521 | 3900 | config::hjälpare | klientstöd för WPA och WPA2 (IEEE 802.11i) |
wpagui
|
V:0, I:1 | 783 | config::hjälpare | Qt GUI-klient för wpa_supplicant |
wireless-tools
|
V:187, I:259 | 292 | config::hjälpare | verktyg för att manipulera Linux Wireless Extensions |
iw
|
V:36, I:482 | 332 | config::hjälpare | verktyg för konfiguration av trådlösa Linux-enheter |
iproute2
|
V:748, I:983 | 3901 | config::iproute2 | iproute2, IPv6 och annan avancerad
nätverkskonfiguration: ip(8), tc(8),
etc |
iptables
|
V:344, I:636 | 2410 | config::Netfilter | administrationsverktyg för paketfiltrering och NAT(Netfilter) |
nftables
|
V:186, I:840 | 191 | config::Netfilter | administrationsverktyg för paketfiltrering och NAT(Netfilter)(efterföljare till {ip,ip6,arp,eb}tables) |
iputils-ping
|
V:188, I:997 | 188 | test | testa nätverkstillgängligheten för en fjärrvärd via värdnamn eller IP-adress(iproute2) |
iputils-arping
|
V:1, I:19 | 53 | test | testa nätverkets nåbarhet för en fjärrvärd som anges av ARP-adressen |
iputils-tracepath
|
V:2, I:22 | 50 | test | spåra nätverkssökvägen till en fjärrvärd |
ethtool
|
V:93, I:255 | 1068 | test | visa eller ändra inställningar för Ethernet-enheter |
mtr-tiny
|
V:4, I:40 | 181 | test::låg nivå | spåra nätverkssökvägen till en fjärrvärd (curses) |
mtr
|
V:3, I:41 | 230 | test::låg nivå | spåra nätverkssökvägen till en fjärrvärd (curses och GTK) |
gnome-nettool
|
V:0, I:10 | 2480 | test::låg nivå | verktyg för gemensam nätverksinformationshantering (GNOME) |
nmap
|
V:24, I:189 | 4607 | test::låg nivå | network mapper / portskanner (Nmap, konsol) |
tcpdump
|
V:15, I:168 | 1343 | test::låg nivå | analysator för nätverkstrafik(Tcpdump, konsol) |
wireshark
|
V:3, I:41 | 11260 | test::låg nivå | analysprogram för nätverkstrafik (Wireshark, GTK) |
tshark
|
V:2, I:23 | 431 | test::låg nivå | nätverkstrafikanalysator (konsol) |
tcptrace
|
V:0, I:1 | 407 | test::låg nivå | skapa en sammanfattning av anslutningarna från
tcpdump-utdata |
ntopng
|
V:0, I:0 | 15604 | test::låg nivå | visa nätverksanvändning i webbläsaren |
dnsutils
|
I:186 | 22 | test::låg nivå | nätverksklienter som levereras med BIND:
nslookup(8), nsupdate(8),
dig(8) |
dlint
|
V:0, I:2 | 51 | test::låg nivå | kontrollera DNS-zoninformation med hjälp av namnserveruppslagningar |
dnstracer
|
V:0, I:1 | 59 | test::låg nivå | spåra en kedja av DNS-servrar till källan |
Värdnamnsupplösningen stöds för närvarande även av NSS-mekanismen (Name Service Switch). Flödet för denna upplösning är följande.
Filen "/etc/nsswitch.conf" med en stanza som
"hosts: files dns" dikterar ordningen för upplösning av
värdnamn. (Detta ersätter den gamla funktionaliteten i
"order"-strofen i "/etc/host.conf")
Metoden files anropas först. Om värdnamnet finns i filen
"/etc/hosts" returnerar den alla giltiga adresser för det
och avslutas. (Filen "/etc/host.conf" innehåller
"multi on")
Metoden dns anropas. Om värdnamnet hittas genom en
förfrågan till DNS (Internet
Domain Name System), som identifieras i filen
"/etc/resolv.conf", returneras alla giltiga adresser för
det och metoden avslutas.
En vanlig arbetsstation kan installeras med värdnamnet inställt på
t.ex."host_name" och det valfria domännamnet inställt
på en tom sträng. Då ser "/etc/hosts" ut på följande
sätt.
127.0.0.1 localhost
127.0.1.1 host_name
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Varje rad börjar med en IP-adress och följs sedan av det tillhörande värdnamnet.
IP-adressen 127.0.1.1 i den andra raden i det här
exemplet kanske inte finns på några andra Unix-liknande system. Debian Installer skapar den här posten för
ett system utan en permanent IP-adress som en lösning för vissa program
(t.ex. GNOME), vilket dokumenteras i felet
#719621.
Host_name motsvarar det hostname som definieras i
"/etc/hostname" (se Avsnitt 3.7.1, ”Värdnamnet”).
För ett system med en permanent IP-adress ska den permanenta IP-adressen
användas här i stället för 127.0.1.1.
För ett system med en permanent IP-adress och ett fullständigt kvalificerat domännamn (FQDN) som tillhandahålls av Domain Name System (DNS), bör det kanoniska host_name.domain_name användas i stället för bara host_name.
"/etc/resolv.conf" är en statisk fil om paketet
resolvconf inte är installerat. Om det är installerat är
det en symbolisk länk. I vilket fall som helst innehåller den information
som initierar resolverrutinerna. Om DNS hittas på IP=
"192.168.11.1" innehåller den följande.
nameserver 192.168.11.1
Paketet resolvconf gör denna
"/etc/resolv.conf" till en symbolisk länk och hanterar
dess innehåll automatiskt med hjälp av hook-skript.
För en PC-arbetsstation i en typisk adhoc LAN-miljö kan värdnamnet lösas via
Multicast DNS (mDNS) utöver de
grundläggande fil- och dns-metoderna.
Avahi tillhandahåller ett ramverk för Multicast DNS Service Discovery på Debian.
Det motsvarar Apple Bonjour / Apple Rendezvous.
Instickspaketet libnss-mdns tillhandahåller
värdnamnsupplösning via mDNS för GNU Name Service Switch
(NSS)-funktionaliteten i GNU C Library (glibc).
Filen "/etc/nsswitch.conf" bör ha en strof som
"hosts: files mdns4_minimal [NOTFOUND=return] dns" (se
/usr/share/doc/libnss-mdns/README.Debian för andra
konfigurationer).
Ett värdnamn som har pseudotoppdomänen ".local" som suffix löses genom att skicka ett
mDNS-frågemeddelande i ett multicast UDP-paket med IPv4-adressen
"224.0.0.251" eller IPv6-adressen
"FF02::FB".
|
Notera |
|---|---|
|
Utbyggnaden av generiska toppdomäner (gTLD) i domännamnssystemet pågår. Se upp för namnkollisioner när du väljer ett domännamn som bara används inom LAN. |
|
Notera |
|---|---|
|
Användning av paket som |
Systemd använder"Predictable Network Interface
Names", t.ex. "enp0s25".
Låt oss påminna om de 32-bitars IPv4-adressområden i varje klass som enligt rfc1918 är reserverade för användning i lokala nätverk (LAN). Dessa adresser kommer garanterat inte i konflikt med några adresser på själva Internet.
|
Notera |
|---|---|
|
IP-adresser som skrivs med kolon är IPv6-adresser, t.ex. ": |
Tabell 5.2. Lista över adressintervall för nätverk
| Klass | nätverksadresser | nätmask | nätmask /bitar | antal subnät |
|---|---|---|---|---|
| A | 10.x.x.x | 255.0.0.0 | /8 | 1 |
| B | 172.16.x.x - 172.31.x.x | 255.255.0.0 | /16 | 16 |
| C | 192.168.0.x - 192.168.255.x | 255.255.255.0 | /24 | 256 |
|
Notera |
|---|---|
|
Om en värd tilldelas en av dessa adresser får värden inte komma åt Internet direkt utan måste komma åt Internet via en gateway som fungerar som proxy för enskilda tjänster eller som utför NAT (Network Address Translation). Bredbandsroutern utför vanligtvis NAT för LAN-miljön för konsumenter. |
Även om de flesta maskinvaruenheter stöds av Debian-systemet, finns det vissa nätverksenheter som kräver DFSG:s non-free firmware för att stödjas. Vänligen se Avsnitt 9.10.5, ”Drivrutiner för hårdvara och firmware”.
Nätverksgränssnitt initialiseras vanligtvis i
"networking.service" för
lo-gränssnittet och
"NetworkManager.service" för andra gränssnitt på moderna
Debian-skrivbordssystem under systemd.
Debian kan hantera nätverksanslutningen via en daemonprogramvara för hantering, t.ex. NetworkManager (NM) (network-manager och tillhörande paket).
De har egna GUI- och kommandoradsprogram som användargränssnitt.
De levereras med sin egen daemon som backend-system.
De gör det enkelt att ansluta ditt system till Internet.
De gör det enkelt att hantera konfigurationen av trådbundna och trådlösa nätverk.
De gör det möjligt för oss att konfigurera nätverket oberoende av det äldre
paketet ifupdown.
|
Notera |
|---|---|
|
Använd inte dessa verktyg för automatisk nätverkskonfiguration för servrar. De är i första hand avsedda för mobila användare på bärbara datorer. |
Dessa moderna nätverkskonfigurationsverktyg måste konfigureras på rätt sätt
för att undvika konflikter med det äldre ifupdown-paketet
och dess konfigurationsfil "/etc/network/interfaces".
Officiella dokumentationer för NM på Debian finns i
"/usr/share/doc/network-manager/README.Debian".
I huvudsak görs nätverkskonfigurationen för desktop på följande sätt.
Gör så att skrivbordsanvändaren, t.ex. foo, tillhör
gruppen "netdev" genom följande (alternativt görs det
automatiskt via D-bus i moderna
skrivbordsmiljöer som GNOME och KDE).
$ sudo usermod -a -G netdev foo
Håll konfigurationen av "/etc/network/interfaces" så
enkel som i följande exempel.
auto lo iface lo inet loopback
Starta om NM genom att göra följande.
$ sudo systemctl restart NetworkManager
Konfigurera ditt nätverk via GUI.
|
Notera |
|---|---|
|
Endast gränssnitt som inte finns listade
i " |
|
Tips |
|---|---|
|
Om du vill utöka NM:s nätverkskonfigurationsfunktioner, sök efter lämpliga
plugin-moduler och tilläggspaket såsom
|
Under systemd kan nätverket konfigureras i
/etc/systemd/network/ istället. Se
systemd-resolved(8), resolved.conf(5)
och systemd-networkd(8).
Detta möjliggör modern nätverkskonfiguration utan GUI.
En DHCP-klientkonfiguration kan sättas upp genom att skapa
"/etc/systemd/network/dhcp.network". T.ex:
[Match] Name=en* [Network] DHCP=yes
En statisk nätverkskonfiguration kan ställas in genom att skapa
"/etc/systemd/network/static.network". T.ex:
[Match] Name=en* [Network] Address=192.168.0.15/24 Gateway=192.168.0.1
Den moderna nätverkskonfigurationen för molnet kan använda paketen
cloud-init och netplan.io (se Avsnitt 3.7.4, ”Initialisering av molnsystem”).
Paketet netplan.io stöder
systemd-networkd och NetworkManager
som backends för nätverkskonfiguration och möjliggör deklarativ
nätverkskonfiguration med hjälp av YAML-data.
När du ändrar YAML:
Kör kommandot "netplan generate" för att generera all
nödvändig backendkonfiguration från YAML.
Kör kommandot "netplan apply" för att tillämpa den
genererade konfigurationen på backend.
Se "Netplan-dokumentation",
netplan(5), netplan-generate(8) och
netplan-apply(8).
Se även "Cloud-init-dokumentation " (särskilt
"Konfigurationskällor " och
"Netplan Passthrough") för hur
cloud-init kan integrera
netplan.io-konfigurationen med alternativa datakällor.
En DHCP-klientkonfiguration kan ställas in genom att skapa en datakällfil
"/etc/netplan/50-dhcp.yaml":
network:
version: 2
ethernets:
all-en:
match:
name: "en*"
dhcp4: true
dhcp6: true
En statisk nätverkskonfiguration kan ställas in genom att skapa en
datakällfil "/etc/netplan/50-static.yaml":
network:
version: 2
ethernets:
eth0:
addresses:
- 192.168.0.15/24
routes:
- to: default
via: 192.168.0.1
För nätverkskonfiguration på låg nivå under Linux använder du iproute2-programmen(ip(8), ...)
.
Iproute2-kommandona erbjuder kompletta möjligheter till nätverkskonfiguration på låg nivå. Här är en översättningstabell från föråldrade net-tools-kommandon till de nya kommandona iproute2 etc.
Tabell 5.3. Översättningstabell från föråldrade net-tools-kommandon
till nya iproute2-kommandon
| föråldrade nätverktyg | ny iproute2 etc. | manipulation |
|---|---|---|
ifconfig(8) |
ip-adress |
protokolladress (IP eller IPv6) på en enhet |
rutt(8) |
ip-väg |
post i routningstabell |
arp(8) |
ip grann |
ARP- eller NDISC-cachepost |
ipmaddr |
ip maddr |
multicast-adress |
iptunnel |
ip-tunnel |
tunnel över IP |
nameif(8) |
ifrename(8) |
namnge nätverksgränssnitt baserat på MAC-adresser |
mii-verktyg(8) |
ethtool(8) |
Inställningar för Ethernet-enheter |
Se ip(8) och Linux Advanced Routing &
Traffic Control.
Du kan använda nätverkskommandon på låg nivå som följer på ett säkert sätt eftersom de inte ändrar nätverkskonfigurationen.
Tabell 5.4. Lista över nätverkskommandon på låg nivå
| kommando | beskrivning |
|---|---|
ip addr visa |
visa länk- och adressstatus för aktiva gränssnitt |
rutt -n |
visa alla routningstabeller i numeriska adresser |
ip route visa |
visa alla routningstabeller i numeriska adresser |
arp |
visa det aktuella innehållet i ARP-cachetabellerna |
ip grann |
visa det aktuella innehållet i ARP-cachetabellerna |
plog |
visa logg för ppp-daemon |
ping yahoo.com |
kontrollera Internetanslutningen till "yahoo.com" |
whois yahoo.com |
kontrollera vem som registrerade "yahoo.com" i
domändatabasen |
traceroute yahoo.com |
spåra Internetanslutningen till "yahoo.com" |
tracepath yahoo.com |
spåra Internetanslutningen till "yahoo.com" |
mtr yahoo.com |
spåra Internetanslutningen till "yahoo.com" (upprepade
gånger) |
dig [@dns-server.se] exempel.se [{a|mx|any}] |
kontrollera DNS-posterna för
"exempel.se" med "dns-server.com" för
en "a"-, "mx"- eller
"any"-post |
iptables -L -n |
kontrollera paketfilter |
netstat -a |
hitta alla öppna portar |
netstat -l --inet |
hitta lyssningsportar |
netstat -ln --tcp |
hitta lyssnande TCP-portar (numerisk) |
dlint exempel.com |
kontrollera DNS-zoninformation för "exempel.se" |
|
Tips |
|---|---|
|
En del av dessa nätverkskonfigurationsverktyg på låg nivå finns i
" |
Generisk nätverksoptimering ligger utanför ramen för denna dokumentation. Jag tar endast upp ämnen som är relevanta för konsumentanslutningen.
Tabell 5.5. Lista över verktyg för nätverksoptimering
| paket | popcon | storlek | beskrivning |
|---|---|---|---|
iftop
|
V:6, I:91 | 93 | visa information om bandbreddsanvändning på ett nätverksgränssnitt |
iperf
|
V:2, I:37 | 427 | Verktyg för mätning av bandbredd för Internetprotokoll |
ifstat
|
V:0, I:6 | 53 | InterFace STATistics övervakning |
bmon
|
V:2, I:20 | 141 | bärbar bandbreddsövervakare och hastighetsestimator |
ethstatus
|
V:0, I:2 | 41 | skript som snabbt mäter nätverksenhetens genomströmning |
bing
|
V:0, I:0 | 80 | empirisk stokastisk bandbreddstestare |
bwm-ng
|
V:1, I:10 | 95 | liten och enkel konsolbaserad bandbreddsmonitor |
ethstats
|
V:0, I:0 | 21 | konsolbaserad Ethernet-statistikmonitor |
ipfm
|
V:0, I:0 | 78 | verktyg för analys av bandbredd |
NM ställer normalt in optimal Maximum Transmission Unit (MTU) automatiskt.
I vissa fall kanske du vill ställa in MTU manuellt efter att ha
experimenterat med ping(8) med alternativet "-M
do" för att skicka ett ICMP-paket med olika datapaketstorlekar.
MTU är den maximala efterföljande datapaketstorleken utan IP-fragmentering
plus 28 byte för IPv4 och plus 48 byte för IPv6. I följande exempel är MTU
för en IPv4-anslutning 1460 och MTU för en IPv6-anslutning 1500.
$ ping -4 -c 1 -s $((1500-28)) -M do www.debian.org PING (149.20.4.15) 1472(1500) bytes of data. ping: local error: message too long, mtu=1460 --- ping statistics --- 1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms $ ping -4 -c 1 -s $((1460-28)) -M do www.debian.org PING (130.89.148.77) 1432(1460) bytes of data. 1440 bytes from klecker-misc.debian.org (130.89.148.77): icmp_seq=1 ttl=50 time=325 ms --- ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 325.318/325.318/325.318/0.000 ms $ ping -6 -c 1 -s $((1500-48)) -M do www.debian.org PING www.debian.org(mirror-csail.debian.org (2603:400a:ffff:bb8::801f:3e)) 1452 data bytes 1460 bytes from mirror-csail.debian.org (2603:400a:ffff:bb8::801f:3e): icmp_seq=1 ttl=47 time=191 ms --- www.debian.org ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 191.332/191.332/191.332/0.000 ms
Denna process är Path MTU (PMTU)
discovery(RFC1191) och kommandot
tracepath(8) kan automatisera detta.
Tabell 5.6. Grundläggande riktlinjer för det optimala MTU-värdet
| nätverksmiljö | MTU | motivering |
|---|---|---|
| Uppringd länk (IP: PPP) | 576 | standard |
| Ethernet-länk (IP: DHCP eller fast) | 1500 | standard och förval |
Utöver dessa grundläggande riktlinjer bör du känna till följande.
All användning av tunneleringmetoder (VPN etc.) kan minska optimal MTU ytterligare på grund av deras overhead.
MTU-värdet bör inte överstiga det experimentellt fastställda PMTU-värdet.
Ett större MTU-värde är i allmänhet bättre när andra begränsningar uppfylls.
Den maximala segmentstorleken (MSS) används som ett alternativt mått på paketstorleken. Förhållandet mellan MSS och MTU är följande.
MSS = MTU - 40 för IPv4
MSS = MTU - 60 för IPv6
|
Notera |
|---|---|
|
Den |
TCP-genomströmningen kan maximeras genom att justera TCP-buffertstorleksparametrarna som i"TCP tuning" för moderna WAN med hög bandbredd och hög latens. Hittills har de nuvarande standardinställningarna för Debian fungerat bra även för mitt LAN som är anslutet med den snabba 1G bps FTTP-tjänsten.
Netfilter tillhandahåller infrastruktur för stateful brandvägg och NAT (Network Address Translation) med Linux kernel-moduler (se Avsnitt 3.9, ”Initialisering av kärnmodulen”).
Tabell 5.7. Lista över brandväggsverktyg
| paket | popcon | storlek | beskrivning |
|---|---|---|---|
nftables
|
V:186, I:840 | 191 | administrationsverktyg för paketfiltrering och NAT(Netfilter)(efterföljare till {ip,ip6,arp,eb}tables) |
iptables
|
V:344, I:636 | 2410 | administrationsverktyg för netfilter(iptables(8) för IPv4,
ip6tables(8) för IPv6) |
arptables
|
V:0, I:1 | 102 | administrationsverktyg för netfilter(arptables(8) för ARP) |
ebtables
|
V:14, I:25 | 276 | administrationsverktyg för netfilter(ebtables(8) för
Ethernet-bryggning) |
iptstate
|
V:0, I:1 | 122 | kontinuerligt övervaka nätfiltrets
tillstånd (liknande top(1)) |
ufw
|
V:69, I:96 | 859 | Uncomplicated Firewall (UFW) är ett program för hantering av en nätfilterbrandvägg |
gufw
|
V:5, I:10 | 3663 | grafiskt användargränssnitt för Uncomplicated Firewall (UFW) |
firewalld
|
V:15, I:24 | 2482 | firewalld är ett dynamiskt hanterat brandväggsprogram med stöd för nätverkszoner |
firewall-config
|
V:0, I:3 | 1076 | grafiskt användargränssnitt för firewalld |
shorewall-init
|
V:0, I:0 | 88 | Initialisering av Shoreline Firewall |
shorewall
|
V:2, I:5 | 3090 | Shoreline Firewall, generator för konfigurationsfil för netfilter |
shorewall-lite
|
V:0, I:0 | 71 | Shoreline Firewall, Netfilter konfigurationsfilgenerator (light-version) |
shorewall6
|
V:0, I:1 | 1334 | Shoreline Firewall, generator för konfigurationsfilen netfilter (IPv6-version) |
shorewall6-lite
|
V:0, I:0 | 71 | Shoreline Firewall, netfilter konfigurationsfilgenerator (IPv6, light-version) |
Huvudprogrammet för användarutrymmet i netfilter är iptables(8). Du
kan konfigurera netfilter manuellt
interaktivt från shell, spara dess tillstånd med
iptables-save(8) och återställa det via init-skript med
iptables-restore(8) när systemet startas om.
Konfigurationshjälpskript som shorewall underlättar denna process.
Se dokumentationen på Netfilter
Documentation (eller i
"/usr/share/doc/iptables/html/").
|
Tips |
|---|---|
|
Även om dessa skrevs för Linux 2.4,
gäller både kommandot |