ส่งต่อพอร์ตบน Linux โดยไม่มี iptables หรือไม่


34

ฉันมีเซิร์ฟเวอร์ Linux VPS (virtuozzo) และฉันต้องการตั้งค่าการส่งต่อพอร์ต แต่ผู้ให้บริการโฮสต์ของฉันไม่อนุญาตโมดูลเคอร์เนลiptables-natดังนั้นiptables -t nat- ไม่ทำงาน

ฉันกำลังมองหาวิธีอื่นในการทำ ฉันรู้ว่าฉันสามารถส่งต่อพอร์ตโดยใช้opensshแต่ฉันต้องส่งต่อ 20 พอร์ตที่แตกต่างกัน, tcp และ udp ดังนั้นนี่ไม่ใช่ตัวเลือก

มีซอฟต์แวร์ใด ๆ สำหรับ linux ที่สามารถทำการส่งต่อพอร์ตได้หรือไม่?


คำถามที่ดีฮะ +1 ฉันไม่ได้ตระหนักถึงวิธีการแก้ปัญหารอคอยที่จะดูว่าเป็นสิ่งที่นี่
The Shurrican

แล้วโปรแกรมที่ช่วยให้คุณสามารถส่งต่อพอร์ตไปยังปลายทางต่างๆตาม IP ต้นทางได้อย่างไร
dpk

หลีกเลี่ยงปัญหาทั้งหมดโดยไม่ใช้ VPSuo ตาม Virtuozzo / OpenVZ
Michael Hampton

@MichaelHampton: ไม่สร้างสรรค์มาก ...
Nicolas Raoul

คำตอบ:


47

ใช้เครื่องมือที่เรียกว่า "socat" มันเป็นเครื่องมือที่ยอดเยี่ยมสำหรับสิ่งต่าง ๆ และมันถูกบรรจุในลินุกซ์หลายตัว อ่านเพิ่มเติมได้ที่นี่: http://www.dest-unreach.org/socat/doc/README

ตัวอย่างการส่งต่อพอร์ตด้วย socat:

socat TCP4-LISTEN:80,fork TCP4:www.yourdomain.org:8080

สิ่งนี้จะเปลี่ยนเส้นทางการเชื่อมต่อ TCP ทั้งหมดในพอร์ต 80 ไปที่ www.yourdomain.org พอร์ต 8080 TCP


อย่าลืมว่า https เป็นค่าเริ่มต้นที่พอร์ต 443 แทนที่จะเป็นพอร์ต 80 :)
keiki

Socat เป็นเครื่องมือเดียวที่ทำงานสำหรับฉันใน IPv6 อย่างเดียวราสเบอร์รี่ Pi
chotchki

สมบูรณ์แบบแก้ไขปัญหาของฉันทันที หมายเหตุคุณต้องตรวจสอบให้แน่ใจว่าพอร์ตขาเข้าเปิดอยู่ใน iptables หากคุณมีเช่นนั้น
jancha

13

มีโปรแกรมแหล่งข้อมูลขนาดเล็กredirซึ่งเรียกว่าสามารถกำหนดค่าได้

apt-get install redir บนการแจกแจงแบบเดเบียน


ฉันเคยใช้เครื่องมือนี้ในอดีตและใช้งานได้ดีมาก ...
Alex

ฉันสองเครื่องมือนี้ ดูเหมือนว่านี่ไม่ใช่เครื่องมือการส่งต่อแพ็กเกจ แต่เป็นช่องสัญญาณ tcp มันจะเปลี่ยนที่อยู่ IP ต้นทางที่เป้าหมายเห็น ดังนั้นจึงใช้งานได้ดีเมื่อคุณต้องการเปลี่ยนเส้นทางหนึ่งพอร์ตไปยังคอมพิวเตอร์เครื่องอื่นซึ่งมีการตั้งค่าเส้นทางที่แตกต่างกัน
scegg

10

เกี่ยวกับrinetdอะไร
มันเป็นภูตที่เปลี่ยนเส้นทางการเชื่อมต่อ TCP ลองดูที่ man page เพื่อดูว่ามันเหมาะสมกับความต้องการของคุณหรือไม่: http://www.boutell.com/rinetd/


ดูน่าสนใจ แต่ จำกัด เฉพาะ TCP ตามที่คุณพูดเท่านั้น
troex

รองรับ UDP แล้ว: github.com/samhocevar/rinetd
kev

6

xinetdรองรับคุณสมบัติการเปลี่ยนเส้นทางซึ่งจะทำสิ่งที่คุณต้องการ ตามที่คนอื่น ๆ ระบุไว้มีจำนวนโปรแกรมที่จัดการการเปลี่ยนเส้นทาง

การใช้xinetdหรือโปรแกรมอื่น ๆ ที่ใช้tcpwrappersไลบรารีจะช่วยให้คุณสามารถใช้ข้อ จำกัด การเข้าถึงหากและเมื่อจำเป็น


4

xinet / inetd สำหรับเช่น:

การเปลี่ยนเส้นทาง

อนุญาตให้เปลี่ยนเส้นทางบริการ tcp ไปยังโฮสต์อื่น เมื่อ xinetd ได้รับการเชื่อมต่อ tcp บนพอร์ตนี้ระบบจะสร้างกระบวนการที่สร้างการเชื่อมต่อกับโฮสต์และหมายเลขพอร์ตที่ระบุและส่งต่อข้อมูลทั้งหมดระหว่างสองโฮสต์

http://linux.die.net/man/5/xinetd.conf


ดูน่าสนใจ แต่ จำกัด เฉพาะ TCP ตามที่คุณพูดเท่านั้น
Doud

4

ฉันพบว่าการใช้ประโยชน์เล็ก ๆ ที่เรียกว่า portfwd http://portfwd.sourceforge.net/มันทำในสิ่งที่ฉันต้องการ (การส่งต่อ TCP และ UDP) โฮมเพจบอกว่ามันได้รับการปรับปรุงล่าสุดในปี 2002 แต่รุ่นล่าสุดคือ 2007 และทำงานบน 2.6 เคอร์เนล .


ฉันจะยอมรับคำตอบของฉันเพราะมันเป็นซอฟต์แวร์ตัวเดียวที่รองรับโปรโตคอล TCP และ UDP อย่างเต็มที่
troex

3

SSH ทำการส่งต่อพอร์ตตราบใดที่คุณสามารถช่องสัญญาณในการเชื่อมต่อ SSL


-3

ตกลงที่นี่เป็นคำตอบง่ายๆที่ควรจะใช้ได้ไม่ใช่วิทยาศาสตร์จรวด แต่คนส่วนใหญ่สับสนกับคำตอบและทำให้ผู้ใช้ Linux ใหม่สับสน

ufw อนุญาตให้ 2xxx

2xxx = หมายเลขพอร์ตของคุณเพียงแค่พิมพ์คำสั่งนั้นในเทอร์มินัลเซิร์ฟเวอร์ของคุณและพอร์ตที่คุณต้องการจะเปิดขึ้น


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