การส่งต่อพอร์ตใน windows


262

ฉันมีสองเครือข่ายบอร์ดในพีซีของฉัน:

ตัวหลักมี IP ท้องถิ่น -> 192.168.1.111 อันที่สองมี IP ท้องถิ่น -> 192.168.0.200

ตัวหลักมีการเชื่อมต่ออินเทอร์เน็ตและตัวที่สองเชื่อมต่อกับอุปกรณ์ที่มี IP 192.168.0.33 แต่ก็มีเซิร์ฟเวอร์ http ในพอร์ต 80

ฉันมีเซิร์ฟเวอร์ apache ในการเชื่อมต่อหลัก (พอร์ต 4422) และฉันสามารถเข้าถึงได้จากทุกที่สิ่งที่ฉันต้องการตอนนี้คือเมื่อฉันตรวจพบการเชื่อมต่อจาก 4422 ฉันต้องการเปลี่ยนเส้นทางการเชื่อมต่อนี้เป็น 192.168.2.33:80

ฉันจะทำสิ่งนี้กับ windows ได้อย่างไร


ข้อมูลเพิ่มเติมสามารถดูได้ที่นี่. technet.microsoft.com/en-us/library/cc731068(v=ws.10).aspx
Shankar Damodaran

คำตอบ:


507

ฉันแก้ไขมันแล้วก็สามารถดำเนินการได้:

netsh interface portproxy add v4tov4 listenport=4422 listenaddress=192.168.1.111 connectport=80 connectaddress=192.168.0.33

วิธีลบการส่งต่อ:

netsh interface portproxy delete v4tov4 listenport=4422 listenaddress=192.168.1.111

เอกสารอย่างเป็นทางการ


21
เพียงแค่แน่ใจว่าได้ติดตั้ง IPv6 แล้ว ตามบทความ MS KB นี้ netsh ต้องการไลบรารี IPv6 บางไลบรารีเพื่อกำหนดค่าคุณสมบัติพอร์ตพร็อกซี
Renan Mozone

10
นอกจากนี้คุณสามารถทำความสะอาดโดยใช้ netsh interface portproxy resetหรือ netsh interface portproxy delete
patrikbeno

7
ฉันลองใช้เทคนิคนี้และในขณะที่ทำงานมันก็ช้ามาก แทน. ผมพบว่ายูทิลิตี้ที่เรียกว่าหนังสือเดินทาง ( sourceforge.net/projects/pjs-passport ) ที่ไม่ประเภทเดียวกันของการส่งต่อพอร์ตผูกพันกับเฉพาะ NIC netshแต่ไม่ได้มีปัญหาประสิทธิภาพการทำงานของ มันติดตั้งและทำงานได้ดีบน Win2008SvrR2
James L.

14
คำสั่งข้างต้นไม่ได้ผลสำหรับฉันใน Windows7 หรือใน Windows Server 2003 ฉันต้องระบุพารามิเตอร์protocol = tcpด้วย คำสั่งทั้งหมด:netsh interface portproxy add v4tov4 listenport=4422 listenaddress=192.168.1.111 connectport=80 connectaddress=192.168.0.33 protocol=tcp
alwi

3
โปรดทราบว่านี่ใช้งานได้กับ TCPเท่านั้นดังนั้นไม่มีโชคหากคุณต้องการส่งต่อปริมาณข้อมูล UDP
276648

14

nginxมีประโยชน์สำหรับการส่งต่อ HTTP บนหลาย ๆ แพลตฟอร์มรวมถึง Windows ง่ายต่อการติดตั้งและขยายด้วยการกำหนดค่าขั้นสูงเพิ่มเติม การกำหนดค่าพื้นฐานอาจมีลักษณะดังนี้:

events {}

http {
     server {

        listen 192.168.1.111:4422;

        location / {
            proxy_pass http://192.168.2.33:80/;
        }
     }
}

14
นี่เป็นทางออกที่ดีสำหรับการส่งต่อ HTTP แต่สำหรับการส่งต่อ HTTP เท่านั้น (ด้วยคำเตือนทั้งหมดเช่น websockets ต้องการการกำหนดค่าเพิ่มเติม) สำหรับการส่งต่อ HTTPS หรือโปรโตคอลอื่น ๆ (เช่น RDP) ส่วนใหญ่จะไม่มีประโยชน์
Uli Köhler

2
ที่กล่าวมามันเป็นทางออกที่ดีอย่างเหลือเชื่อสำหรับการส่งต่อ HTTP ดังนั้นฉันดีใจที่มาที่นี่
Casey

ทำไมถึงเป็นอย่างนั้น? คุณสามารถสตรีมไปข้างหน้าสิ่งที่คุณต้องการรวมถึง https
user1156544

@uli การตั้งค่าที่คุณต้องการเกี่ยวกับ ... มันจะมีประโยชน์ในการแบ่งปัน
user3787216

1
@ UliKöhler Nginx เป็นเครื่องมือในการแยกการเชื่อมต่อ TCP คุณสามารถใช้มันกับ HTTP, HTTPS, AMQP, WebSockets หรืออะไรก็ได้ มันถูกใช้ภายในโดยเครื่องมือทั่วเพื่อเปลี่ยนเส้นทางและจัดการการเชื่อมต่อ TCP ทั่วไป ดังนั้นนี่คือทางออกที่ถูกต้อง ดูเพิ่มเติมที่netfxharmonics.com/2016/03/nginx
David Betz

1

ฉันใช้ยูทิลิตี้ตัวน้อยนี้เมื่อใดก็ตามที่เกิดความต้องการขึ้น: http://www.analogx.com/contents/download/network/pmapper/freeware.htm

ครั้งล่าสุดที่ยูทิลิตี้นี้ได้รับการปรับปรุงคือในปี 2009 ฉันสังเกตเห็นบนเครื่อง Win10 ของฉันมันแฮงค์สองสามวินาทีเมื่อเปิดหน้าต่างใหม่บางครั้ง นอกเหนือจากนั้น UI ก็ผิดพลาด แต่ก็ยังทำงานได้ดี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.