Cara Menghidupkan Pelayan Linux menjadi penghala untuk mengendalikan trafik secara statik dan dinamik - Bahagian 10

Cara Menghidupkan Pelayan Linux menjadi penghala untuk mengendalikan trafik secara statik dan dinamik - Bahagian 10

Seperti yang telah kita jangkakan dalam tutorial sebelumnya Lfce (Jurutera Bersertifikat Yayasan Linux) siri, dalam artikel ini kita akan membincangkan penghalaan trafik IP secara statik dan dinamik dengan aplikasi tertentu.

Jurutera Bersertifikat Yayasan Linux - Bahagian 10
Memperkenalkan Program Persijilan Yayasan Linux

Perkara pertama yang pertama, mari kita dapatkan beberapa definisi lurus:

  1. Dengan kata -kata mudah, a paket adalah unit asas yang digunakan untuk menghantar maklumat dalam rangkaian. Rangkaian yang menggunakan TCP/IP sebagai protokol rangkaian mengikuti peraturan yang sama untuk penghantaran data: Maklumat sebenar dibahagikan kepada paket yang dibuat dari kedua -dua data dan alamat di mana ia harus dihantar ke.
  2. Penghalaan adalah proses "membimbing"Data dari sumber ke destinasi di dalam rangkaian.
  3. Penghalaan statik Memerlukan set peraturan yang ditakrifkan secara manual dalam jadual penghalaan. Peraturan ini ditetapkan dan digunakan untuk menentukan cara paket mesti melalui ketika ia bergerak dari satu mesin ke mesin yang lain.
  4. Penghalaan dinamik, atau penghalaan pintar (jika anda mahu), bermakna sistem dapat diubah secara automatik, seperti yang diperlukan, laluan yang diikuti paket.

Konfigurasi peranti IP dan rangkaian lanjutan

The Iproute pakej menyediakan satu set alat untuk menguruskan rangkaian dan kawalan lalu lintas yang akan kami gunakan sepanjang artikel ini kerana mereka mewakili penggantian alat warisan seperti ifconfig dan laluan.

Utiliti pusat di Iproute Suite dipanggil hanya ip. Sintaks asasnya adalah seperti berikut:

# arahan objek ip 

Di mana objek boleh menjadi salah satu daripada yang berikut (hanya objek yang paling kerap ditunjukkan - anda boleh merujuk kepada lelaki ip untuk senarai lengkap):

  1. pautan: peranti rangkaian.
  2. addr: Alamat Protokol (IP atau IPv6) pada peranti.
  3. laluan: kemasukan jadual penghalaan.
  4. peraturan: Peraturan dalam pangkalan data dasar penghalaan.

Sedangkan perintah mewakili tindakan tertentu yang boleh dilakukan pada objek. Anda boleh menjalankan arahan berikut untuk memaparkan senarai lengkap arahan yang boleh digunakan untuk objek tertentu:

# bantuan objek ip 

Sebagai contoh,

# bantuan pautan ip 
Bantuan arahan ip

Imej di atas menunjukkan, sebagai contoh, anda boleh menukar status antara muka rangkaian dengan arahan berikut:

# IP pautan set antara muka up | turun 

Untuk lebih banyak contoh 'ip'Perintah, baca 10 arahan' ip 'berguna untuk mengkonfigurasi alamat IP

Contoh 1: Melumpuhkan dan membolehkan antara muka rangkaian

Dalam contoh ini, kami akan melumpuhkan dan membolehkan eth1:

# IP Link Show # IP Link Set Eth1 Down # IP Link Show 
Lumpuhkan antara muka ETH0

Sekiranya anda ingin mengaktifkan semula et1,

# pautan ip set eth1 naik 

Daripada memaparkan semua antara muka rangkaian, kita boleh menentukan salah satu daripada mereka:

# IP pautan menunjukkan eth1 

Yang akan mengembalikan semua maklumat untuk et1.

Contoh 2: Memaparkan jadual penghalaan utama

Anda boleh melihat jadual penghalaan utama semasa anda dengan salah satu daripada 3 arahan berikut:

