Cara yang tepat untuk melakukannya adalah dengan mengikat () ke antarmuka yang ingin Anda gunakan untuk paket keluar. Karena Anda kemudian dapat mengatur rute dengan ip route
dan ip rule
perintah untuk mengontrol bagaimana paket-paket diarahkan berdasarkan antarmuka keluar mereka. Sebagai contoh saya, saya akan menganggap jaringan berikut:
- eth0:
- Alamat: 192.168.0.2/24
- Gateway Default: 192.168.0.1
- eth1:
- Alamat: 192.168.1.2/24
- Gateway Default: 192.168.1.1
Saya akan membuat dua tabel routing, satu untuk lalu lintas keluar untuk eth0 disebut alternatif dan satu tabel untuk eth1 disebut utama. Routing table main selalu ada dan merupakan tabel normal yang digunakan oleh perintah route
dan ip route
. Kebanyakan orang tidak pernah berurusan dengan meja lain. Untuk membuat tabel yang disebut alternatif, kami akan menambahkan baris berikut ke /etc/iproute2/rt_tables
:
10 alternate
Tabel utama memiliki prioritas default 254. Aturan-aturan yang berlaku tabel routing dikendalikan oleh ip rule
perintah. Secara default, perintah itu akan mencetak daftar aturan yang ada yang akan terlihat seperti ini:
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
Ini pada dasarnya mengatakan akan mencari rute dalam tabel local
yang merupakan tabel khusus yang dikelola oleh kernel untuk rute lokal seperti alamat IP saya sendiri. Kemudian akan mencoba tabel utama dan tabel default. Default tabel biasanya kosong sehingga jika tidak ada kecocokan di main, tidak ada rute untuk host. Pertama, mari kita isi tabel bergantian dengan aturan untuk eth0.
sudo ip route add table alternate 192.168.0.0/24 dev eth0
sudo ip route add table alternate 192.168.1.0/24 dev eth1
sudo ip route add table alternate default via 192.168.0.1
Anda biasanya ingin alternate
tabel terlihat mirip dengan main
tabel. Satu-satunya perbedaan adalah ketika routing harus berbeda. Anda mungkin tidak ingin menyertakan baris kedua di atas jika Anda benar-benar ingin semua lalu lintas NFS, HTTP, dll. Pergi melalui gateway default pada eth0 bahkan jika itu ditujukan untuk jaringan di eth1. Langkah selanjutnya adalah menambahkan aturan kapan harus menggunakan tabel rute alternatif ini:
sudo ip rule add from 192.168.0.0/24 pref 10 table alternate
Aturan ini mengatakan setiap lalu lintas yang datang dari alamat pada jaringan 192.168.0 akan menggunakan alternate
tabel routing bukan main
tabel normal . Langkah terakhir adalah memastikan semua klien yang harus menggunakan eth0
mengikatnya. Dengan wget
, misalnya, atur --bind-address=192.168.0.2
, untuk NFS aturclientaddr=192.168.0.2
opsi pemasangan. Jika menggunakan LibWWW dengan Perl, Anda dapat mengatur opsi localaddr di LWP :: UserAgent untuk mengontrol antarmuka lokal yang diikatnya. Jika Anda memiliki klien yang tidak dapat Anda kendalikan sumber pengikatan dan kompilasi bukan opsi, Anda mungkin dapat menggunakan aturan iptables untuk mengubah alamatnya, tetapi ini lebih merupakan peretasan dan mungkin tidak berfungsi. Anda membutuhkan aturan SNAT yang diatur dalam rantai PREROUTING dari tabel nat atau tabel mangle. Anda masih membutuhkan tabel-tabel perutean yang dimodifikasi yang diberikan di atas agar ini berfungsi.
iftop
dan mereka masing-masing menunjukkan jenis lalu lintas yang tepat. Terima kasih banyak.