Saya memiliki masalah yang agak aneh. Saya memiliki server dengan dua antarmuka jaringan eth0
dan eth1
. Masing-masing terhubung ke jaringan yang berbeda. Setiap jaringan memiliki gateway internet. Server memiliki berbagai koneksi keluar : http (beberapa skrip di server mengikis situs web), klien nfs, klien samba, klien dns, dan pembuat email untuk beberapa nama.
Untuk alasan saya tidak akan masuk, saya perlu membagi klien keluar ini sehingga lalu lintas keluar http, nfs, samba dan dns hanya diminta eth0
sementara semua yang lain berjalan lancar eth1
.
Saya telah membaca sekitar beberapa pencarian Google dan sepertinya iptables
itulah yang saya butuhkan tetapi saya benar-benar tidak tahu. Saya hanya terbiasa mengelola aturan firewall masuk ufw
.
Bisakah seseorang memulai saya dengan beberapa contoh aturan dan memberi tahu saya cara mendapatkan sistem untuk mengadopsi aturan ini saat boot? Idealnya tanpa mengunci saya dari koneksi SSH saya (saya bisa mendapatkan akses fisik, tetapi saya lebih suka tidak).
Sunting Saya dapat membagi klien menjadi dua pengguna jika memungkinkan untuk membatasi semua lalu lintas keluar dari akun ke satu antarmuka. di atas kertas yang sepertinya mungkin lebih mudah.
sumber
iftop
dan mereka masing-masing menunjukkan jenis lalu lintas yang tepat. Terima kasih banyak.iptables-save
daniptables-restore
. Jika Anda menggunakan NetworkManager, Anda dapat mengatur skrip dispatcher untuk mengotomatiskan proses. Sayangnya, halaman NM resmi tidak memiliki dokumentasi tentang fitur tersebut, tetapi dokumentasi Ubuntu dan Linux Arch keduanya menyebutkannya.Nah, cara " termudah " adalah dengan menginstruksikan program tunggal untuk menggunakan antarmuka tertentu (atau ip antarmuka. Misalnya:
menginstruksikan ping untuk menggunakan eth1 sebagai antarmuka sumber, sementara
menginstruksikan wget untuk pergi melalui antarmuka yang memiliki
10.0.0.1
alamat IP.Jujur saya tidak tahu apakah itu mungkin dengan semua program yang Anda butuhkan, tetapi ini adalah awal untuk memangkas aturan yang Anda butuhkan untuk menulis
iptables
daniproute
program - programnya.Sebagai permulaan, Anda harus membaca tutorial ini di beberapa koneksi internet . Bacaan yang bagus juga merupakan salah satu dari ribuan tutorial iptables, khususnya pada
outbound filtering
,process
/pid filtering
danport filtering
.sumber
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
danip rule
perintah untuk mengontrol bagaimana paket-paket diarahkan berdasarkan antarmuka keluar mereka. Sebagai contoh saya, saya akan menganggap jaringan berikut: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
danip 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
: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: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.Anda biasanya ingin
alternate
tabel terlihat mirip denganmain
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:Aturan ini mengatakan setiap lalu lintas yang datang dari alamat pada jaringan 192.168.0 akan menggunakan
alternate
tabel routing bukanmain
tabel normal . Langkah terakhir adalah memastikan semua klien yang harus menggunakaneth0
mengikatnya. Denganwget
, 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.sumber