# IP Route Show # route -n # netstat -rn 
Semak jadual laluan Linux

Lajur pertama dalam output tiga arahan menunjukkan rangkaian sasaran. Output Laluan IP Tunjukkan (mengikuti kata kunci Dev) juga membentangkan peranti rangkaian yang berfungsi sebagai pintu masuk fizikal ke rangkaian tersebut.

Walaupun sekarang ini Perintah IP lebih disukai melalui laluan, anda masih boleh merujuk kepada lelaki Ip-route dan Laluan lelaki untuk penjelasan terperinci mengenai lajur yang lain.

Contoh 3: Menggunakan pelayan Linux ke paket laluan antara dua rangkaian peribadi

Kami mahu laluan ICMP (Ping) paket dari Dev2 ke Dev4 dan sebaliknya juga (perhatikan bahawa kedua -dua mesin pelanggan berada di rangkaian yang berbeza). Nama setiap NIC, bersama dengan alamat IPv4 yang sepadan, diberikan di dalam kurungan persegi.

Persekitaran ujian kami adalah seperti berikut:

Pelanggan 1: Centos 7 [ENP0S3: 192.168.0.17/24] - Dev1 Penghala: Debian wheezy 7.7 [Eth0: 192.168.0.15/24, Et1: 10.0.0.15/24] - Dev2 Pelanggan 2: OpenSuse 13.2 [ENP0S3: 10.0.0.18/24] - Dev4 

Mari kita lihat jadual penghalaan di Dev1 (kotak centos):

# pertunjukan laluan ip 

dan kemudian mengubahnya untuk menggunakannya ENP0S3 Nic dan sambungan ke 192.168.0.15 Untuk mengakses tuan rumah di 10.0.0.0/24 Rangkaian:

# Laluan IP Tambah 10.0.0.0/24 melalui 192.168.0.15 DEV ENP0S3 

Yang pada dasarnya berbunyi, "Tambahkan laluan ke 10.0.0.Rangkaian 0/24 melalui antara muka rangkaian ENP0S3 menggunakan 192.168.0.15 sebagai pintu masuk ”.

Rangkaian Laluan di Linux

Begitu juga di Dev4 (OpenSuse Box) ke Ping Hosts pada tahun 192.168.0.0/24 Rangkaian:

# Laluan IP Tambah 192.168.0.0/24 melalui 10.0.0.15 DEV ENP0S3 
Routing Rangkaian di Linux

Akhirnya, kita perlu membolehkan penghantaran dalam penghala Debian kami:

# echo 1>/proc/sys/net/ipv4/ip_forward 

Sekarang mari kita ping:

Semak penghalaan rangkaian

dan,

Status ping laluan

Untuk menjadikan tetapan ini berterusan di seluruh but, edit /etc/sysctl.Conf di penghala dan pastikan jaring.IPv4.ip_forward Variabel ditetapkan untuk benar seperti berikut:

jaring.IPv4.ip_forward = 1 

Di samping itu, konfigurasikan NIC pada kedua -dua pelanggan (cari fail konfigurasi dalam /etc/sysconfig/rangkaian pada opensuse dan /etc/sysconfig/skrip rangkaian pada centos - dalam kedua -dua kes ia dipanggil IFCFG-ENP0S3).

Inilah fail konfigurasi dari kotak opensuse:

Bootproto = siaran statik = 10.0.0.255 ipaddr = 10.0.0.18 netmask = 255.255.255.0 Gateway = 10.0.0.15 NAMA = ENP0S3 Rangkaian = 10.0.0.0 onboot = ya 
Contoh 4: Menggunakan Pelayan Linux ke Pakej Laluan Antara Rangkaian Persendirian dan Internet

Satu lagi senario di mana mesin Linux boleh digunakan sebagai penghala adalah apabila anda perlu berkongsi sambungan internet anda dengan LAN peribadi.

Penghala: Debian wheezy 7.7 [ETH0: IP AWAM, ETH1: 10.0.0.15/24] - Dev2 Pelanggan: OpenSuse 13.2 [ENP0S3: 10.0.0.18/24] - Dev4 

