Bagaimana cara menentukan port lokal saat membuat koneksi SSH?

13

Saya memiliki dua server yang dihosting di IDC. Saya hanya dapat menggunakan port 20/21/22/23/3389 / 33101-33109 untuk membuat koneksi antara dua server. Perangkat jaringan IDC akan memblokir paket lain yang sumber atau port tujuannya tidak ada dalam daftar / rentang 20/21/22/23/80/3389 / 33101-33109. Tetapi port sumber SSH adalah acak.

Menggunakan perintah, seseorang dapat dengan mudah menentukan port jarak jauh.ssh username@server -p remote_port

Jadi apakah ada sshparameter perintah atau cara lain untuk menentukan port sumber lokal sehingga saya dapat menggunakan, misalnya, port 33101 untuk membuat koneksi SSH?

Topologi jaringan saya seperti ini:
topologi jaringan

fajin yu
sumber

Jawaban:

2

Untuk situasi sekali saja, atau kadang-kadang, pendekatan ProxyCommand mudah yang sangat nyaman.

Di sisi lain, jika Anda memerlukan beberapa koneksi simultan, atau ketika mungkin Anda perlu sering menggunakan perintah itu untuk pekerjaan sehari-hari, Anda mungkin juga mempertimbangkan untuk menetapkan aturan network-address-translation (NAT) di server Anda.

Ini membutuhkan akses superuser (biasanya root) di server Anda untuk terlebih dahulu menerapkan aturan NAT tunggal. Perhatikan bahwa mungkin sama sekali tidak diizinkan (atau efektif) untuk menerapkan aturan NAT, bahkan ketika Anda memiliki akses superuser, jika "server" Anda sebenarnya adalah sebuah wadah (seperti Docker) alih-alih mesin.

Berbicara tentang sistem Linux khas dengan iptablessuite tersebut, aturan NAT untuk diterapkan pada server1 Anda untuk contoh case Anda bisa seperti:

iptables -t nat -I POSTROUTING -d <server2-ip-address> -p tcp --dport <server2-port> -j SNAT --to :33101-33109

Perintah yang menginstruksikan kernel Linux untuk membuat sambungan menuju pelabuhan server2-port dari server2-ip-address untuk pergi keluar dengan menggunakan port sumber yang dipilih dalam kisaran 33.101-33.109 yang tersedia pada saat itu.

Setelah aturan itu diberlakukan, Anda terhubung ke server2 Anda seperti biasa:

ssh username@server2 -p remote_port

dan Anda dapat menggunakan sshperintah yang sama ini juga secara bersamaan sebanyak yang Anda butuhkan, selama ada port yang tersedia dalam kisaran yang ditentukan dalam aturan NAT.

Namun perlu dicatat bahwa netstat(atau perintah yang setara) berjalan di server Anda melaporkan alamat lokal koneksi sebagai nomor port sumber yang tidak dimodifikasi , dipilih secara acak meskipun lalu lintas aktual yang dikirim ke server Anda2 membawa nomor port sumber yang dimodifikasi .

Untuk membatalkan aturan NAT, perintahnya sama kecuali untuk -Dopsi di tempat -I.

Untuk menerapkan aturan NAT secara otomatis saat boot tergantung pada distribusi Linux apa yang Anda miliki di server Anda, dan apakah sudah ada konfigurasi firewall di tempatnya atau tidak.

Saya tidak punya pengalaman dengan sistem seperti BSD, tapi saya percaya ada yang setara.

LL3
sumber