จะส่งต่อพอร์ต 80 ไปยังพอร์ตอื่นบน samemachine ได้อย่างไร


39

ฉันจะส่งต่อคำขอที่เข้ามาในพอร์ต 80 ไปยังพอร์ตอื่นบนเครื่อง Linux เดียวกันได้อย่างไร

ฉันเคยทำสิ่งนี้โดยการเปลี่ยนnat.confแต่เครื่องที่ฉันใช้ไม่มี NAT ทางเลือกคืออะไร


ไม่มี NAT ใด ๆ หรือเพียงแค่ไม่มี nat.conf? คุณได้ลองกฎ iptables โดยใช้ NAT?
Ben Swinburne

คำตอบ:


47

คุณสามารถเปลี่ยนเส้นทางให้สำเร็จด้วย 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

+1 กำลังทำสิ่งนี้มานานหลายปี
Alexander Pogrebnyak

1
แล้วเซิร์ฟเวอร์ Windows ล่ะ
ลัค

โอ้ผู้ชายคนนี้เป็นสิ่งที่ฉันกำลังมองหารุ่งโรจน์!
neurosnap

ตอนแรกไม่ได้ทำงานให้ฉัน แต่ก็ใช้ได้ดีเมื่อฉันใช้sudo
mdiscenza

1
จะทำอย่างไรถ้าไม่มีส่วนต่อประสาน eth0 ทำไมไม่ใช้อินเทอร์เฟซแบบวนรอบ
harschware

15

เพิ่งพบว่าตัวเองอยู่ในคำถามนี้และไม่สามารถหาวิธีที่ง่าย ไม่ต้องการติดตั้ง Nginx ในเครื่องของฉันเพื่อทำการส่งต่อพอร์ตแบบง่าย ๆ นี้

Rinetdไม่ทำงานสำหรับฉันไม่มีแพ็คเกจการทำงานสำหรับ distro ของฉัน ฉันไปsocatแทน ง่ายสุด ๆ :

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

ต้องวิ่งตามsuเพื่อให้สามารถฟังพอร์ต80ได้


ฉันคิดว่าการตั้งค่า Rinetd ง่ายขึ้น
johnshen64

socat ทำงานได้อย่างสมบูรณ์แบบ!
viv

10

คุณควรดูที่การใช้พร็อกซี่กลับเช่นNginx ตัวอย่างเช่นคุณอาจใส่อะไรแบบนี้ลงในnginx.confไฟล์ของคุณ:

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
    }
}


2
ทำไม? ฉันไม่เห็นด้วยไม่จำเป็น แต่มีเหตุผลที่ดีที่คุณไม่ต้องการให้เรื่องนี้เกิดขึ้น™ในเครือข่ายสแต็คหรือไม่?
Oli

@Oli วิธี reverse proxy นี้จะไม่ส่งผลกระทบต่อโฮสต์เสมือนอื่น ๆ อีกมากมายบนเซิร์ฟเวอร์ซึ่งจะเกิดขึ้นหาก iptables จะทำเช่นนั้นเนื่องจาก iptables ไม่ทราบว่ามีโฮสต์เสมือนอะไร
แอช
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.