Di samping menubuhkan pemajuan paket dan jadual penghalaan statik dalam klien seperti dalam contoh sebelumnya, kita perlu menambah beberapa peraturan iptables dalam penghala:

# iptables -t nat -a postrouting -o eth0 -j masquerade # iptables -a forward -i et0 -o eth1 -m state -state berkaitan, ditubuhkan -j menerima # iptables -a forward -i et1 -o et0 -j Menerima 

Perintah pertama menambah peraturan ke Postrouting Rantai di Jadual NAT (Rangkaian Alamat Terjemahan), menunjukkan bahawa ETH0 NIC harus digunakan untuk pakej keluar.

Masquerade menunjukkan bahawa NIC ini mempunyai IP yang dinamik dan sebelum menghantar pakej ke "Dunia liar liar"Dari internet, alamat sumber peribadi paket harus ditukar kepada IP awam penghala.

Di LAN dengan banyak tuan rumah, penghala menjejaki sambungan yang ditetapkan dalam /proc/net/ip_conntrack Oleh itu, ia tahu ke mana untuk mengembalikan respons dari internet ke.

Hanya sebahagian daripada output:

# kucing/proc/net/ip_conntrack 

ditunjukkan dalam tangkapan skrin berikut.

Pakej Laluan di Linux

Di mana asal (IP peribadi OpenSuse Box) dan destinasi (Google DNS) paket diserlahkan. Inilah hasil berlari:

# curl www.Tecmint.com 

di kotak opensuse.

Seperti yang saya pasti anda sudah boleh meneka, penghala menggunakan Google 8.8.8.8 Sebagai Nameserver, yang menjelaskan mengapa destinasi paket keluar menunjuk ke alamat itu.

