Bab 5. Penyiapan jaringan

Daftar Isi

5.1. Infrastruktur jaringan dasar
5.1.1. Resolusi nama host
5.1.2. Nama antarmuka jaringan
5.1.3. Rentang alamat jaringan untuk LAN
5.1.4. Dukungan perangkat jaringan
5.2. Konfigurasi jaringan modern untuk desktop
5.2.1. Alat konfigurasi jaringan GUI
5.3. Konfigurasi jaringan modern tanpa GUI
5.4. Konfigurasi jaringan modern untuk cloud
5.4.1. Konfigurasi jaringan modern untuk cloud dengan DHCP
5.4.2. Konfigurasi jaringan modern untuk cloud dengan IP statik
5.4.3. Konfigurasi jaringan modern untuk cloud dengan Network Manager
5.5. Konfigurasi jaringan tingkat rendah
5.5.1. Perintah Iproute2
5.5.2. Operasi jaringan tingkat rendah yang aman
5.6. Optimalisasi jaringan
5.6.1. Mencari MTU yang optimal
5.6.2. Optimasi TCP WAN
5.7. Infrastruktur netfilter
[Tip] Tip

Untuk panduan khusus Debian modern tentang jaringan, baca Buku Pegangan Administrator Debian — Mengonfigurasi Jaringan.

[Tip] Tip

Di bawah systemd, networkd dapat digunakan untuk mengelola jaringan. Lihat systemd-networkd(8).

Mari kita tinjau infrastruktur jaringan dasar pada sistem Debian modern.

Tabel 5.1. Daftar alat konfigurasi jaringan

paket popcon ukuran jenis deskripsi
network-manager V:392, I:459 15542 config::NM NetworkManager (daemon): mengelola jaringan secara otomatis
network-manager-gnome V:121, I:369 5583 config::NM NetworkManager (frontend GNOME)
netplan.io V:1, I:5 319 config::NM+networkd Netplan (generator): Antarmuka deklaratif terpadu untuk NetworkManager dan backend systemd-networkd
ifupdown V:608, I:979 199 config::ifupdown alat standar untuk menghidupkan dan mematikan jaringan (spesifik Debian)
isc-dhcp-client V:217, I:981 2875 config::low-level klien DHCP
pppoeconf V:0, I:5 186 config::helper pembantu konfigurasi untuk koneksi PPPoE
wpasupplicant V:353, I:513 3862 config::helper dukungan klien untuk WPA dan WPA2 (IEEE 802.11i)
wpagui V:0, I:1 774 config::helper Klien GUI Qt untuk wpa_supplicant
wireless-tools V:179, I:244 292 config::helper alat untuk memanipulasi Ekstensi Nirkabel Linux
iw V:34, I:475 302 config::helper alat untuk mengonfigurasi perangkat nirkabel Linux
iproute2 V:736, I:972 3606 config::iproute2 iproute2, IPv6 dan konfigurasi jaringan tingkat lanjut lainnya: ip(8), tc(8), dll
iptables V:319, I:718 2414 config::Netfilter alat administrasi untuk penyaringan paket dan NAT (Netfilter)
nftables V:106, I:701 182 config::Netfilter alat administrasi untuk penyaringan paket dan NAT (Netfilter) (penerus {ip,ip6,arp,eb}tables)
iputils-ping V:194, I:997 122 ujian menguji keterjangkauan jaringan host jarak jauh berdasarkan nama host atau alamat IP (iproute2)
iputils-arping V:3, I:36 50 ujian menguji keterjangkauan jaringan host jarak jauh yang ditentukan oleh alamat ARP
iputils-tracepath V:2, I:30 47 ujian melacak jalur jaringan ke host jarak jauh
ethtool V:95, I:267 739 ujian menampilkan atau mengubah pengaturan perangkat Ethernet
mtr-tiny V:5, I:46 156 test::low-level melacak jalur jaringan ke host jarak jauh (curses)
mtr V:4, I:41 209 test::low-level melacak jalur jaringan ke host jarak jauh (curses dan GTK)
gnome-nettool V:0, I:17 2492 test::low-level alat untuk operasi informasi jaringan umum (GNOME)
nmap V:25, I:199 4498 test::low-level pemetaan jaringan / pemindai port (Nmap, konsol)
tcpdump V:17, I:175 1340 test::low-level penganalisis lalu lintas jaringan (Tcpdump, konsol)
wireshark I:45 10417 test::low-level penganalisis lalu lintas jaringan (Wireshark, GTK)
tshark V:2, I:25 400 test::low-level penganalisis lalu lintas jaringan (konsol)
tcptrace V:0, I:2 401 test::low-level menghasilkan ringkasan koneksi dari keluaran tcpdump
snort V:0, I:0 2203 test::low-level sistem deteksi intrusi jaringan yang fleksibel (Snort)
ntopng V:0, I:1 15904 test::low-level menampilkan penggunaan jaringan di peramban web
dnsutils V:16, I:280 276 test::low-level klien jaringan yang disediakan dengan BIND: nslookup(8), nsupdate(8), dig(8)
dlint V:0, I:3 53 test::low-level memeriksa informasi zona DNS menggunakan pencarian server nama
dnstracer V:0, I:1 59 test::low-level melacak rantai server DNS ke sumber

