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?
0
Jawaban:
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:
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:
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 berartipi2.example.com:22
atau 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.)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.
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.
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.)
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.
sumber