Membalikkan Proksi untuk semua port


0

Saya bekerja pada sistem di mana masing-masing klien saya memiliki raspberry pi terpisah yang ditugaskan untuk mereka, yang dapat mereka jalankan apa pun yang mereka inginkan (mis. Server Game atau server web dengan port khusus). Bagaimana saya membalikkan proxy masing-masing? Menurut pertanyaan ini , saya dapat menggunakan NAT. Apa itu, dan bagaimana cara mengaturnya? Juga, dapatkah saya menggunakannya untuk memblokir port tertentu, mis. port 25, dan dapatkan log, dll?


Tolong jelaskan mengapa Anda ingin "membalikkan proxy" setiap perangkat atau layanan di tempat pertama. Apakah Anda memiliki lebih banyak klien daripada alamat IP?
grawity

Saya memiliki 1 alamat IP, dan masing-masing pi akan memiliki subdomain seperti pi1.example.org.

Jawaban:


0

Bagaimana saya membalikkan proxy masing-masing?

Secara umum: Anda tidak akan melakukannya.


Dari pertanyaan Anda, sepertinya Anda mencoba membagikan satu alamat IP publik antara banyak perangkat klien. Baik NAT dan reverse-proxy adalah mekanisme untuk itu, meskipun mereka bekerja pada level yang berbeda.

(Namun, jika Anda mampu membeli alamat IP publik khusus untuk setiap perangkat, maka masalahnya tidak ada di tempat pertama dan kedua mekanisme secara praktis tidak relevan.)

  • DNAT (biasanya disebut "port forwarding") biasanya bekerja pada level transportasi - ini memungkinkan beberapa perangkat untuk "berbagi" alamat IP dengan menetapkan masing-masing perangkat rentang port TCP atau UDP.

    Misalnya, jika Anda memiliki alamat IP x.y.z.t, Anda dapat meneruskan TCP port 80 ( x.y.z.t:80) ke perangkat A, port 81 ke perangkat B, dan seterusnya.

  • Reverse proxying biasanya bekerja pada level aplikasi - memungkinkan beberapa perangkat atau layanan untuk "berbagi" satu IP: kombinasi port dengan memisahkan permintaan berdasarkan pada beberapa pengenal yang ditemukan dalam protokol.

    Misalnya, jika Anda memiliki proxy reverse HTTP aktif x.y.z.t:80, Anda dapat membuatnya meneruskan permintaan HTTP ke perangkat yang berbeda berdasarkan nama domain apa yang diminta.

Reverse proxying memiliki keuntungan bahwa proxy memungkinkan Anda berbagi IP: port yang sama di beberapa domain, tetapi disertai dengan persyaratan:

  1. Perangkat lunak proxy perlu memahami protokol yang dimaksud; perlu dibangun untuk protokol itu. Ini berarti Anda tidak bisa hanya secara sewenang-wenang memproksi "semua port" dan membuatnya berfungsi untuk layanan lain-lain yang akan dijalankan oleh klien Anda.
  2. Protokol harus benar - benar memiliki semacam pengidentifikasi "host" atau "domain" sebagai bagian dari pesannya. Tidak semua protokol membawa pengidentifikasi seperti itu; pada kenyataannya sebagian besar tidak.
  3. Proxy penulisan ulang alamat lapisan bawah; klien Anda akan melihat semua koneksi berasal dari proxy itu sendiri, kecuali jika layanan tersebut juga memiliki metode untuk mengatasinya (misalnya X-Forwarded-For atau yang disebut "protokol PROXY").

Jadi proksi untuk beberapa perangkat praktis terbatas pada HTTP dan HTTPS (yang memiliki header "Host"); ditambah layanan berbasis TLS (yang memiliki SNI dan ALPN); plus mungkin DNS dan SMTP (berdasarkan alamat penerima); dan mungkin Anda tidak aman POP3 / IMAP / FTP (berdasarkan nama login).