Resolusi nama host saat ini juga didukung oleh mekanisme NSS (Name Service Switch). Aliran resolusi ini adalah sebagai berikut.

  1. Berkas "/etc/nsswitch.conf" dengan stanza seperti "host: files dns" menentukan urutan resolusi nama host. (Ini menggantikan fungsi lama dari stanza "order" dalam "/etc/host.conf".)

  2. Metode files dipanggil terlebih dahulu. Jika nama host ditemukan di berkas "/etc/hosts", ia mengembalikan semua alamat yang valid untuk itu dan keluar. (Berkas "/etc/host.conf" berisi "multi on".)

  3. Metode dns dipanggil. Jika nama host ditemukan oleh kueri ke Internet Domain Name System (DNS) yang diidentifikasi oleh berkas "/etc/resolv.conf", ia mengembalikan semua alamat yang valid untuk itu dan keluar.

Workstation biasa mungkin dipasang dengan nama host yang disetel ke, mis., "host_name" dan nama domain opsional disetel ke string kosong. Kemudian, "/etc/hosts" terlihat seperti berikut ini.

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

Setiap baris dimulai dengan alamat IP dan diikuti oleh nama host terkait.

Alamat IP 127.0.1.1 di baris kedua dari contoh ini mungkin tidak ditemukan pada beberapa sistem mirip-Unix lainnya. Debian Installer membuat entri ini untuk sistem tanpa alamat IP permanen sebagai solusi untuk beberapa perangkat lunak (misalnya, GNOME) seperti yang didokumentasikan dalam bug #719621.

nama_host cocok dengan nama host yang didefinisikan dalam "/etc/hostname" (lihat Bagian 3.7.1, “Nama host”).

Untuk sistem dengan alamat IP permanen, alamat IP permanen itu harus digunakan di sini, bukan 127.0.1.1.

Untuk sistem dengan alamat IP permanen dan fully qualified domain name (FQDN) yang disediakan oleh Domain Name System (DNS), nama_host.nama_domain kanonik itu harus digunakan, bukan hanya nama_host.

"/etc/resolv.conf" adalah berkas statis jika paket resolvconf tidak dipasang. Jika dipasang, itu adalah taut simbolis. Apapun kasusnya, itu berisi informasi yang menginisialisasi rutinitas resolver. Jika DNS ditemukan di IP="192.168.11.1", itu berisi yang berikut.

nameserver 192.168.11.1

Paket resolvconf membuat "/etc/resolv.conf" ini menjadi taut simbolis dan mengelola isinya dengan skrip hook secara otomatis.

Untuk workstation PC pada lingkungan LAN adhoc umum, nama host dapat diurai melalui DNS Multicast (mDNS) selain ke metode dasar files dan dns.

  • Avahi menyediakan kerangka kerja untuk Multicast DNS Service Discovery di Debian.

  • Ini setara dengan Apple Bonjour / Apple Rendezvous.

  • Paket plugin libnss-mdns menyediakan resolusi nama host melalui mDNS untuk fungsi GNU Name Service Switch (NSS) dari GNU C Library (glibc).

  • Berkas "/etc/nsswitch.conf" harus memiliki stanza seperti "host: files mdns4_minimal [NOTFOUND=return] dns mdns4" (lihat /usr/share/doc/libnss-mdns/README.Debian untuk konfigurasi lain).

  • Nama host yang diakhiri dengan ".local" domain pseudo-top-level diuraikan dengan mengirim suatu pesan query mDNS dalam suatu paket UDP multicast memakai alamat IPv "224.0.0.251" atau alamat IPv6 "FF02::FB".

[Catatan] Catatan

