Perbedaan antara "penerusan port lokal" dan "penerusan port dinamis"?

13

Saya mencoba memahami perbedaan antara "penerusan port lokal" dan "penerusan port dinamis".

Dalam perintah ssh untuk "penerusan port lokal", apakah selalu diperlukan untuk menentukan host tujuan?

Apakah "dinamis" dalam "penerusan port dinamis" berarti bahwa, dalam perintah ssh untuk "penerusan port dinamis", tidak perlu menentukan host tujuan? jika ya, kapan tujuan ditentukan?

Tim
sumber

Jawaban:

15

Ya, Anda harus menentukan IP dan port tujuan saat menggunakan penerusan lokal. Dari man ssh:

 -L [bind_address:]port:host:hostport
         Specifies that the given port on the local (client) host is to be
         forwarded to the given host and port on the remote side.

Jelas, hanya alamat bind yang opsional.

Tidak, Anda tidak dapat menentukan host tujuan atau port saat menggunakan penerusan dinamis. Dalam penerusan dinamis, SSH bertindak sebagai proxy SOCKS. Lagi dari halaman manual (penekanan milikku):


 -D [bind_address:]port
         Specifies a local “dynamic” application-level port forwarding.
         This works by allocating a socket to listen to port on the local
         side, optionally bound to the specified bind_address.  Whenever a
         connection is made to this port, the connection is forwarded over
         the secure channel, and the application protocol is then used to
         determine where to connect to from the remote machine.  Currently
         the SOCKS4 and SOCKS5 protocols are supported, and ssh will act
         as a SOCKS server.

Dengan -L, SSH tidak berusaha memahami lalu lintas. Itu hanya mengirim semua yang diterimanya di port lokal ke port target - Anda menentukan port target pada saat koneksi dibuat. Dengan -D, SSH bertindak sebagai server proxy, dan karenanya dapat menangani koneksi dari beberapa port (misalnya, browser yang dikonfigurasi untuk menggunakannya sebagai proxy SOCKS kemudian dapat mengakses HTTP, HTTPS, FTP, dll. Melalui koneksi yang sama). Dan seperti dengan server proxy lainnya, ia akan menggunakan lalu lintas untuk menentukan tujuan.

muru
sumber
1
Terima kasih, muru! Saya bertanya-tanya mengapa penerusan dinamis disebut proxy, sedangkan penerusan lokal tidak? Menurut definisi, apakah server ssh, klien ssh atau keduanya dalam penerusan lokal proxy (server)? unix.stackexchange.com/a/234184/674
Tim
1
@Tim server proxy memahami protokol apa yang diproksikan. Dengan port forwarding, SSH tidak berusaha untuk memahami protokol apa yang akan datang, tetapi dengan -D, ia harus , untuk memahami ke mana harus mengirim data.
muru
Terima kasih. Saya mencari di beberapa buku teks jaringan komputer (misalnya Tanenbaum) untuk definisi proxy (server) sejelas milik Anda, tetapi tidak puas. Apakah Anda memiliki beberapa buku untuk direkomendasikan untuk konsep pembelajaran?
Tim
Dalam penerusan port dinamis, yang merupakan server proxy, klien ssh, server ssh atau keduanya?
Tim
@Tim Tanenbaum adalah satu-satunya buku yang saya pelajari. Sisanya berasal dari menggunakan barang-barang.
muru
0

Cara lain untuk mempelajari konsep ini adalah dengan melihat bagaimana klien terhubung ke klaster peta pengurangan elastis (EMR) amazon. ESDM memiliki banyak aplikasi lokal yang diekspos dan ini biasanya diakses melalui terowongan SSH.

Ada 2 opsi untuk klien: A) Perintah SSH penerusan port lokal: ssh -i key.pem -L 8157: abcd: 8088 hadoop @ abcd

Di sini klien mengatakan misalnya, bahwa 8157 pada localhost akan diteruskan ke abcd: 8088 Klien harus membuat permintaan ke localhost: http: // localhost: 8157 Aplikasi lain dapat mendengarkan pada port seperti 8089.8080, dan klien harus membuat koneksi ssh untuk masing-masingnya.

B) Dynamic port forward Di sini satu perintah SSH digunakan: ssh -i key.pem -D 8157 hadoop @ abcd

Lalu lintas apa pun yang masuk pada port 8157 akan dialihkan melalui terowongan ssh. Tujuan lalu lintas akan menjadi tujuan URL. Misalnya, Anda dapat menggunakan proksi-klien di server web Anda dan mengalihkan beberapa http URI untuk menggunakan proksi. Anda dapat mengakses semua aplikasi Anda di 8089.808 melalui satu perintah.

Untuk referensi, lihat dokumen ini: https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-web-interfaces.html

M Ga
sumber