rute lalu lintas keluar gateway berbeda dengan jaringan tujuan

9

Saya memiliki beberapa gateway dan ingin mengarahkan beberapa lalu lintas dari gateway yang berbeda berdasarkan tujuannya. Saya kira saya harus menggunakan kombinasi aturan iproute2 dan iptables, tetapi saya tidak yakin harus mulai dari mana.
Adakah yang bisa memberikan contoh?

Walter
sumber

Jawaban:

9

Anda mungkin dapat melakukan apa yang Anda inginkan ip route:

ip route add 8.8.8.8 via 10.0.0.1 dev enp3s8
ip route add 10.0.0.0/24 dev eth0

Yang pertama ip route addmenunjukkan alamat IP tunggal, mengirimkan antarmuka ethernet yang diberikan (ep3s8) ke router hop berikutnya, 10.0.0.1

Rute kedua adalah untuk seluruh jaringan, 10.xyz, mengirimkan kartu ethernet yang diberikan, eth0. Itu adalah "jaringan lokal", yang tidak memiliki router hop berikutnya, semuanya pada kabel logis yang sama.

Anda ingin membaca man ip-routesebelum melakukan sesuatu. Juga, bersiaplah untuk reboot, dan jangan melakukan ini dari jarak jauh. Anda dapat dengan mudah membuat rute yang salah yang menghentikan akses jarak jauh Anda. Saya adalah suara pengalaman dalam rekomendasi terakhir ini.

Bruce Ediger
sumber
1
Perhatikan bahwa Anda juga dapat menentukan gateway untuk seluruh blok, `` ip route add 10.1.0.0/16 via 192.168.0.1`
jthill
Terima kasih atas jawaban Anda, itu akan membantu mengarahkan saya ke arah yang benar. Saya akan mencoba ini dan memberi tahu Anda.
Walter
5

Apa yang Anda tanyakan adalah policy-based routingatau source-based routing. Ada pengantar yang sangat baik oleh David Schwartz di situs yang sama ini.

Saya ingin menunjukkan bahwa ada juga program kecil yang rapi, yang dapat ditemukan di sini , yang memungkinkan Anda untuk mengikat aplikasi spesifik ke antarmuka yang diberikan. Ini tentu saja mudah dengan aplikasi seperti openssh yang memiliki opsi untuk mengikat ke alamat mendengarkan yang diinginkan. Tetapi perpustakaan ini memungkinkan Anda untuk mengikat aplikasi bahkan tanpa opsi seperti (seperti Firefox) ke alamat IP yang diberikan.

Dengan cara ini, Anda dapat memilih apakah Anda ingin menyediakan tabel perutean yang terpisah untuk semua aplikasi, atau mengabaikan spesifikasi yang sama berdasarkan per aplikasi.

MariusMatutiae
sumber
Anda tidak memerlukan perutean kebijakan jika Anda ingin merutekan berdasarkan tujuan.
Diego Woitasen
Hai, itu juga poin yang bagus, hmm, yang akan memungkinkan fleksibilitas yang lebih besar yang mungkin lebih maju daripada yang saya inginkan pada saat ini. Pasti sesuatu yang harus dipelajari.
Walter
3

Tempat yang bagus untuk membaca tentang perutean basis sumber adalah Linux Routing Lanjutan & Kontrol Lalu Lintas
Anda juga dapat membaca manual

man ip rule
man ip route

Secara umum, Anda harus menambahkan aturan (saya menambahkan antarmuka eth1 hanya untuk tujuan demonstrasi, dapat dihilangkan)

#ip rule add dev eth1 to 170.10.0.10 table 2 priority 20000

di sini adalah:
dev eth1 - perangkat yang akan digunakan untuk mengirim paket
ke 170.10.0.10 -
tabel tujuan 2 - tabel di mana Anda harus menentukan
prioritas rute Anda 20000 - prioritas aturan

Anda dapat melihat aturan Anda dengan

#ip ru sh
    0: from all lookup local
20000: from all to 170.10.0.10 iif eth1 lookup 2
32766: from all lookup main
32767: from all lookup default

Selanjutnya, Anda harus menambahkan rute dengan cara biasa, tetapi Anda harus menentukan tabel (tabel 2), di mana Anda akan meletakkan rute

#ip route add table 2 via 170.10.0.1 default

untuk melihat rute Anda, Anda harus berlari

#ip route show ta 2
dengan mudah-vm
sumber