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.