Perluasan Domain Tingkat Atas generik (gTLD) di Sistem Nama Domain sedang berlangsung. Hati-hati dengan tabrakan nama saat memilih nama domain yang hanya digunakan dalam LAN.

[Catatan] Catatan

Penggunaan paket seperti libnss-resolve bersama dengan systemd-resolved, atau libnss-myhostname, atau libnss-mymachine, dengan daftar yang sesuai pada baris "hosts" di berkas "/etc/nsswitch.conf" dapat menggantikan konfigurasi jaringan tradisional yang dibahas di atas. Lihat nss-resolve(8), systemd-resolved(8), nss-myhostname(8), dan nss-mymachines(8) untuk informasi lebih lanjut.

Antarmuka jaringan biasanya diinisialisasi dalam "networking.service" untuk antarmuka lo dan "NetworkManager.service" untuk antarmuka lain pada sistem desktop Debian modern di bawah systemd.

Debian dapat mengelola koneksi jaringan melalui perangkat lunak daemon manajemen seperti NetworkManager (NM) (network-manager dan paket terkait).

  • Mereka datang dengan GUI dan program baris perintah mereka sendiri sebagai antarmuka pengguna mereka.

  • Mereka datang dengan daemon mereka sendiri sebagai sistem backend mereka.

  • Mereka memungkinkan koneksi mudah dari sistem Anda ke Internet.

  • Mereka memungkinkan manajemen yang mudah dari konfigurasi jaringan kabel dan nirkabel.

  • Mereka memungkinkan kita untuk mengonfigurasi jaringan independen dari paket ifupdown warisan.

[Catatan] Catatan

Jangan gunakan alat konfigurasi jaringan otomatis ini untuk server. Ini ditujukan terutama untuk pengguna desktop yang berpindah-pindah di laptop.

Alat konfigurasi jaringan modern ini perlu dikonfigurasi dengan benar untuk menghindari konflik dengan paket ifupdown warisan dan berkas konfigurasinya "/etc/network/interfaces".

Dokumentasi resmi untuk NM pada Debian disediakan di "/usr/share/doc/network-manager/README.Debian".

Pada dasarnya, konfigurasi jaringan untuk desktop dilakukan sebagai berikut.

  1. Jadikan pengguna desktop, misalnya foo, masuk grup "netdev" dengan yang berikut (Atau, lakukan secara otomatis melalui D-bus di bawah lingkungan desktop modern seperti GNOME dan KDE).

    $ sudo usermod -a -G foo netdev
  2. Mempertahankan konfigurasi "/etc/network/interfaces" sesederhana yang berikut ini.

    auto lo
    iface lo inet loopback
  3. Jalankan ulang NM dengan yang berikut.

    $ sudo systemctl restart network-manager
  4. Konfigurasikan jaringan Anda melalui GUI.

[Catatan] Catatan

Hanya antarmuka yang tidak tercantum dalam "/etc/network/interfaces" yang dikelola oleh NM untuk menghindari konflik dengan ifupdown.

[Tip] Tip

Jika Anda ingin memperluas kemampuan konfigurasi jaringan NM, silakan mencari modul plug-in yang sesuai dan paket tambahan seperti network-manager-openconnect, network-manager-openvpn-gnome, network-manager-pptp-gnome, mobile-broadband-provider-info, gnome-bluetooth, dll.

Di bawah systemd, jaringan dapat dikonfigurasi dalam /etc/systemd/network/ sebagai gantinya. Lihat systemd-resolved(8), resolved.conf(5), dan systemd-networkd(8).

Ini memungkinkan konfigurasi jaringan modern tanpa GUI.

Konfigurasi klien DHCP dapat diatur dengan membuat "/etc/systemd/network/dhcp.network". Mis.:

[Match]
Name=en*

[Network]
DHCP=yes

Konfigurasi jaringan statis dapat diatur dengan membuat "/etc/systemd/network/static.network". Mis.:

[Match]
Name=en*

[Network]
Address=192.168.0.15/24
Gateway=192.168.0.1

Konfigurasi jaringan modern untuk cloud mungkin memakai paket cloud-init dan netplan.io (lihat Bagian 3.7.4, “Inisialisasi sistem cloud”).

Paket netplan.io mendukung systemd-networkd dan NetworkManager sebagai backend konfigurasi jaringannya, dan memungkinkan konfigurasi jaringan deklaratif menggunakan data YAML. Ketika Anda mengubah YAML:

  • Jalankan perintah "netplan generate" untuk menghasilkan semua konfigurasi backend yang diperlukan dari YAML.

  • Jalankan perintah "netplan apply" untuk menerapkan konfigurasi yang dibuat ke backend.