Catatan: Pakej masuk dari Internet hanya diterima adalah jika mereka adalah sebahagian daripada sambungan yang telah ditetapkan (Perintah #2), sementara pakej keluar dibenarkan "Keluar Percuma"(Perintah #3).

Jangan lupa untuk membuat peraturan iptables anda berterusan berikutan langkah -langkah yang digariskan dalam Bahagian 8 - Konfigurasi Firewall iptables dari siri ini.

Penghalaan dinamik dengan quagga

Pada masa kini, alat yang paling banyak digunakan untuk penghalaan dinamik di Linux adalah Quagga. Ia membolehkan pentadbir sistem dilaksanakan, dengan pelayan Linux yang agak rendah, fungsi yang sama yang disediakan oleh router Cisco yang berkuasa (dan mahal).

Alat itu sendiri tidak mengendalikan penghalaan, tetapi mengubah jadual penghalaan kernel kerana ia mempelajari laluan terbaik baru untuk mengendalikan paket.

Oleh kerana ia adalah garpu zebra, sebuah program yang perkembangannya tidak lama lagi, ia mengekalkan sebab -sebab sejarah arahan dan struktur yang sama daripada zebra. Itulah sebabnya anda akan melihat banyak rujukan kepada zebra dari titik ini.

Sila ambil perhatian bahawa tidak mungkin untuk merangkumi penghalaan dinamik dan semua protokol yang berkaitan dalam satu artikel, tetapi saya yakin bahawa kandungan yang dibentangkan di sini akan berfungsi sebagai titik permulaan bagi anda untuk membina.

Memasang Quagga di Linux

Untuk memasang quagga pada pengedaran pilihan anda:

# Kemas kini Aptitude & & Aptitude Pasang Quagga [on Ubuntu] # yum update && yum pasang quagga [centos/rhel] # zypper refresh && zypper install quagga [opensuse] 

Kami akan menggunakan persekitaran yang sama dengan Contoh #3, dengan satu -satunya perbezaan bahawa ETH0 disambungkan ke penghala gerbang utama dengan IP 192.168.0.1.

Seterusnya, edit /etc/quagga/daemon dengan,

zebra = 1 ripd = 1 

Sekarang buat fail konfigurasi berikut.

#/etc/quagga/zebra.conf #/etc/quagga/ripd.Conf 

Dan tambahkan baris ini (ganti nama hos dan kata laluan pilihan anda):

perkhidmatan quagga memulakan semula hostname dev2 kata laluan quagga 
# perkhidmatan quagga dimulakan semula 
Mulakan Perkhidmatan Quagga

Catatan: Itu ripd.Conf adalah fail konfigurasi untuk protokol maklumat penghalaan, yang menyediakan penghala dengan maklumat yang mana rangkaian dapat dicapai dan sejauh mana (dari segi jumlah hop).

Perhatikan bahawa ini hanya salah satu protokol yang boleh digunakan bersama dengan quagga, dan saya memilihnya untuk tutorial ini kerana kemudahan penggunaan dan kerana kebanyakan peranti rangkaian menyokongnya, walaupun ia mempunyai kelemahan kelayakan lulus dalam teks biasa. Atas sebab itu, anda perlu memberikan keizinan yang betul kepada fail konfigurasi:

# chown quagga: quaggavty/etc/quagga/*.conf # chmod 640/etc/quagga/*.Conf 
Contoh 5: Menyediakan quagga untuk mengarahkan trafik IP secara dinamik

Dalam contoh ini, kami akan menggunakan persediaan berikut dengan dua router (pastikan untuk membuat fail konfigurasi untuk Router #2 Seperti yang dijelaskan sebelumnya):

Konfigurasikan quagga

Penting: Jangan lupa untuk mengulangi persediaan berikut untuk kedua -dua router.

Sambungkan ke zebra (mendengar di port 2601), yang merupakan perantara logik antara penghala dan kernel:

# Telnet Localhost 2601 

Masukkan kata laluan yang ditetapkan di /etc/quagga/zebra.Conf fail, dan kemudian aktifkan konfigurasi:

Dayakan konfigurasi terminal 

Masukkan alamat IP dan topeng rangkaian setiap NIC:

inter eth0 ip addr 192.168.0.15 inter eth1 ip addr 10.0.0.15 Keluar Keluar Tulis 
Konfigurasikan penghala

Sekarang kita perlu menyambung ke RIP Terminal Daemon (port 2602):

# Telnet Localhost 2602 

Masukkan nama pengguna dan kata laluan seperti yang dikonfigurasikan di /etc/quagga/ripd.Conf fail, dan kemudian taipkan arahan berikut dengan berani (komen ditambah demi penjelasan):

membolehkan menghidupkan arahan mod istimewa. Konfigurasikan terminal perubahan pada mod konfigurasi. Perintah ini adalah langkah pertama untuk konfigurasi ROUTER RIP membolehkan rip. Rangkaian 10.0.0.0/24 Menetapkan antara muka RIP Enable untuk 10.0.0.0/24 Rangkaian. keluar keluar tulis Menulis konfigurasi semasa ke fail konfigurasi. 
Dayakan penghala

Catatan: Bahawa dalam kedua -dua kes konfigurasi dilampirkan ke garisan yang kami tambahkan sebelumnya (/etc/quagga/zebra.Conf dan /etc/quagga/ripd.Conf).

Akhirnya, sambungkan lagi ke perkhidmatan zebra pada kedua -dua router dan perhatikan bagaimana setiap satu daripada mereka mempunyai "belajar"Laluan ke rangkaian yang berada di belakang yang lain, dan yang merupakan hop seterusnya untuk sampai ke rangkaian itu, dengan menjalankan arahan Tunjukkan laluan IP:

# tunjukkan laluan ip 
Semak penghalaan IP

Sekiranya anda ingin mencuba protokol atau persediaan yang berbeza, anda mungkin ingin merujuk kepada tapak projek Quagga untuk dokumentasi selanjutnya.

Kesimpulan

Dalam artikel ini, kami telah menerangkan bagaimana untuk menyediakan penghalaan statik dan dinamik, menggunakan router kotak linux (s). Jangan ragu untuk menambah seberapa banyak router yang anda mahukan, dan untuk mencuba seberapa banyak yang anda mahukan. Jangan teragak -agak untuk kembali kepada kami menggunakan borang hubungan di bawah jika anda mempunyai komen atau soalan.

Menjadi Jurutera Bersertifikat Linux