Pertanyaan saya pada dasarnya sama dengan Hanya mengizinkan lalu lintas keluar tertentu pada antarmuka tertentu .
Saya memiliki dua antarmuka eth1
(10.0.0.2) dan wlan0
(192.168.0.2). Rute default saya adalah untuk eth1
. Katakanlah saya ingin semua https-traffic dilalui wlan0
. Sekarang jika saya menggunakan solusi yang disarankan dalam pertanyaan lain, lalu lintas https akan melalui wlan0
, tetapi masih akan memiliki sumber-alamat eth1
(10.0.0.2). Karena alamat ini tidak dapat dirutekan ke wlan0
gateway, jawaban tidak akan pernah kembali. Cara mudahnya adalah dengan hanya mengatur bind-addr dengan benar dalam aplikasi, tetapi dalam hal ini tidak berlaku.
Saya pikir saya perlu menulis ulang src-addr:
# first mark it so that iproute can route it through wlan0
iptables -A OUTPUT -t mangle -o eth1 -p tcp --dport 443 -j MARK --set-mark 1
# now rewrite the src-addr
iptables -A POSTROUTING -t nat -o wlan0 -p tcp --dport 443 -j SNAT --to 192.168.0.2
Sekarang tcpdump melihat paket keluar baik-baik saja dan paket masuk tiba untuk 192.168.0.2, namun mereka mungkin tidak pernah berakhir dalam aplikasi, karena semua yang pernah saya lihat, adalah bahwa aplikasi sedang mengirim ulang paket-SYN, meskipun SYN- ACK sudah diterima.
Jadi saya pikir, mungkin saya perlu menulis ulang alamat yang masuk juga:
iptables -A PREROUTING -t nat -i wlan0 -p tcp --sport 443 -j DNAT --to 10.0.0.2
tapi itu juga tidak berhasil. Jadi saya agak macet di sini. Ada saran?
sumber
src
opsi keip route
perintah untuk menentukan alamat sumber yang benar.POSTROUTING
SNAT
akan mengurusnya.solusi bahamat benar; namun, harap dicatat bahwa satu-satunya cara bagi saya untuk membuat pekerjaan ini adalah dengan menonaktifkan rp_filter untuk setiap antarmuka dalam sistem, tidak hanya dua (eth1 dan wlan0 dalam kasus ini) yang terlibat dalam NATing.
(lihat catatan PENTING di akhir halaman ini: Howto Routing Lanjutan - tautan yang diposting di sana tidak ada lagi, tapi saya menemukannya melalui mesin wayback)
sumber
Satu saran: Anda harus selalu menggunakan
--sport
alih-alih--dport
dalam rantai keluaran.NAT mengubah
dport
dan itu akan membuat aturan Anda tidak dapat dibatalkan.sumber
Saya pikir di bawah ini diperlukan:
sumber