Penerusan port sederhana

19

Saya dalam sedikit masalah karena saya mencoba untuk mengatur proxy terbalik dengan dan server kedua. Ide saya adalah untuk mendapatkan firewall untuk meneruskan https ke proksi terbalik dan port 29418 (gerrit ssh) ke server kedua. Sekarang orang IT saya yang bekerja sama berkata: TIDAK BISA! Baik kedua port pergi ke server 1 atau kedua port pergi ke server 2.

Ok, sebagai upaya untuk menyelesaikan, saya mencoba mengatur port forwarding pada proxy reverse port 29418 -> server2: 29418

Detail:

  • IP Server1: 10.0.0.132 dan 192.168.10.2 di Ubuntu 12.04.2 LTS
  • IP Server2: 10.0.0.133 dan 192.168.10.3 di Ubuntu 12.04.2 LTS

Sekarang baik https dan port 29418 pergi dari firewall ke 10.0.0.132, IT mengatakan itu satu-satunya cara. :(

Jadi tolong beri tahu saya cara meneruskan dari 10.0.0.132:9418 -> 192.168.10.3:9418 atau 10.0.0.133:9418

Ketika saya bekerja pada 10.0.0.132 saya dapat terhubung ke 10.0.0.133:9418 dan 192.168.10.3:9418 sehingga port terbuka.

- Perbarui -

Iptables -t nat -L saya terlihat seperti ini:

root @ dev: / root # iptables -t nat -L
Chain PREROUTING (kebijakan MENERIMA)
target sumber tujuan opt opt
DNAT tcp - di mana saja dev.example.com tcp dpt: 29418 ke: 10.0.0.133

Chain INPUT (kebijakan MENERIMA)
target sumber tujuan opt opt

Chain OUTPUT (kebijakan MENERIMA)
target sumber tujuan opt opt

Chain POSTROUTING (kebijakan MENERIMA)
target sumber tujuan opt opt
root @ dev: / root # cat / proc / sys / net / ipv4 / ip_forward
1
tidak lengkap
sumber

Jawaban:

32

Jika ada orang lain yang mencari cara yang benar-benar berfungsi. Meskipun @HorsePunchKid benar dalam sarannya, saya telah menemukan langkah-langkah yang mengisi langkah-langkah yang hilang:

http://www.debuntu.org/how-to-redirecting-network-traffic-to-a-new-ip-using-iptables/

Intinya:

Aktifkan Penerusan IP:

sysctl net.ipv4.ip_forward=1

Tambahkan aturan penerusan Anda (gunakan nnnn: port):

iptables -t nat -A PREROUTING -p tcp -d 10.0.0.132 --dport 29418 -j DNAT --to-destination 10.0.0.133:29418

Minta IPtables untuk menyamarkan:

iptables -t nat -A POSTROUTING -j MASQUERADE

Dan itu dia! Bagaimanapun, itu berhasil untuk saya :)

Brendon Muir
sumber
1
Ini adalah jawaban terbaik yang saya temukan pada subjek ini.
Victor Piousbox
Sambungan terputus dari wadah Docker saya setelah menggunakan solusi ini. Harus menghapus aturan. Aturan bekerja, tetapi kehilangan semua lalu lintas lainnya. Saya tidak merekomendasikan ini.
Dyin
iptables -t nat -A POSTROUTING -j MASQUERADEOH WOW ... itu saja, terima kasih! Menghabiskan berjam-jam mencari web dan mencari tahu. Ini sangat sederhana dan berhasil.
kereta udang
7

Jika Anda memiliki iptables yang diinstal pada 10.0.0.132, saya pikir ini akan sangat mudah:

iptables -t nat -A PREROUTING -j DNAT -d 10.0.0.132 -p tcp --dport 29418 --to 10.0.0.133

Ini mengatakan untuk mengirim lalu lintas yang masuk ke 10.0.0.132 pada port 29418 ke 10.0.0.133 sebagai gantinya, pada port yang sama, sebelum melakukan routing lain yang mungkin coba dilakukan oleh 10.0.0.132. Jika Anda menjalankan perintah ini dan mengalami masalah dengannya, ganti flag -A dengan -D untuk menghapusnya.

Jika Anda ingin menjalankan aturan ini secara otomatis ketika 10.0.0.132 dijalankan, pertimbangkan untuk menambahkan perintah di atas sebagai aturan "post-up" di / etc / network / interfaces.

HorsePunchKid
sumber
Itulah tepatnya yang saya lakukan tetapi tidak berhasil. Saya telah membatalkan komentar net.ipv4.ip_forward = 1 di /etc/sysctl.conf tapi saya masih mendapatkan kesalahan saat menyambungkan ke 10.0.0.132:9418
uncletall
6

Jika ada yang mencari metode sementara, coba solusi di bawah ini.

    ssh -L 192.168.0.10:8080:10.0.0.10:80 [email protected]

Perintah di atas mengalihkan semua koneksi ke port 8080 pada mesin dasar Anda ke 80 port mesin virtual Anda. Anda dapat menguji kerja dengan mengakses halaman web http://192.168.0.10:8080 , dan itu akan menampilkan halaman web pada mesin tamu.

Ini berlaku untuk semua port :)

orang biasa
sumber
0

Pada akhirnya saya harus menginstal pfSense sebagai router di dalam server ESXi saya untuk mengarahkan lalu lintas ke VM yang berbeda karena saya tidak bisa membuatnya bekerja di Ubuntu.

tidak lengkap
sumber