GNU/Linux >> Belajar Linux >  >> Linux

Lalu lintas keluaran pada antarmuka yang berbeda berdasarkan port tujuan

Anda sudah dekat.

Alasan sebenarnya bahwa aplikasi tidak melihat lalu lintas balik adalah karena perlindungan spoofing IP bawaan kernel. Yaitu, lalu lintas balik tidak cocok dengan tabel perutean dan oleh karena itu dibatalkan. Anda dapat memperbaikinya dengan menonaktifkan perlindungan spoofing seperti ini:

sudo sysctl net.ipv4.conf.wlan0.rp_filter=0

Tapi saya tidak akan merekomendasikannya. Cara yang lebih tepat adalah membuat instance perutean alternatif.

  1. Tanda itu diperlukan. Pertahankan.
  2. NAT sumber juga diperlukan.
  3. DNAT akhir tidak diperlukan, jadi Anda dapat menghapusnya.

Pastikan Anda memiliki iproute paket diinstal. Jika Anda memiliki ip perintah maka Anda sudah siap (yang sepertinya Anda lakukan, tetapi jika tidak mendapatkannya terlebih dahulu).

Edit /etc/iproute2/rt_tables dan tambahkan tabel baru dengan menambahkan baris berikut:

200 wlan-route

Anda kemudian perlu mengonfigurasi tabel perutean baru bernama wlan-route dengan gateway default dan membuat aturan untuk mengirimkan lalu lintas ke tabel tersebut secara kondisional. Saya akan menganggap gateway default Anda adalah 192.168.0.1. Biasanya ini harus sesuai dengan jaringan Anda yang sebenarnya, dan bukan hanya asumsi saya.

ip route add default via 192.168.0.1 dev wlan0 table wlan-route
ip rule add fwmark 0x1 table wlan-route

Skrip terakhir Anda yang dianotasi akan terlihat seperti ini:

# Populate secondary routing table
ip route add default via 192.168.0.1 dev wlan0 table wlan-route
# Anything with this fwmark will use the secondary routing table
ip rule add fwmark 0x1 table wlan-route
# Mark these packets so that iproute can route it through wlan-route
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

solusi bahamat benar; namun, perlu diketahui bahwa satu-satunya cara bagi saya untuk membuat ini berfungsi adalah dengan menonaktifkan rp_filter untuk setiap antarmuka dalam sistem, tidak hanya keduanya (eth1 dan wlan0 dalam kasus ini) yang terlibat dalam NATing.

for f in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 0 > $f; done
echo 1 > /proc/sys/net/ipv4/route/flush

(lihat catatan PENTING di akhir halaman ini:Advanced Routing Howto -- link yang diposting di sana sudah tidak ada lagi, tetapi saya menemukannya melalui mesin wayback)


Linux
  1. Meneruskan Lalu Lintas Antara 2 Antarmuka?

  2. mengapa output dari `du` seringkali sangat berbeda dari `du -b`

  3. Bagaimana cara memblokir semua lalu lintas antara dua antarmuka?

  1. Bagaimana saya bisa memantau lalu lintas port serial?

  2. Bagaimana suatu proses tampaknya memiliki nama yang berbeda dalam keluaran ps?

  3. bagaimana cp -f berbeda dari cp --remove-destination?

  1. Linux – Lalu Lintas Keluaran Pada Antarmuka Berbeda Berdasarkan Port Tujuan?

  2. Centos – Lalu Lintas Jaringan Terpisah Pada Dua Antarmuka Jaringan?

  3. Bagaimana cara mengarahkan subdomain ke port lain di server yang sama?