Mengarahkan paket yang ditandai ke perangkat Tun

1

Saya memiliki program kecil yang perlu melakukan berbagai hal dengan pemilihan paket, berdasarkan berbagai aturan iptable. Paketnya adalah MARK edit dengan cara ini:

iptables -t mangle -d 10.10.0.0/16 -j MARK --set-mark 4
iptables -t mangle -d 10.11.0.0/24 -j MARK --set-mark 5
iptables -t mangle -d 10.0.0.1     -j MARK --set-mark 1

Saya juga memiliki perangkat Tun bernama maintun bahwa proses userspace melakukan beberapa I / O aktif.

Bagaimana cara saya memastikan bahwa paket yang terpengaruh dikirim ke / melalui Internet? maintun?

Jarmund
sumber

Jawaban:

3

Kau gunakan perutean kebijakan .

Pertama, Anda menandai beberapa paket,

 iptables -A PREROUTING -t mangle -d 10.0.0.1 -j MARK --set-mark 1

kemudian Anda membuat tabel routing baru, sebut saja TunRoutTable :

 echo 201 TunRoutTable >> /etc/iproute2/rt_tables

maka Anda memberitahu pc Anda untuk menggunakan tabel TunRoutTable untuk paket yang ditandai 1 :

 ip rule add fwmark 1 table TunRoutTable

dan sekarang Anda memberikan gateway default untuk tabel perutean baru:

 ip route add default via XXX.YYY.WWW.ZZZ dev tun0 table TunRoutTable

di mana XXX.YY.WWW.ZZZ adalah alamat ip (dalam notasi quad bertitik biasa) dari gateway Anda pada antarmuka Tun0.

MariusMatutiae
sumber
Terima kasih! Aku s ip rule dan ip route dijamin bekerja di distro "semua" yang mendukung iptables? Lebih baik bagi saya untuk mencoba menyimpannya di iptables jika tidak. Kemungkinan saya perlu menjalankan ini pada berbagai distro, mulai dari Arch ke Centos.
Jarmund
1
perintah ip adalah bagian dari paket iproute2 yang diinstal secara default, atau dapat diunduh melalui manajer paket distro Anda. Perlu diingat bahwa iproute2 adalah baru utilitas jaringan standar, dan telah menggantikan semua utilitas sebelumnya seperti ifconfig, netstat, dan sebagainya.
MariusMatutiae
Baiklah, asalkan itu adalah rilis terbaru, kemungkinan besar termasuk di bawah iproute2. Sepertinya aku harus mengikuti perkembangan zaman, heh.
Jarmund