Saat ini saya memiliki kotak NAS yang berjalan di bawah port 80. Untuk mengakses NAS dari luar, saya memetakan port 8080 ke port 80 pada NAS sebagai berikut:
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 10.32.25.2:80
Ini bekerja seperti pesona. Namun, ini hanya berfungsi jika saya mengakses situs web dari luar jaringan (di tempat kerja, di rumah yang berbeda, dll). Jadi ketika saya mengetik mywebsite.com:8080
, IPTables melakukan pekerjaan dengan benar dan semuanya bekerja dengan baik.
Sekarang, masalah yang saya miliki adalah, bagaimana saya bisa mengarahkan ulang port ini dari bagian dalam jaringan? Nama domain saya mywebsite.com
menunjuk ke router saya (server linux saya) dari dalam (10.32.25.1) tetapi saya ingin mengarahkan port 8080 ke port 80 pada 10.32.25.2 dari dalam.
Ada petunjuk?
Edit # 1
Mencoba membantu memfasilitasi pertanyaan ini, saya menyatukan diagram ini. Jangan ragu untuk memperbarui jika itu tidak benar atau salah mengartikan apa yang Anda cari.
iptables
| .---------------.
.-,( ),-. v port 80 |
.-( )-. port 8080________ | |
( internet )------------>[_...__...°]------------->| NAS |
'-( ).-' 10.32.25.2 ^ 10.32.25.1 | |
'-.( ).-' | | |
| '---------------'
|
|
__ _
[__]|=|
/::/|_|
10.32.25.1:8080
pengalihan ke10.32.25.2:80
. Aturan saya di atas berfungsi dari luar, tetapi tidak dari dalam jaringan saya. Jadi jika saya di kantor, saya dapat mengakses NAS saya dari situs web: com: 8080 dan itu benar-benar transparan. Dari rumah saya, website.com:8080 arahkan ke 10.32.25.1 karena itu adalah router saya alias server Linux. Saya ingin mengarahkan kembali port 8080 ke NAS juga pada port 80 tetapi sekali lagi, secara transparan.eth0 10.32.25.2
, sehingga kita dapat menulis penggunaan iptables berdasarkan antarmuka masukJawaban:
Saya akhirnya menemukan caranya. Pertama, saya harus menambahkan
-i eth1
aturan "luar" saya (eth1 adalah koneksi WAN saya). Saya juga perlu menambahkan dua aturan lainnya. Di sini pada akhirnya saya datang dengan apa:sumber
Anda juga lupa menyebutkan bahwa penerusan paket harus diaktifkan untuk dapat melakukan NAT tujuan. Secara default, biasanya tidak aktif, jadi aturan iptables tidak akan berfungsi. Ini dapat diaktifkan dengan mengeluarkan:
sumber
Pertama izinkan forwarding dengan
Kemudian atur aturan iptable dengan
Anda dapat menempatkan garis-garis ini
/etc/rc.local
sebagai contoh. Catatan: sejak Debian jessie membuatnya dapat dieksekusi dan mengaktifkan layanan rc.local viasumber
Pertama, Anda perlu memverifikasi bahwa penerusan Anda telah diaktifkan:
cat /proc/sys/net/ipv4/ip_forward
Jika tidak
1
, jalankanecho 1 > /proc/sys/net/ipv4/ip_forward
.Jika Anda ingin lalu lintas yang mengenai 10.32.25.1 pada port 80 dan 443 diteruskan ke portport 10.32.25.2 maka Anda harus menggunakan aturan di bawah ini:
sumber