Cara mengubah server linux menjadi router untuk menangani lalu lintas secara statis dan dinamis - Bagian 10
- 2851
- 867
- Jermaine Mohr
Seperti yang telah kami perkirakan dalam tutorial sebelumnya tentang ini Lfce (Linux Foundation Certified Engineer) seri, dalam artikel ini kita akan membahas perutean lalu lintas IP secara statis dan dinamis dengan aplikasi spesifik.
Linux Foundation Certified Engineer - Bagian 10Memperkenalkan Program Sertifikasi Linux Foundation
Hal pertama yang pertama, mari kita luruskan beberapa definisi:
- Dengan kata -kata sederhana, a paket adalah unit dasar yang digunakan untuk mengirimkan informasi dalam jaringan. Jaringan yang menggunakan TCP/IP sebagai protokol jaringan mengikuti aturan yang sama untuk transmisi data: Informasi aktual dibagi menjadi paket yang dibuat dari data dan alamat tempat ia harus dikirim ke.
- Rute adalah proses “membimbingData dari sumber ke tujuan di dalam jaringan.
- Routing statis membutuhkan serangkaian aturan yang dikonfigurasi secara manual yang ditentukan dalam tabel perutean. Aturan -aturan ini diperbaiki dan digunakan untuk menentukan cara paket yang harus dilalui saat bergerak dari satu mesin ke mesin lainnya.
- Routing dinamis, atau routing pintar (Jika Anda mau), berarti sistem dapat mengubah secara otomatis, sesuai kebutuhan, rute yang diikuti oleh paket.
Konfigurasi IP dan Perangkat Jaringan Tingkat Lanjut
Itu iproute Paket menyediakan serangkaian alat untuk mengelola jaringan dan kontrol lalu lintas yang akan kami gunakan di seluruh artikel ini karena mewakili penggantian alat warisan seperti IfConfig dan rute.
Utilitas pusat di iproute Suite disebut IP sederhana. Sintaks dasarnya adalah sebagai berikut:
# perintah objek ip
Di mana obyek hanya bisa menjadi salah satu dari yang berikut (hanya objek yang paling sering ditampilkan - Anda dapat merujuk pada manusia aku p untuk daftar lengkap):
- tautan: perangkat jaringan.
- addr: Alamat Protokol (IP atau IPv6) di perangkat.
- rute: entri tabel perutean.
- aturan: aturan dalam database kebijakan perutean.
Sedangkan memerintah mewakili tindakan spesifik yang dapat dilakukan pada objek. Anda dapat menjalankan perintah berikut untuk menampilkan daftar lengkap perintah yang dapat diterapkan ke objek tertentu:
# Bantuan Objek IP
Misalnya,
# Bantuan tautan IPBantuan Perintah IP
Gambar di atas menunjukkan, misalnya, bahwa Anda dapat mengubah status antarmuka jaringan dengan perintah berikut:
# ip tautan set antarmuka up | turun
Untuk lebih banyak contoh 'aku pPerintah 'Perintah, Baca 10 Perintah' IP 'yang berguna untuk mengonfigurasi alamat IP
Contoh 1: Menonaktifkan dan Mengaktifkan Antarmuka Jaringan
Dalam contoh ini, kami akan menonaktifkan dan mengaktifkan Eth1:
# IP Link Show # IP Link Set Eth1 Down # IP Link ShowNonaktifkan antarmuka eth0
Jika Anda ingin mengaktifkan kembali eth1,
# ip link atur eth1 up
Alih -alih menampilkan semua antarmuka jaringan, kami dapat menentukan salah satunya:
# IP Link Show Eth1
Yang akan mengembalikan semua informasi untuk eth1.
Contoh 2: Menampilkan tabel perutean utama
Anda dapat melihat tabel perutean utama Anda saat ini dengan salah satu dari 3 perintah berikut:
# ip route show # route -n # netstat -rnPeriksa tabel rute Linux
Kolom pertama dalam output dari tiga perintah menunjukkan jaringan target. Output dari Rute IP Tunjukkan (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 bisa merujuk pada manusia IP-rute Dan rute pria untuk penjelasan terperinci tentang sisa kolom.
Contoh 3: Menggunakan server Linux untuk merutekan paket antara dua jaringan pribadi
Kami ingin merutekan icmp (Ping) Paket dari Dev2 ke Dev4 dan sebaliknya juga (perhatikan bahwa kedua mesin klien ada di jaringan yang berbeda). Nama masing -masing NIC, bersama dengan alamat IPv4 yang sesuai, diberikan di dalam kurung persegi.
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):
# IP Rute Show
dan kemudian memodifikasinya untuk menggunakannya ENP0S3 Nic dan koneksi ke 192.168.0.15 untuk mengakses host di 10.0.0.0/24 Jaringan:
# rute ip tambahkan 10.0.0.0/24 via 192.168.0.15 dev enp0s3
Yang pada dasarnya berbunyi, “Tambahkan rute ke 10.0.0.0/24 Jaringan Melalui Antarmuka Jaringan ENP0S3 Menggunakan 192.168.0.15 Sebagai gateway ”.
Jaringan rute di LinuxDemikian juga di Dev4 (OpenSUSE Box) untuk host ping di 192.168.0.0/24 Jaringan:
# rute ip tambahkan 192.168.0.0/24 via 10.0.0.15 dev enp0s3Routing jaringan di Linux
Akhirnya, kita perlu mengaktifkan penerusan di router Debian kita:
# Echo 1>/proc/sys/net/ipv4/ip_forward
Sekarang mari kita ping:
Periksa routing jaringanDan,
Status ping ruteUntuk membuat pengaturan ini gigih di seluruh sepatu bot, edit /etc/sysctl.conf di router dan pastikan bersih.IPv4.ip_forward Variabel diatur ke true sebagai berikut:
bersih.IPv4.ip_forward = 1
Selain itu, konfigurasikan NIC pada kedua klien (cari file konfigurasi di dalam /etc/sysconfig/jaringan di OpenSuse dan /etc/sysconfig/network-script pada centos - dalam kedua kasus itu disebut IFCFG-ENP0S3).
Berikut file konfigurasi dari kotak OpenSUSE:
Bootproto = siaran statis = 10.0.0.255 ipaddr = 10.0.0.18 netmask = 255.255.255.0 gateway = 10.0.0.15 name = ENP0S3 Network = 10.0.0.0 onboot = ya
Contoh 4: Menggunakan server Linux untuk merutekan paket antara jaringan pribadi dan internet
Skenario lain di mana mesin Linux dapat digunakan sebagai router adalah ketika Anda perlu berbagi koneksi internet 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 ptables di router:
# ptables -t nat -a postrouting -o eth0 -j masquerade # ptables -a forward -i eth0 -o eth1 -m state -state terkait, mapan -j menerima # ptables -se forward -i eth1 -o eth0 -j MENERIMA
Perintah pertama menambahkan aturan ke Postrouting Rantai dalam tabel NAT (Network Address Translation), menunjukkan bahwa ETH0 NIC harus digunakan untuk paket keluar.
MENYAMAR menunjukkan bahwa NIC ini memiliki IP yang dinamis dan bahwa sebelum mengirim paket ke “Dunia Liar Liar“Internet, alamat sumber pribadi paket harus diubah menjadi IP publik router.
Di LAN dengan banyak host, router melacak koneksi yang sudah ada di /proc/net/ip_conntrack Jadi ia tahu di mana harus mengembalikan respons dari internet ke.
Hanya sebagian dari output:
# kucing/proc/net/ip_conntrack
ditampilkan di tangkapan layar berikut.
Paket Rute di LinuxDi mana asal (IP pribadi kotak opensuse) dan tujuan (Google DNS) dari paket disorot. Ini adalah hasil dari berlari:
# Curl www.tecmint.com
di kotak opensuse.
Karena saya yakin sudah bisa Anda tebak, router menggunakan Google 8.8.8.8 sebagai NameServer, yang menjelaskan mengapa tujuan paket keluar menunjuk ke alamat itu.
Catatan: Bahwa paket yang masuk dari internet hanya diterima adalah jika mereka adalah bagian dari koneksi yang sudah ada (perintah #2), sementara paket keluar diizinkan “keluar gratis”(Perintah #3).
Jangan lupa untuk membuat aturan iptables Anda persisten mengikuti langkah -langkah yang diuraikan di Bagian 8 - Konfigurasikan Firewall Iptables dari seri ini.
Routing dinamis dengan quagga
Saat ini, alat yang paling banyak digunakan untuk routing dinamis di Linux quagga. Ini memungkinkan administrator sistem untuk diimplementasikan, dengan server Linux yang relatif rendah, fungsionalitas yang sama yang disediakan oleh router Cisco yang kuat (dan mahal).
Alat itu sendiri tidak menangani perutean, melainkan memodifikasi tabel routing kernel karena mempelajari rute terbaik baru untuk menangani paket.
Karena ini adalah garpu zebra, sebuah program yang perkembangannya berhenti beberapa waktu yang lalu, ia mempertahankan alasan historis perintah dan struktur yang sama dari zebra. Itulah mengapa Anda akan melihat banyak referensi ke zebra sejak 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 untuk Anda bangun.
Menginstal Quagga di Linux
Untuk menginstal quagga pada distribusi yang Anda pilih:
# aptitude update && aptitude instal 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/daemon 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 kata sandi quagga
# layanan quagga restartMulai Layanan Quagga
Catatan: Itu ripd.conf adalah file konfigurasi untuk protokol informasi perutean, yang memberikan router dengan informasi jaringan mana yang dapat dicapai dan seberapa jauh (dalam hal jumlah hop).
Perhatikan bahwa ini hanyalah 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 dari memberikan kredensial dalam teks biasa. Untuk alasan itu, Anda perlu menetapkan izin yang tepat untuk file konfigurasi:
# chown quagga: quaggavty/etc/quagga/*.conf # chmod 640/etc/quagga/*.conf
Contoh 5: Menyiapkan quagga untuk merutekan lalu lintas IP secara dinamis
Dalam contoh ini kami akan menggunakan pengaturan berikut dengan dua router (pastikan untuk membuat file konfigurasi untuk Router #2 seperti yang dijelaskan sebelumnya):
Konfigurasikan quaggaPenting: Jangan lupa untuk mengulangi pengaturan berikut untuk kedua router.
Terhubung 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, dan kemudian aktifkan konfigurasi:
Aktifkan Konfigurasi Terminal
Masukkan alamat IP dan topeng jaringan setiap NIC:
Inter eth0 ip addr 192.168.0.15 Inter eth1 ip addr 10.0.0.15 Keluar TulisKonfigurasikan router
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 tebal (komentar ditambahkan demi klarifikasi):
memungkinkan menyalakan perintah mode istimewa. Konfigurasikan Terminal Perubahan Mode Konfigurasi. Perintah ini adalah langkah pertama untuk konfigurasi RIUS RIP memungkinkan rip. Jaringan 10.0.0.0/24 Mengatur Antarmuka Aktifkan RIP untuk 10.0.0.0/24 Jaringan. KELUAR KELUAR menulis Menulis konfigurasi saat ini ke file konfigurasi.Aktifkan router
Catatan: Bahwa dalam kedua kasus konfigurasi ditambahkan ke baris yang kami tambahkan sebelumnya (/etc/quagga/zebra.conf Dan /etc/quagga/ripd.conf).
Akhirnya, sambungkan lagi ke layanan zebra di kedua router dan perhatikan bagaimana masing -masing dari mereka “terpelajarRute ke jaringan yang ada di belakang yang lain, dan yang merupakan hop berikutnya untuk sampai ke jaringan itu, dengan menjalankan perintah Tampilkan rute IP:
# Tampilkan rute IPPeriksa routing IP
Jika Anda ingin mencoba berbagai protokol atau pengaturan, Anda mungkin ingin merujuk ke situs Proyek Quagga untuk dokumentasi lebih lanjut.
Kesimpulan
Dalam artikel ini kami telah menjelaskan cara mengatur perutean statis dan dinamis, menggunakan router kotak Linux. Jangan ragu untuk menambahkan router sebanyak yang Anda inginkan, dan bereksperimen sebanyak yang Anda inginkan. Jangan ragu untuk kembali kepada kami menggunakan formulir kontak di bawah ini jika Anda memiliki komentar atau pertanyaan.
Menjadi Insinyur Bersertifikat Linux- « Cara Menyiapkan Firewall Iptables Untuk Mengaktifkan Akses Jarak Jauh ke Layanan di Linux - Bagian 8
- Mengkonfigurasi SquidGuard, Mengaktifkan Aturan Konten dan Menganalisis Log Squid - Bagian 6 »