Untuk server gim meskipun itu bukan opsi - Anda cukup banyak harus menggunakan port khusus (atau beberapa) untuk setiap layanan di setiap perangkat. Itu biasanya disebut "port forwarding" atau "DNAT"; itu persis sama dengan fitur port forwarding di router rumah Anda; dan memiliki masalah sendiri:

  1. Ia tidak tahu tentang domain DNS dan bekerja langsung pada level alamat IP. Jika semua domain Anda menyelesaikan ke alamat IP tunggal yang sama, mereka semua memiliki aturan penerusan port yang sama persis.

    Ini berarti setiap port TCP atau UDP pada alamat IP yang diberikan hanya dapat diteruskan ke satu perangkat. Misalnya, jika klien 1 mendapatkan port SSH standar, katakanlah pi1.example.com:22, itu berarti pi2.example.com:22atau jugapi3.example.com:22 akan pergi ke perangkat klien 1 - klien lain sekarang tidak dapat menggunakan port ini untuk koneksi masuk sama sekali. (Tergantung pada apa yang melakukan perangkat lunak NAT, mereka mungkin tidak dapat menggunakannya untuk koneksi keluar juga.)

  2. Hanya ada ~ 65k port TCP dan ~ 65k port UDP (per alamat IP), dan mereka diperlukan untuk koneksi inbound (satu per layanan, kadang-kadang lebih) dan untuk koneksi outbound (sebagai port sumber; umumnya satu per koneksi) . Jadi dalam praktiknya Anda tidak dapat memiliki lebih dari ... katakanlah, ~ aturan port-forwarding 32k.

  3. Beberapa layanan memerlukan port tertentu . Misalnya, SMTP untuk pengiriman surat masuk selalu menggunakan port TCP 25; IKE menggunakan port UDP 500 dan 4500; server gim seringkali membutuhkan kisaran port tertentu. Jika salah satu klien Anda memiliki rentang tertentu, klien lain tidak dapat menjalankan layanan yang sama.


Adapun cara mengaturnya - saya sarankan mulai dengan DNAT, karena kemungkinan besar Anda akan membutuhkannya untuk proxy sebaliknya.

Apa itu, dan bagaimana cara mengaturnya?

Seperti disebutkan, NAT untuk koneksi masuk (DNAT) sering dikenal sebagai "port forwarding" dan dikonfigurasi secara langsung pada router Anda (perangkat yang 'memiliki' alamat IP publik Anda), dan itu pasti akan dijelaskan dalam manual perangkat.

(Jika router hanya menjalankan Linux atau FreeBSD biasa, maka aturan DNAT ditambahkan melalui iptables atau pf , sama seperti aturan firewall.)

Juga, dapatkah saya menggunakannya untuk memblokir port tertentu, mis. port 25, dan dapatkan log, dll?

Iya dan tidak. Itu adalah fitur firewall Anda. Firewall yang layak akan memiliki mereka (Maksudku, itulah yang firewall tidak ), tetapi mereka akan berada di sana bersama NAT, tetapi bukan bagian dari NAT.


Apakah ada yang bisa saya gunakan yang memungkinkan saya untuk memiliki perangkat terpisah untuk domain yang berbeda dan bekerja dengan semua port? Seperti jenis perangkat lunak khusus yang bisa saya jalankan di router?

Tidak. Satu-satunya cara untuk membuat ini berfungsi dengan protokol apa pun (yaitu tidak terbatas pada HTTP atau TLS) adalah untuk mendapatkan lebih banyak alamat IP. Kalau tidak, sistem Anda benar-benar tidak menerima informasi yang diperlukan untuk membedakan antara domain, dan tidak ada perangkat lunak atau perangkat keras yang bisa mengeluarkannya dari udara.
grawity

Oke, apakah ada biaya rata-rata untuk IP statis?

Untuk IPv4 - sangat bervariasi; itu tergantung pada apakah Anda membeli perorangan dari ISP Anda (kadang-kadang bisa serendah $ 1 / alamat / bulan), atau seluruh blok di pasar (memerlukan layanan BGP agar benar-benar menggunakan blok, dengan biaya tambahan).
grawity
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.