Port forwarding di Linux tanpa iptables?

34

Saya memiliki server Linux VPS (virtuozzo) dan saya perlu mengatur penerusan port, tetapi penyedia hosting saya tidak mengizinkan modul kernel iptables-nat jadi iptables -t nat- tidak berfungsi.

Saya mencari cara lain bagaimana melakukannya. Saya tahu saya bisa meneruskan port menggunakan openssh , tapi saya perlu meneruskan 20+ port yang berbeda, tcp dan udp jadi ini bukan pilihan.

Apakah ada perangkat lunak untuk linux yang dapat melakukan port forwarding?

troex
sumber
ya pertanyaan bagus +1. Saya tidak mengetahui solusi, menantikan untuk melihat apakah teh adalah sesuatu di sini.
The Shurrican
Lalu, bagaimana dengan program yang memungkinkan Anda meneruskan port ke berbagai tujuan berdasarkan IP sumber?
DPK
Hindari masalah sepenuhnya dengan tidak pernah menggunakan VPS berbasis Virtuozzo / OpenVZ.
Michael Hampton
@MichaelHampton: Tidak terlalu konstruktif ...
Nicolas Raoul

Jawaban:

47

Gunakan alat yang disebut "socat", itu adalah alat yang hebat untuk hal-hal seperti itu dan sudah dikemas dalam banyak distribusi linux. Baca tentang ini di sini: http://www.dest-unreach.org/socat/doc/README

Contoh penerusan port dengan socat:

socat TCP4-LISTEN:80,fork TCP4:www.yourdomain.org:8080

Ini mengalihkan semua koneksi TCP pada port 80 ke www.yourdomain.org port 8080 TCP.

Fbo
sumber
Jangan lupa https adalah default di port 443, bukan port 80 :)
keiki
Socat adalah satu-satunya alat yang bekerja untuk saya pada raspberry pi ipv6-satunya
chotchki
Sempurna, memecahkan masalah saya secara instan. Catatan, Anda perlu memastikan bahwa port yang masuk terbuka di iptables jika Anda memilikinya.
jancha
13

Ada program kecil, sumber daya ringan yang disebut rediryang sangat dapat dikonfigurasi.

apt-get install redir pada distribusi berbasis Debian.

Jonathan Ross
sumber
Saya telah menggunakan alat ini di masa lalu dan bekerja dengan sangat baik ...
Alex
Saya alat kedua ini. Tampaknya ini bukan alat paket forwarding, tetapi terowongan tcp. Ini akan mengubah alamat IP sumber yang dilihat oleh target. Jadi itu berfungsi dengan baik ketika Anda perlu mengarahkan ulang satu port ke komputer lain yang memiliki pengaturan rute yang berbeda.
scegg
10

Bagaimana dengan rinetd?
Ini adalah daemon yang mengarahkan ulang koneksi TCP. Lihatlah halaman manual untuk melihat apakah itu sesuai dengan kebutuhan Anda: http://www.boutell.com/rinetd/

hebat
sumber
Terlihat menarik, tetapi terbatas hanya untuk TCP seperti yang Anda katakan.
troex
UDP didukung sekarang: github.com/samhocevar/rinetd
kev
6

xinetdmendukung atribut pengalihan yang akan melakukan apa yang Anda inginkan. Seperti yang telah dicatat orang lain, ada sejumlah program yang menangani pengalihan.

Menggunakan xinetdatau program lain yang menggunakan tcpwrapperspustaka akan memungkinkan Anda untuk menerapkan pembatasan akses jika dan ketika diperlukan.

BillThor
sumber
4

xinet / inetd. Untuk misalnya:

redirect

Mengizinkan layanan tcp dialihkan ke host lain. Ketika xinetd menerima koneksi tcp pada port ini, ia memunculkan proses yang membuat koneksi ke host dan nomor port yang ditentukan, dan meneruskan semua data antara dua host.

http://linux.die.net/man/5/xinetd.conf

poige
sumber
Terlihat menarik, tetapi hanya sebatas TCP seperti yang Anda katakan
Doud
4

Saya menemukan util kecil bernama portfwd http://portfwd.sourceforge.net/ ia melakukan persis apa yang saya butuhkan (penerusan TCP dan UDP), beranda mengatakan itu terakhir diperbarui pada tahun 2002, tetapi rilis terbaru adalah 2007, dan bekerja pada kernel 2.6 .

troex
sumber
Saya akan menerima jawaban saya karena ini adalah satu-satunya perangkat lunak yang sepenuhnya mendukung protokol TCP dan UDP.
troex
3

SSH Melakukan penerusan port, selama Anda dapat melakukan tunnel pada koneksi SSL.

JeffG
sumber
-3

Ok di sini adalah jawaban sederhana yang seharusnya berhasil, ini bukan ilmu roket tetapi kebanyakan orang terlalu mempersulit jawaban dan membingungkan semua yang baru bagi pengguna Linux.

ufw izinkan 2xxx

2xxx = apa pun nomor port Anda cukup ketik perintah itu ke terminal server Anda dan port yang Anda inginkan dibuka.

denn
sumber
Itu hanya membuka port pada antarmuka yang menghadap ke luar server. Itu tidak mengarahkan atau meneruskan port dari satu ip ke yang lain. INI MEMBUKA PELABUHAN.
AmirHossein