Bagaimana cara meneruskan port 80 ke port lain pada mesin samemachine?

39

Bagaimana saya bisa meneruskan permintaan yang masuk pada port 80 ke port lain pada mesin linux yang sama?

Saya biasa melakukan ini dengan mengubah nat.conf, tetapi mesin yang saya gunakan tidak memiliki NAT. Apa alternatifnya?

Tidak mungkin
sumber
Tidak ada NAT sama sekali atau hanya tanpa nat.conf? Sudahkah Anda mencoba aturan iptables menggunakan NAT?
Ben Swinburne

Jawaban:

47

Anda dapat menyelesaikan pengalihan dengan iptables:

iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT

iptables -A INPUT -i eth0 -p tcp --dport 8080 -j ACCEPT

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
Thomas Vincent
sumber
+1. Sedang melakukan ini selama bertahun
Alexander Pogrebnyak
1
Bagaimana dengan di Windows Server?
Luc
Oh man, ini persis apa yang saya cari, pujian!
Neurosnap
Awalnya tidak bekerja untuk saya, tetapi baik-baik saja ketika saya menggunakansudo
mdiscenza
1
apa yang harus dilakukan jika tidak ada antarmuka eth0? mengapa tidak menggunakan antarmuka loopback?
harschware
15

Hanya menemukan diri saya dalam pertanyaan ini dan tidak dapat menemukan cara yang mudah. Tidak ingin menginstal Nginx di mesin saya untuk melakukan penerusan port sederhana ini.

Rinetdtidak bekerja untuk saya, tidak ada paket kerja untuk distro saya. Saya pergi untuk socatsebaliknya. Sangat sederhana:

socat TCP-LISTEN:80,fork TCP:127.0.0.1:5000

Harus dijalankan suagar dapat mendengarkan di port 80.

alfetopito
sumber
Pengaturan Rinetd lebih mudah saya pikir.
johnshen64
socat bekerja dengan sempurna!
viv
10

Anda harus melihat menggunakan proxy terbalik , seperti Nginx . Misalnya, Anda mungkin meletakkan sesuatu seperti ini di nginx.conffile Anda :

server {
    listen         80;

    server_name    your_ip_address your_server_name

    access_log   /var/log/nginx/your_domain/access.log ;
    error_log    /var/log/nginx/your_domain/error.log info ;

    location / {
        proxy_pass  http://127.0.0.1:3000;   # pass requests to the destination
    }
}
Tilo
sumber
2
Mengapa? Saya tidak selalu tidak setuju tetapi apakah ada alasan bagus Anda tidak ingin ini terjadi begitu saja ™ di tumpukan jaringan?
Oli
@Oli Metode reverse proxy ini tidak akan memengaruhi banyak host virtual lain di server, yang akan terjadi jika iptables akan melakukannya karena iptables tidak tahu apa-apa tentang host virtual.
ash