Lihat "dokumentasi Netplan", netplan(5), netplan-generate(8), dan netplan-apply(8).

Lihat juga "Dokumentasi Cloud-init" (terutama di sekitar "Sumber konfigurasi" dan "Netplan Passthrough") untuk mengetahui bagaimana cloud-init dapat mengintegrasikan konfigurasi netplan.io dengan sumber data alternatif.

Untuk konfigurasi jaringan tingkat rendah di Linux, gunakan program iproute2 (ip(8), …) .

Anda dapat menggunakan perintah jaringan tingkat rendah sebagai berikut dengan aman karena mereka tidak mengubah konfigurasi jaringan.


[Tip] Tip

Beberapa alat konfigurasi jaringan tingkat rendah ini berada di "/usr/sbin/". Anda mungkin perlu mengeluarkan path perintah lengkap seperti "/usr/sbin/ifconfig" atau menambahkan "/usr/sbin" ke daftar "$PATH" di "~/.bashrc" Anda.

Optimasi jaringan generik berada di luar lingkup dokumentasi ini. Saya hanya menyentuh subjek yang berkaitan dengan koneksi kelas konsumen.


NM biasanya menetapkan Maximum Transmission Unit (MTU) yang optimal secara otomatis.

Dalam beberapa kesempatan, Anda mungkin ingin mengatur MTU secara manual setelah percobaan dengan ping(8) dengan opsi "-M do" untuk mengirim paket ICMP dengan berbagai ukuran paket data. MTU adalah ukuran paket data maksimum yang berhasil tanpa fragmentasi IP ditambah 28 byte untuk IPv4 dan ditambah 48 byte untuk IPv6. Misalnya berikut menemukan MTU untuk koneksi IPv4 menjadi 1460 dan MTU untuk koneksi IPv6 menjadi 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

Proses ini adalah penemuan Path MTU (PMTU) (RFC1191) dan perintah tracepath(8) dapat mengotomatisasi ini.


Selain panduan dasar ini, Anda harus tahu hal berikut.

  • Setiap penggunaan metode tunneling (VPN dll.) dapat mengurangi MTU optimal lebih lanjut dengan overhead mereka.

  • Nilai MTU tidak boleh melebihi nilai PMTU yang ditentukan secara eksperimental.

  • Nilai MTU yang lebih besar umumnya lebih baik ketika keterbatasan lain terpenuhi.

Ukuran segmen maksimum (maximum segment size/MSS) digunakan sebagai ukuran alternatif ukuran paket. Hubungan antara MSS dan MTU adalah sebagai berikut.

  • MSS = MTU - 40 untuk IPv4

  • MSS = MTU - 60 untuk IPv6

[Catatan] Catatan

Iptables(8) (lihat Bagian 5.7, “Infrastruktur netfilter”) optimasi berbasis dapat menjepit ukuran paket oleh MSS dan berguna untuk router. Lihat "TCPMSS" di iptables(8).

Throughput TCP dapat dimaksimalkan dengan menyesuaikan parameter ukuran penyangga TCP seperti yang dijelaskan dalam "Penalaan TCP" untuk WAN bandwidth tinggi dan latensi tinggi modern. Sejauh ini, pengaturan baku Debian saat ini berfungsi dengan baik bahkan untuk LAN saya yang terhubung oleh layanan FTTP 1G bps cepat.

Netfilter menyediakan infrastruktur untuk stateful firewall dan network address translation (NAT) dengan modul kernel Linux (lihat Bagian 3.9, “Inisialisasi modul kernel”).


Program ruang pengguna utama netfilter adalah iptables(8). Anda dapat melakukan konfigurasi manual netfilter secara interaktif dari shell, menyimpan statusnya dengan iptables-save(8), dan mengembalikannya melalui skrip init dengan iptables-restore(8) saat boot ulang sistem.

Skrip pembantu konfigurasi seperti shorewall memudahkan proses ini.

Lihat dokumentasi di Dokumentasi Netfilter (atau di "/usr/share/doc/iptables/html/").

[Tip] Tip

Meskipun ini ditulis untuk Linux 2.4, baik perintah iptables(8) dan fungsi kernel netfilter berlaku untuk Linux 2.6 dan seri kernel 3.x.