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. The modern network configuration for cloud
5.4.1. The modern network configuration for cloud with DHCP
5.4.2. The modern network configuration for cloud with static IP
5.4.3. The modern network configuration for cloud with Network Manger
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): Unified, declarative interface to NetworkManager and systemd-networkd backends
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 administration tools for packet filtering and NAT (Netfilter) (successor to {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.

A typical workstation may be installed with its host name set to, e.g., "host_name" and its optional domain name set to an empty string. Then, "/etc/hosts" looks like the following.

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.

The host_name matches the hostname defined in the "/etc/hostname" (see 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.

For the PC workstation on the typical adhoc LAN environment, the hostname can be resolved via Multicast DNS (mDNS) in addition to the basic files and dns methods.

  • 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).

  • The "/etc/nsswitch.conf" file should have stanza like "hosts: files mdns4_minimal [NOTFOUND=return] dns" (see /usr/share/doc/libnss-mdns/README.Debian for other configurations).

  • A host name suffixed with the ".local" pseudo-top-level domain is resolved by sending a mDNS query message in a multicast UDP packet using IPv4 address "224.0.0.251" or IPv6 address "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

Use of packages such as libnss-resolve together with systemd-resolved, or libnss-myhostname, or libnss-mymachine, with coressponding listings on the "hosts" line in the "/etc/nsswitch.conf" file may override the traditional network configuration discussed in the above. See nss-resolve(8), systemd-resolved(8), nss-myhostname(8), and nss-mymachines(8) for more.

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

The modern network configuration for cloud may use cloud-init and netplan.io packages (see Bagian 3.7.4, “Cloud system initialization”).

The netplan.io package supports systemd-networkd and NetworkManager as its network configuration backends, and enables the declarative network configuration using YAML data. When you change YAML:

  • Run "netplan generate" command to generate all the necessary backend configuration from YAML.

  • Run "netplan apply" command to apply the generated configuration to the backends.

See "Netplan documentation", netplan(5), netplan-generate(8), and netplan-apply(8).

See also "Cloud-init documentation" (especially around "Configuration sources" and "Netplan Passthrough") for how cloud-init can integrate netplan.io configuration with alternative data sources.

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).

The TCP throughput can be maximized by adjusting TCP buffer size parameters as in "TCP tuning" for the modern high-bandwidth and high-latency WAN. So far, the current Debian default settings serve well even for my LAN connected by the fast 1G bps FTTP service.

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.

See documentations at Netfilter Documentation (or in "/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.