Berbagi teknologi

【Server】 Pemetaan port

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina



1. Konsep pemetaan pelabuhan

Port Mapping, juga dikenal sebagai Port Forwarding, adalah teknologi yang mengalihkan aliran data dari satu port jaringan ke port jaringan lainnya. Ini biasanya digunakan untuk layanan yang berjalan di belakang firewall atau router, yang memungkinkan perangkat eksternal mengakses layanan tertentu dalam jaringan internal. Pemetaan port dapat dilakukan dalam jaringan lokal atau lintas jaringan, menggunakan protokol seperti SSH.

1.1 Jenis pemetaan port

  1. Penerusan Pelabuhan Lokal

    • Memetakan port di komputer lokal ke port di server jarak jauh.
    • Contoh: Ubah port lokal8080dipetakan ke server jauh80port sehingga dapat diteruskan secara lokallocalhost:8080Akses layanan web server jarak jauh.
  2. Penerusan Port Jarak Jauh

    • Memetakan port di server jarak jauh ke port di komputer lokal.
    • Contoh: Tambahkan server jarak jauh2222Pemetaan port ke komputer lokal22port sehingga layanan SSH komputer lokal dapat diakses melalui server jarak jauh.
  3. Penerusan Port Dinamis

    • Buat proksi SOCKS yang melaluinya port beberapa server jarak jauh dapat diakses secara dinamis.
    • Contoh: Buat proksi SOCKS yang memungkinkan browser mengakses beberapa situs web server jarak jauh melalui proksi.

1.2 Skenario penerapan pemetaan port

  1. Akses jarak jauh ke layanan internal: Melalui pemetaan port, layanan tertentu dalam jaringan perusahaan atau rumah dapat diakses dari jaringan eksternal, seperti server web, server database, dll.

  2. Menembus firewall: Melalui pemetaan port, Anda dapat melewati batasan firewall dan mengakses layanan yang diblokir oleh firewall.

  3. Meningkatkan keamanan: Pemetaan port melalui terowongan SSH dapat mengenkripsi transmisi data dan meningkatkan keamanan.

  4. Penyeimbangan beban dan proxy: Penyeimbang beban dan server proksi sering kali menggunakan teknologi pemetaan port untuk mendistribusikan dan meneruskan lalu lintas guna meningkatkan keandalan dan kinerja layanan.

1.3 Contoh

Misalkan ada layanan web yang berjalan di server jarak jauh, dan port yang mendengarkannya adalah80 . Untuk mengakses layanan ini dari komputer lokal Anda, buat pemetaan port lokal menggunakan perintah SSH berikut:

ssh -L 8080:localhost:80 user@remote-server
  • 1

Perintah ini akan mengubah komputer lokal8080Pemetaan port ke server jauh80 pelabuhan.Sekarang, akses di browser lokal Andahttp://localhost:8080, yang setara dengan mengakses layanan Web dari server jarak jauh.

2. Mengapa kita perlu melakukan pemetaan port?

Ada beberapa alasan utama untuk melakukan pemetaan port (atau penerusan port) selama pengembangan:

  1. Akses layanan yang dilindungi: Beberapa layanan pada mesin pengembangan mungkin hanya mendengarkan di localhost (127.0.0.1 ) dan tidak dapat diakses langsung dari luar. Melalui pemetaan pelabuhan, layanan-layanan ini dapat diekspos dan diakses dari luar.

  2. keamanan : Penerusan port melalui terowongan SSH memungkinkan akses aman ke layanan internal tanpa mengekspos layanan secara langsung. Terowongan SSH mengenkripsi transmisi data untuk keamanan tambahan.

  3. Mudah untuk di-debug : Selama proses pengembangan, pengembang mungkin perlu mengakses beberapa layanan yang berjalan di mesin pengembangan. Dengan pemetaan port, layanan ini dapat diakses langsung dari lokal tanpa harus login ke mesin pengembangan setiap saat.

  4. Lewati firewall atau batasan jaringan : Di beberapa lingkungan jaringan, mungkin terdapat firewall atau pembatasan jaringan yang mencegah akses langsung ke layanan pada mesin pengembangan. Melalui terowongan SSH, pembatasan ini dapat dilewati dan akses ke layanan dapat dicapai.

  5. Akses banyak pengguna: Jika beberapa pengembang perlu mengakses layanan yang sama, pemetaan port memungkinkan setiap pengembang mengakses layanan di lingkungan lokal mereka sendiri tanpa masuk langsung ke mesin pengembangan.

Misalnya:

Misalkan Anda memiliki server Notebook Jupyter yang berjalan di mesin pengembangan Anda. Server ini mendengarkan pada port 7860 tetapi hanya mengizinkan akses lokal. Melalui perintah SSH berikut, Anda dapat memetakan port 7860 mesin pengembangan ke port 7860 lokal Anda:

ssh -p 37367 [email protected] -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyChecking=no
  • 1

Dengan cara ini, Anda dapat mengaksesnya di browser lokal Anda http://127.0.0.1:7860 untuk melihat dan menggunakan server Jupyter Notebook di mesin pengembangan Anda.

3.Prinsip

3.1 Penjelasan Prinsip [Bahasa Daerah].

Mesin pengembangan memiliki miliknya sendiripelabuhan terbukaDanIP Publik, dapat digunakan untuk koneksi ssh lokal kita

Namun dalam mesin pengembangan, yaitu serverJalankan programKapan, programnya ada di serverpada port tertentuSedang berlangsung

Jadi jika kita ingin melihat efek berjalannya program di server lokal, kita perlu membuatnyaPemetaan Pelabuhan, saat browser membuka port lokal, teruskan ke port server untuk dilihat.

3.2 Diagram skematik

Masukkan deskripsi gambar di sini

4.Kode

ssh -p 37367 [email protected] -CNg -L {本地机器_PORT}:127.0.0.1:{开发机_PORT} -o StrictHostKeyChecking=no
  • 1

Misalnya:

ssh -p 37367 [email protected] -CNg -L 7860:127.0.0.1:7860 -o StrictHostKeyChecking=no
  • 1

Perintah ini digunakan untuk membuat terowongan SSH. Berikut penjelasan detail masing-masing bagiannya:

  • ssh: Perintah yang digunakan untuk memulai koneksi SSH.
  • -p 37367: Tentukan nomor port host jarak jauh yang akan dihubungkan (port 37367 dalam contoh ini).
  • [email protected]: Nama pengguna (root) dan nama host (ssh.intern-ai.org.cn).
  • -CNg: Kombinasi opsi:
    • -C: Aktifkan kompresi.
    • -N: Beritahu SSH untuk tidak menjalankan perintah jarak jauh, hanya penerusan porta.
    • -g: Izinkan host jarak jauh untuk terhubung ke port yang diteruskan.
  • -L 7860:127.0.0.1:7860: Melakukan penerusan port lokal dan memetakan port 7860 dari mesin lokal ke port 7860 dari 127.0.0.1 dari host jarak jauh.
  • -o StrictHostKeyChecking=no: Nonaktifkan pemeriksaan kunci host, yang mencegah perintah interaktif saat menghubungkan untuk pertama kalinya.

Singkatnya, perintah ini akan membuat terowongan SSH antara mesin lokal dan host jarak jauh, meneruskan port lokal 7860 ke port host jarak jauh 7860, dan tidak akan menjalankan perintah jarak jauh atau memeriksa kunci host.

Seperti yang ditunjukkan di bawah ini:
Setelah pemetaan port, program yang berjalan pada port server 7860 ditampilkan.
Masukkan deskripsi gambar di sini