วิธีทำให้พอร์ตไปข้างหน้าใน Mac OS X


36

ฉันต้องการทำการเชื่อมต่อขาเข้าทั้งหมดไปยังพอร์ต 1,000 ของโฮสต์ของฉัน (IP: 200.234.XXX.XXX) เพื่อส่งต่อไปยังพอร์ต 80 บนโฮสต์ 10.211.55.5

ฉันจะทำกับโฮสต์ของฉันได้อย่างไร มันกำลังเรียกใช้ Mac OS X 10.5.8


อาคุณกำลังเรียกใช้แนวเดียวกันมีปัญหาเช่นเดียวกับฉัน :)
LearnCocos2D

คำตอบ:


30

ทำง่ายมากประการแรกคุณจะต้องเปิดใช้งานบริการการเข้าสู่ระบบระยะไกลบน mac ของคุณ ( การตั้งค่าระบบ -> การแบ่งปัน -> การเข้าสู่ระบบระยะไกล ) นี่เริ่มเซิร์ฟเวอร์ ssh ของคุณ

จากนั้นเรียกใช้คำสั่งต่อไปนี้ใน Terminal X ของคุณ:

ssh -L 200.234.XXX.XXX:10000:10.211.55.5:80 -N 127.0.0.1

คุณอาจต้องยอมรับลายนิ้วมือของเซิร์ฟเวอร์ในขั้นต้นเช่นเดียวกับพิมพ์รหัสผ่านท้องถิ่นของคุณเพื่อเข้าสู่ระบบ ssh (นอกจากนี้คุณยังสามารถตั้งค่าท้องถิ่นเป็นคีย์สาธารณะ / ส่วนตัวในท้องถิ่นเพื่อให้ไม่ได้รับพร้อมท์สำหรับรหัสผ่านจะถือว่าเป็นแบบฝึกหัดสำหรับผู้อ่าน)

รูปแบบคือ:

ssh -L local_addr:local_port:remote_addr:remote_port -N 127.0.0.1

เราสามารถทำได้ไหมถ้าพอร์ต 22 ไม่เปิด?
Afshin Moazami

1
คุณต้องเชื่อมต่ออย่างใด แต่คุณสามารถเรียกใช้ ssh บนพอร์ตอื่นได้เสมอ ... อาจเป็นพอร์ต http หรือไม่ หรือพอร์ต BIND (DNS) ส่วนใหญ่เปิดอยู่บนไฟร์วอลล์
Marius

10

ง่ายมากโดยใช้เครื่องมืออเนกประสงค์ ncat:

sudo ncat --sh-exec "ncat 10.211.55.5 80" -l 1000 --keep-open

รับไบนารีของ ncat / nmap สำหรับ Mac OS X จากเว็บไซต์ทางการ: http://nmap.org/download.html#macosx

แก้ไข: เพิ่ม sudo เพื่อฟังบนพอร์ตที่ จำกัด <1024


1
ขอบคุณ มันง่ายมากนอกจากนั้นไม่จำเป็นต้องรีบูต!
verystrongjoe

นอกจากนี้คุณไม่จำเป็นต้องเริ่มต้นเซิร์ฟเวอร์ SSH บน macOS ของคุณ
Tony Baguette


3

ฉันสามารถบอกคุณได้ว่าฉันทำสิ่งนั้นในระบบ Mac OS X 10.5.8 ของฉันได้อย่างไร

ฉันเริ่มคำตอบเกี่ยวกับ NAT แต่ฉันคิดว่าคุณต้องการโปรแกรมส่งต่อ TCP แทน (คุณพูดถึง 'พร็อกซี' และการส่งต่อพอร์ต)

มีไม่กี่วิธีการทำเช่นนี้ขึ้นอยู่กับความต้องการของคุณแม้ 'จุ๊'' s สามารถกดไปสู่การปฏิบัติ แต่สั้น ๆ ที่ชื่นชอบและวิธีการหวานเป็นสคริปต์ Perl tcpforward

หากคุณต้องการการปรับแต่ง HTTP บางอย่าง (คุณอาจต้องปรับแต่งการเปลี่ยนเส้นทาง HTTP ดังนั้นเมื่อคำขอมาถึง URL ที่ไม่มีการต่อท้าย '/' คุณจะไม่ถูกเปลี่ยนเส้นทางไปยังเซิร์ฟเวอร์ที่เข้าถึงไม่ได้ของจริง) จากนั้น Apache สามารถทำ งานของ reverse proxy คุณจะต้องดูmod_proxyและโดยเฉพาะ ProxyPass และ ProxyPassReverse ไม่ได้เปิดใช้งาน ProxyRequests ว่าสำหรับพร็อกซีไปข้างหน้า มันเป็นไปได้ที่จะใช้ Apache ของ Mac OS ในการทำเช่นนี้หากคุณใช้งานได้ มันมาพร้อมกับ mod_proxy และ /etc/httpd/httpd.conf เป็นไฟล์กำหนดค่าที่จะอัปเดต

แม้กับ Apache คุณต้องตรวจสอบให้แน่ใจว่าลิงก์ทั้งหมดในเนื้อหาเซิร์ฟเวอร์จริงนั้นสัมพันธ์กันหากพวกเขาอ้างอิงเซิร์ฟเวอร์จริงจากนั้นคุณสามารถลองโมดูล mod_proxy_html (ฉันไม่มีประสบการณ์ว่ามันใช้งานได้ดีเพียงใด)


+1 สำหรับ tcpforward, Perl ไม่เคยหยุดมีประโยชน์
Steve Kehlet

0

เครื่องของคุณเชื่อมต่อโดยตรงกับอินเทอร์เน็ต (IE - ไม่มีเราเตอร์) หรือไม่? โดยปกติคุณทำการส่งต่อพอร์ตบนเราเตอร์ แต่ถ้าคุณใช้โมเด็มเพื่อเชื่อมต่อโดยตรง iptables น่าจะเป็นวิธีที่ดีที่สุด


ฉันไม่รู้ว่าทำไมเรื่องนี้ถึงได้ถูกโหวตเพราะมันเป็นความจริง
Hasaan Chop

4
@HasaanChop นี่คือการลงคะแนนเพราะมันไม่เป็นประโยชน์ หากมีรายละเอียดอย่างชัดเจนว่าจะใช้อย่างไรเพื่อiptablesให้บรรลุคำถามที่ถามมานั่นอาจเป็นประโยชน์
Jon-Eric

ไม่มี iptables บน mac os x
Unnamed_1

-1

นี่คือบทความที่ดี: http://www.cyberhq.nl/article/384/port-forwarding-in-macos-x

แต่เนื่องจากคุณจะส่งต่อไปที่ 80 ฉันคิดว่าคุณต้องการให้มันไปที่เว็บเซิร์ฟเวอร์ดังนั้นฉันจะเปลี่ยนการตั้งค่าเว็บเซิร์ฟเวอร์เพื่อตั้งค่าพร็อกซีย้อนกลับหรืออะไรทำนองนั้น


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