Apakah mungkin pengalihan TCP menjaga alamat IP pencetusnya?

1

Saya memiliki beberapa host Ubuntu, masing-masing dengan lebih banyak mesin virtual Ubuntu. Salah satu mesin virtual adalah server SMTP kami. Pada host mesin virtual SMTP, semua panggilan SMTP dialihkan ke VM SMTP yang digunakan rinetd dengan konfigurasi berikut:

aa.bb.cc.dd   25              172.16.1.5      25
aa.bb.cc.dd   465             172.16.1.5      465
aa.bb.cc.dd   587             172.16.1.5      587
aa.bb.cc.dd   993             172.16.1.5      993

aa.bb.cc.dd adalah alamat IP publik dari host tempat SMTP VM duduk. 172.16.1.5 adalah alamat internal VM SMTP.

Masalah saya adalah, bahwa saya tidak dapat mengatur relai pada SMTP VM, karena server postfix pada SMTP VM menerima setiap panggilan dengan aa.bb.cc.dd sebagai alamat IP asal, jadi saya tidak dapat mengatur penyaringan saat menyampaikan, Saya ingin mengaktifkan relai hanya untuk beberapa alamat IP (untuk host kami yang lain).

Apakah ada kemungkinan untuk meneruskan panggilan SMTP ke SMTP1 VM, sehingga alamat IP pencipta disimpan?

Tibor Nagy
sumber

Jawaban:

0

Anda harus melihat ke dalam menggunakan iptables dan iptables-persistent paket - ini akan memungkinkan Anda menggunakan NATing, bukan hanya 'meneruskan' koneksi dengan membuat soket baru.

Konfigurasi Anda akan terlihat seperti ini:

-A PREROUTING -d aa.bb.cc.dd -p tcp -m tcp --dport 25  -j DNAT --to-destination 172.16.1.5:25
-A PREROUTING -d aa.bb.cc.dd -p tcp -m tcp --dport 465 -j DNAT --to-destination 172.16.1.5:465
-A PREROUTING -d aa.bb.cc.dd -p tcp -m tcp --dport 587 -j DNAT --to-destination 172.16.1.5:587
-A PREROUTING -d aa.bb.cc.dd -p tcp -m tcp --dport 993 -j DNAT --to-destination 172.16.1.5:993

Anda juga harus mengaktifkan ip_forward. Tetapkan yang berikut ini di /etc/sysctl.conf:

net.ipv4.ip_forward=1

Mesin host Anda akan beroperasi seperti router, memungkinkan para tamu diakses, mempertahankan IP sumber yang sebenarnya.

Attie
sumber
Entah bagaimana itu tidak berhasil. Saya mencoba terlebih dahulu untuk mengarahkan ulang port HTML, karena saya dapat melihat IP sumber di log apache segera. Ini timeout sederhana atau kadang-kadang saya dapatkan ERR_NETWORK_CHANGED di browser. Saya juga menambahkan LOG untuk melihat, bahwa aturan tercapai dan benar-benar tercapai, tetapi tidak diteruskan. Apa yang salah? Meja nat saya terlihat seperti: LOG tcp -- 0.0.0.0/0 94.231.88.101 tcp dpt:80 LOG flags 0 level 4 DNAT tcp -- 0.0.0.0/0 94.231.88.101 tcp dpt:80 to:172.16.2.201:80
Tibor Nagy
Apakah Anda mengaktifkan ip_forward? Silakan juga periksa kebijakan default / hasil untuk rantai FORWARD, iptables -L. Sepertinya ini saat ini DROP (maka timeout). catatan: seperti sekarang jelas bahwa ini adalah host di internet, Anda harus berhati-hati dengan routing - pastikan Anda firewall dengan benar kalau tidak orang dapat mengakses VM tamu Anda.
Attie
Iya nih, cat /proc/sys/net/ipv4/ip_forward mengembalikan 1. The filter tabel hanya memiliki aturan dasar, yaitu INPUT / FORWARD / OUTPUT (kebijakan ACCEPT). Saya bingung.
Tibor Nagy
Satu langkah ke depan. Jika saya tambahkan iptables -t nat -A POSTROUTING -j MASQUERADE, maka sistem target tercapai, tetapi tentu saja saya kehilangan IP sumber asli. Entah bagaimana, PREROUTING tidak berfungsi di antara dua antarmuka.
Tibor Nagy
Saya kira, apa masalahnya. VM yang berjalan dengan VirtualBox memiliki jaringan pribadi, yang tidak memungkinkan untuk terhubung dari alamat IP luar.
Tibor Nagy