GNU/Linux >> Belajar Linux >  >> Linux

Mengapa lalu lintas jaringan Linux hanya melewati eth0?

Ada dua kemungkinan model desain untuk tumpukan jaringan TCP/IP:model host yang kuat dan model host yang lemah. Anda mengharapkan perilaku yang cocok dengan model host yang kuat. Linux dirancang untuk menggunakan model host yang lemah. Secara umum model host yang lemah lebih umum karena mengurangi kerumitan kode perutean dan dengan demikian mungkin menawarkan kinerja yang lebih baik. Jika tidak, kedua model host hanyalah prinsip desain yang berbeda:tidak ada yang secara inheren lebih baik dari yang lain.

Pada dasarnya, model host yang lemah berarti bahwa lalu lintas keluar akan dikirim ke antarmuka pertama yang tercantum dalam tabel routing yang sesuai dengan alamat IP tujuan (atau gateway yang dipilih, jika tujuan tidak dapat dijangkau secara langsung), tanpa memperhatikan alamat IP sumber .

Ini pada dasarnya mengapa umumnya tidak disarankan untuk menggunakan dua antarmuka fisik terpisah jika Anda memerlukan dua alamat IP pada segmen jaringan yang sama. Sebagai gantinya tetapkan dua alamat IP untuk satu antarmuka (alias IP:misalnya eth1 =192.168.8.142 dan eth1:0 =192.168.8.140). Jika Anda membutuhkan lebih banyak bandwidth daripada yang dapat disediakan oleh satu antarmuka, gabungkan (atau tim, jika ada) dua atau lebih antarmuka secara bersamaan, lalu jalankan kedua IP pada ikatan/tim.

Dengan men-tweak sejumlah pengaturan sysctl dan menggunakan fungsionalitas "perutean lanjutan" untuk menyiapkan tabel perutean independen untuk setiap NIC, dimungkinkan untuk membuat Linux berperilaku seperti sistem model host yang kuat. Tapi itu adalah konfigurasi yang sangat istimewa, dan saya sarankan untuk berpikir dua kali sebelum menerapkannya.

Lihat jawabannya di Perutean Sumber Linux, Model Sistem Ujung Kuat / Model Host Kuat? jika Anda benar-benar membutuhkannya.


Poin tambahan untuk dipertimbangkan adalah antarmuka eth1 dikonfigurasi dengan subnet mask 255.255.255.255.

Ini berarti bahwa antarmuka eth1 dikonfigurasi untuk tidak mengharapkan perangkat lain (host) pada antarmuka jaringannya. Ini berarti bahwa itu tidak akan dapat berkomunikasi dengan klien 192.168.8.142 Anda.


Setelah banyak pencarian, saya menemukan Mengapa netcat tidak menggunakan antarmuka yang tepat terkait dengan IP? , dan ini adalah masalah yang sama. Seperti yang dikatakan @telcoM, lalu lintas keluar akan dikirim ke antarmuka pertama, dan itulah masalahnya, jadi, cara termudah untuk menyelesaikannya adalah:

ip route add default via 192.168.8.142 dev eth1 table 142
ip rule add from 192.168.8.142 table 142

Rute ini akan membuat ip route get 192.168.8.135 from 192.168.8.142 mengembalikan eth1 bukan eth0. Kemudian semuanya berfungsi seperti yang diharapkan.


Linux
  1. Apa itu POSIX? Mengapa Penting bagi Pengguna Linux/UNIX?

  2. Linux - Pengikatan Antarmuka Jaringan Tampaknya Hanya Berfungsi Sebagai Root?

  3. Linux – Perangkat Eth0 Tampaknya Tidak Hadir, Menunda Inisialisasi?

  1. Linux – Mengapa Perlu Waktu Lama Untuk Mendeteksi Usb Stick?

  2. Linux – Bagaimana Cara Meneruskan Lalu Lintas Antara Ruang Nama Jaringan Linux?

  3. Cara Memantau dan Mencatat Lalu Lintas Jaringan di Linux Menggunakan vnStat

  1. Mengapa preprosesor C mengartikan kata linux sebagai konstanta 1?

  2. Bagaimana saya bisa menyalurkan semua lalu lintas jaringan saya melalui SSH?

  3. Mengapa Ctrl + V tidak menempel di Bash (Linux shell)?