Seperti yang telah kami antisipasi dalam tutorial sebelumnya tentang ini LFCE (Insinyur Bersertifikat Linux Foundation) series, pada artikel ini kita akan membahas routing trafik IP secara statis dan dinamis dengan aplikasi tertentu.
Hal pertama yang pertama, mari kita luruskan beberapa definisi:
NS iproute package menyediakan seperangkat alat untuk mengelola jaringan dan kontrol lalu lintas yang akan kami gunakan di seluruh artikel ini karena mereka mewakili penggantian alat lama seperti ifconfig dan rute.
Utilitas pusat di iproute suite disebut hanya ip. Sintaks dasarnya adalah sebagai berikut:
# perintah objek ip.
Di mana obyek hanya salah satu dari berikut ini (hanya objek yang paling sering ditampilkan – Anda dapat merujuk ke man aku p untuk daftar lengkap):
Sedangkan memerintah mewakili tindakan tertentu yang dapat dilakukan pada objek. Anda dapat menjalankan perintah berikut untuk menampilkan daftar lengkap perintah yang dapat diterapkan ke objek tertentu:
# bantuan objek ip.
Sebagai contoh,
# bantuan tautan ip.
Gambar di atas menunjukkan, misalnya, bahwa Anda dapat mengubah status antarmuka jaringan dengan perintah berikut:
# ip link set antarmuka {atas | turun}
Untuk lebih banyak contoh 'aku p'perintah, baca 10 Perintah 'ip' yang Berguna untuk Mengonfigurasi Alamat IP
Dalam contoh ini, kami akan menonaktifkan dan mengaktifkan et1:
# tampilan tautan ip. # ip link setel eth1 ke bawah. # tampilan tautan ip.
Jika Anda ingin mengaktifkan kembali eth1,
# ip link mengatur eth1.
Alih-alih menampilkan semua antarmuka jaringan, kita dapat menentukan salah satunya:
# ip tautan tampilkan eth1.
Yang akan mengembalikan semua informasi untuk eth1.
Anda dapat melihat tabel perutean utama Anda saat ini dengan salah satu dari 3 perintah berikut:
# acara rute ip. # rute -n. #netstat -rn.
Kolom pertama dalam output dari tiga perintah menunjukkan jaringan target. Keluaran dari rute ip tampilkan (mengikuti kata kunci dev) juga menyajikan perangkat jaringan yang berfungsi sebagai gerbang fisik ke jaringan tersebut.
Meskipun saat ini perintah ip lebih disukai daripada rute, Anda masih dapat merujuk ke man ip-rute dan rute pria untuk penjelasan rinci tentang sisa kolom.
Kami ingin rute icmp (ping) paket dari dev2 ke dev4 dan sebaliknya juga (perhatikan bahwa kedua mesin klien berada di jaringan yang berbeda). Nama setiap NIC, bersama dengan alamat IPv4 yang sesuai, diberikan di dalam tanda kurung siku.
Lingkungan pengujian kami adalah sebagai berikut:
klien 1: CentOS 7 [enp0s3: 192.168.0.17/24] - dev1. Router: Debian Wheezy 7.7 [eth0: 192.168.0.15/24, eth1: 10.0.0.15/24] - dev2. Klien 2: openSUSE 13.2 [enp0s3: 10.0.0.18/24] - dev4.
Mari kita lihat tabel perutean di dev1 (kotak CentOS):
# acara rute ip.
dan kemudian memodifikasinya untuk menggunakannya enp0s3 NIC dan koneksi ke 192.168.0.15 untuk mengakses host di jaringan 10.0.0.0/24:
# ip route tambahkan 10.0.0.0/24 melalui 192.168.0.15 dev enp0s3.
Yang pada dasarnya berbunyi, "Tambahkan rute ke jaringan 10.0.0.0/24 melalui antarmuka jaringan enp0s3 menggunakan 192.168.0.15 sebagai gateway".
Demikian juga di dev4 (kotak openSUSE) untuk melakukan ping ke host di jaringan 192.168.0.0/24:
# ip route tambahkan 192.168.0.0/24 melalui 10.0.0.15 dev enp0s3.
Terakhir, kita perlu mengaktifkan penerusan di router Debian kita:
# echo 1 > /proc/sys/net/ipv4/ip_forward.
Sekarang mari kita ping:
dan,
Untuk membuat pengaturan ini tetap ada di seluruh boot, edit /etc/sysctl.conf pada router dan pastikan net.ipv4.ip_forward variabel disetel ke true sebagai berikut:
net.ipv4.ip_forward = 1.
Selain itu, konfigurasikan NIC pada kedua klien (cari file konfigurasi di dalam /etc/sysconfig/network di openSUSE dan /etc/sysconfig/network-scripts di CentOS - dalam kedua kasus itu disebut ifcfg-enp0s3).
Berikut file konfigurasi dari kotak openSUSE:
BOOTPROTO=statis. BROADCAST=10.0.0.255. IPADDR=10.0.0.18. NETMASK=255.255.255.0. GATEWAY=10.0.0.15. NAMA=enp0s3. JARINGAN=10.0.0.0. ONBOOT = ya.
Skenario lain di mana mesin Linux dapat digunakan sebagai router adalah ketika Anda perlu berbagi koneksi Internet Anda dengan LAN pribadi.
Router: Debian Wheezy 7.7 [eth0: IP Publik, eth1: 10.0.0.15/24] - dev2. Klien: openSUSE 13.2 [enp0s3: 10.0.0.18/24] - dev4.
Selain mengatur penerusan paket dan tabel perutean statis di klien seperti pada contoh sebelumnya, kita perlu menambahkan beberapa aturan iptables di router:
# iptables -t nat -A POSTINGAN -o eth0 -j MASQUERADE. # iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED, ESTABLISHED -j ACCEPT. # iptables -A LANJUT -i eth1 -o eth0 -j TERIMA.
Perintah pertama menambahkan aturan ke POSTROUTING rantai di tabel nat (Terjemahan Alamat Jaringan), menunjukkan bahwa NIC eth0 harus digunakan untuk paket keluar.
MENYAMAR menunjukkan bahwa NIC ini memiliki IP dinamis dan sebelum mengirim paket ke "dunia liar liar” dari Internet, alamat sumber privat dari paket harus diubah ke alamat IP publik dari router.
Dalam LAN dengan banyak host, router melacak koneksi yang dibuat di /proc/net/ip_conntrack sehingga ia tahu ke mana harus mengembalikan respons dari Internet.
Hanya sebagian dari output:
# cat /proc/net/ip_conntrack.
ditunjukkan pada tangkapan layar berikut.
Di mana asal (IP pribadi kotak openSUSE) dan tujuan (Google DNS) paket disorot. Ini adalah hasil dari menjalankan:
# curl www.tecmint.com.
pada kotak openSUSE.
Seperti yang saya yakin Anda sudah bisa menebak, router menggunakan 8.8.8.8 Google sebagai server nama, yang menjelaskan mengapa tujuan paket keluar menunjuk ke alamat itu.
Catatan: Paket masuk dari Internet hanya diterima jika paket tersebut merupakan bagian dari koneksi yang sudah dibuat (perintah #2), sedangkan paket keluar diperbolehkan “keluar bebas” (perintah #3).
Jangan lupa untuk membuat aturan iptables Anda tetap mengikuti langkah-langkah yang diuraikan dalam Bagian 8 – Konfigurasi Iptables Firewall dari seri ini.
Saat ini, alat yang paling banyak digunakan untuk perutean dinamis di Linux adalah quagga. Ini memungkinkan administrator sistem untuk mengimplementasikan, dengan server Linux yang relatif murah, fungsionalitas yang sama yang disediakan oleh router Cisco yang kuat (dan mahal).
Alat itu sendiri tidak menangani perutean, melainkan memodifikasi tabel perutean kernel saat mempelajari rute terbaik baru untuk menangani paket.
Karena ini adalah fork of zebra, sebuah program yang pengembangannya dihentikan beberapa waktu lalu, karena alasan historis ia mempertahankan perintah dan struktur yang sama dengan zebra. Itulah mengapa Anda akan melihat banyak referensi tentang zebra mulai saat ini.
Harap dicatat bahwa tidak mungkin untuk mencakup perutean dinamis dan semua protokol terkait dalam satu artikel, tetapi saya yakin bahwa konten yang disajikan di sini akan berfungsi sebagai titik awal bagi Anda untuk membangun pada.
Untuk menginstal quagga pada distribusi pilihan Anda:
# pembaruan aptitude && aptitude install quagga [Di Ubuntu] # yum update && yum install quagga [CentOS/RHEL] # zypper refresh && zypper install quagga [openSUSE]
Kami akan menggunakan lingkungan yang sama dengan Contoh #3, dengan satu-satunya perbedaan bahwa eth0 terhubung ke router gateway utama dengan IP 192.168.0.1.
Selanjutnya, edit /etc/quagga/daemons dengan,
zebra=1. ripd=1.
Sekarang buat file konfigurasi berikut.
# /etc/quagga/zebra.conf. # /etc/quagga/ripd.conf.
dan tambahkan baris ini (ganti nama host dan kata sandi pilihan Anda):
layanan quagga restart. nama host dev2. sandi quagga.
# layanan quagga restart.
Catatan: Itu ripd.conf adalah file konfigurasi untuk Routing Information Protocol, yang menyediakan router dengan informasi jaringan mana yang dapat dijangkau dan seberapa jauh (dalam hal jumlah hop) mereka.
Perhatikan bahwa ini hanya salah satu protokol yang dapat digunakan bersama dengan quagga, dan saya memilihnya untuk tutorial ini karena kemudahan penggunaan dan karena sebagian besar perangkat jaringan mendukungnya, meskipun memiliki kelemahan dalam melewatkan kredensial secara sederhana teks. Untuk alasan itu, Anda perlu menetapkan izin yang tepat untuk file konfigurasi:
# chown quagga: quaggavty /etc/quagga/*.conf. # chmod 640/etc/quagga/*.conf
Dalam contoh ini kita akan menggunakan setup berikut dengan dua router (pastikan untuk membuat file konfigurasi untuk router #2 seperti yang dijelaskan sebelumnya):
Penting: Jangan lupa untuk mengulangi pengaturan berikut untuk kedua router.
Hubungkan ke zebra (mendengarkan di port 2601), yang merupakan perantara logis antara router dan kernel:
# telnet localhost 2601.
Masukkan kata sandi yang ditetapkan di /etc/quagga/zebra.conf file, lalu aktifkan konfigurasi:
memungkinkan. konfigurasi terminal.
Masukkan alamat IP dan network mask dari setiap NIC:
antar et0. ip addr 192.168.0.15. antar et1. ip addr 10.0.0.15. keluar. keluar. menulis.
Sekarang kita perlu terhubung ke MENINGGAL DUNIA terminal daemon (port 2602):
# telnet localhost 2602.
Masukkan nama pengguna dan kata sandi seperti yang dikonfigurasi di /etc/quagga/ripd.conf file, dan kemudian ketik perintah berikut dalam huruf tebal (komentar ditambahkan demi klarifikasi):
memungkinkan menyalakan perintah mode istimewa. konfigurasikan terminal perubahan ke mode konfigurasi. Perintah ini adalah langkah pertama untuk konfigurasi. robekan router memungkinkan RIP. jaringan 10.0.0.0/24 menyetel antarmuka pengaktifan RIP untuk jaringan 10.0.0.0/24. keluarkeluarmenulis menulis konfigurasi saat ini ke file konfigurasi.
Catatan: Bahwa dalam kedua kasus konfigurasi ditambahkan ke baris yang kami tambahkan sebelumnya (/etc/quagga/zebra.conf dan /etc/quagga/ripd.conf).
Terakhir, sambungkan kembali ke layanan zebra di kedua router dan perhatikan bagaimana masing-masing memiliki “terpelajar” rute ke jaringan yang berada di belakang yang lain, dan yang merupakan hop berikutnya untuk sampai ke jaringan itu, dengan menjalankan perintah tampilkan rute ip:
# tampilkan rute ip.
Jika Anda ingin mencoba protokol atau pengaturan yang berbeda, Anda mungkin ingin merujuk ke Situs proyek Quagga untuk dokumentasi lebih lanjut.
Pada artikel ini kami telah menjelaskan cara mengatur perutean statis dan dinamis, menggunakan router kotak Linux (s). Jangan ragu untuk menambahkan router sebanyak yang Anda inginkan, dan bereksperimen sebanyak yang Anda inginkan. Jangan ragu untuk menghubungi kami kembali menggunakan formulir kontak di bawah ini jika Anda memiliki komentar atau pertanyaan.