มีสคริปต์เพื่อเพิ่มกฎการส่งต่อพอร์ตในเราเตอร์ที่บ้านหรือไม่


15

TL : DR : ฉันกำลังมองหาสคริปต์หรืองาน cron ซึ่งจะทำงานเป็นระยะบนโฮสต์ linux (fedora บน raspberry pi) ซึ่งจะตรวจสอบว่ากฎการส่งต่อพอร์ตยังคงมีอยู่ในเราเตอร์และเพิ่มถ้ามันไม่ใช่ . เป้าหมายคือเพื่อให้สามารถเข้าถึงโฮสต์ราสเบอร์รี่ pi linux ได้ตลอดเวลาผ่าน SSH, VNC และเว็บอินเตอร์เฟสการส่งข้อมูลจากเครื่องใด ๆ บนอินเทอร์เน็ตนอกเครือข่ายในบ้านของฉัน การตั้งค่าได้รับด้านล่าง:

เราเตอร์ :

Beetel 440Tx1 ADSL2 เราเตอร์ + โมเด็ม + wifi

ตั้งค่า :

เราเตอร์เชื่อมต่อกับอินเทอร์เน็ต (ISP Broadband) และมี IP ภายนอกแบบไดนามิก ให้เครือข่ายในบ้านส่วนตัวกับคอมพิวเตอร์ของฉันด้วย IP ภายใน 192.168.xy ทำหน้าที่เป็น DHCP ด้วย

โฮสต์ :

โฮสต์ราสเบอร์รี่ pi ARM พร้อม Fedora Linux ซึ่งทำงานอยู่ตลอดเวลากับเซิร์ฟเวอร์ ssh, vnc, transmission-daemon ที่เริ่มต้นในเวลาบูต นอกจากนี้ยังมี no-ip.com dyndns ฟรี DUC (ไคลเอนต์การปรับปรุงแบบไดนามิก) ซึ่งตรวจสอบ IP ภายนอกเป็นประจำและผูกเข้ากับโฮสต์สตริง ดังนั้นผมจึงสามารถหา IP ภายนอกเราเตอร์ของฉันโดยการแก้ไขสตริง dyndns ของฉันเหมือน myrouter.no-ip.org pi มี IP ภายในแบบคงที่เช่น 192.168.1.z

การส่งต่อพอร์ต :

ต้องเข้าสู่ระบบเราเตอร์โดยใช้ GUI / เบราว์เซอร์ที่มีหนังสือรับรองโรงงานเท่านั้นหากเชื่อมต่อกับเครือข่ายนั้นผ่านสายอีเธอร์เน็ตหรือรหัสผ่านป้องกันด้วย Wi-Fi

http://192.168.1.1/html/index1.html

ฉันตั้งค่ากฎโดยลงชื่อเข้าใช้เพื่อส่งต่อปริมาณข้อมูลใด ๆ ที่พอร์ต 22, 5900, 9091 ที่ IP ภายนอกไปยังโปรแกรมฟังที่เกี่ยวข้อง (sshd, vncserver, transmission-daemon) บน pi ที่ 192.168.1.z

ปัญหา :

เราเตอร์นี้จะสูญเสียกฎการส่งต่อพอร์ตด้านบนเมื่อมีการรีสตาร์ท (เราเตอร์) หรือแม้ว่าจะมีพลังงานไฟฟ้าเพิ่มขึ้นอย่างมากและ UPS ก็ต้องก้าวเข้ามาชั่วขณะและมักจะได้รับ IP ภายนอกที่แตกต่างจาก ISP ของฉันแบบไดนามิก

ความต้องการ :

งานสคริปต์หรือ cron ที่สามารถทำงานบน fedora linux pi ของฉันที่สามารถเข้าสู่เราเตอร์ของฉันและสำรวจความคิดเห็นเกี่ยวกับการดำรงอยู่ของกฎการส่งต่อพอร์ตนั้นเป็นระยะ ๆ และสร้างมันขึ้นมาถ้ามันหายไป ช่วยชื่นชม


1
เราเตอร์รองรับการตั้งค่าการส่งต่อพอร์ตผ่าน UPnP หรือไม่ (โปรแกรมที่ทำงานใน windows / mac / linux สามารถตั้งค่ากฎการส่งต่อพอร์ตเองโดยอัตโนมัติในปัจจุบันได้หรือไม่)
Scott Chamberlain

ฉันคิดอย่างนั้นเพราะpcwintech.com/showimage?file=files/scurrencys/beetel-440txi/ … ฉันไม่รู้มากเกี่ยวกับ UPnP นอกเหนือจากหน้าวิกิพีเดีย Googling สำหรับประเภทเราเตอร์นั้น (เป็นปัญหา) ทำให้ฉันไปที่หน้านั้น
PKM

คำตอบ:


18

MiniUPnPเป็นไคลเอนต์บรรทัดคำสั่ง UPnP ที่ให้คุณเปิดใช้งานการส่งต่อพอร์ต แหล่งที่มาพร้อมใช้งานดังนั้นคุณควรจะสามารถรวบรวมไปยัง Pi

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

upnpc -a `ifconfig wlan0 | grep "inet addr" | cut -d : -f 2 | cut -d " " -f 1` 22 22 TCP
upnpc -a `ifconfig wlan0 | grep "inet addr" | cut -d : -f 2 | cut -d " " -f 1` 5900 5900 TCP
upnpc -a `ifconfig wlan0 | grep "inet addr" | cut -d : -f 2 | cut -d " " -f 1` 9091 9091 TCP

มันใช้งานได้ แต่อะไรคือสถานที่ที่เหมาะสมในการเพิ่มเพื่อให้คำสั่งทำงานเมื่อเริ่มต้น?
Ciasto piekarz

1
คุณสามารถใช้@reboot <cmd>ใน crontab ของคุณ
Martin

1
miniupnpc ควรจะใช้ได้กับ raspbian ด้วยฉลาด
สกอตต์

และ upnpc หากเรียกใช้จากเครื่องที่เรียกใช้บริการจะใช้ที่อยู่ในพื้นที่เพื่อให้ ifconfig / grep ไม่จำเป็น
Scott

ifconfig ...ส่วนหนึ่งไม่ได้ทำงานสำหรับผมดังนั้นผมจึงใช้ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p'ตามคำตอบนี้
Helder S Ribeiro
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.