Apakah ada skrip untuk menambahkan aturan port forwarding di router rumah?

15

TL; DR : Saya mencari skrip atau pekerjaan cron, yang secara berkala akan berjalan pada host linux (fedora pada raspberry pi) yang akan memeriksa apakah aturan port forwarding masih ada di router dan menambahkannya jika tidak . Tujuannya adalah untuk selalu memiliki akses ke host linux raspberry pi melalui SSH, VNC dan antarmuka web transmisi, dari mesin apa pun di internet di luar jaringan rumah saya. Setup diberikan di bawah ini:

Router :

Beetel 440Tx1 ADSL2 router + modem + wifi.

Pengaturan :

Router terhubung ke internet (ISP Broadband) dan memiliki IP eksternal yang dinamis. Ini menyediakan jaringan rumah pribadi ke komputer saya dengan IP internal 192.168.xy bertindak sebagai DHCP juga.

Tuan rumah :

Sebuah host AR raspberry pi dengan Fedora Linux, berjalan sepanjang waktu dengan ssh, vnc, server daemon transmisi dimulai saat boot. Ini juga memiliki DUC no-ip.com dyndns gratis (klien pembaruan dinamis) yang secara rutin memeriksa IP eksternal dan mengikatnya ke host string. Jadi saya selalu dapat menemukan IP eksternal router saya dengan menyelesaikan string dyndns saya seperti myrouter.no-ip.org . Pi memiliki IP internal statis seperti 192.168.1.z.

Penerusan Pelabuhan :

Harus masuk ke router menggunakan GUI / browser dengan kredensial pabrik hanya jika terhubung ke jaringan itu baik melalui kabel ethernet atau dilindungi wi-fi

http://192.168.1.1/html/index1.html

Saya menyiapkan aturan dengan masuk untuk meneruskan lalu lintas apa pun di port 22, 5900, 9091 di IP eksternal ke program masing-masing pendengar (sshd, vncserver, transmisi-daemon) pada pi di 192.168.1.z.

Masalah :

Router ini kehilangan aturan port forwarding di atas ketika router (router) dihidupkan ulang, atau bahkan jika ada lonjakan daya listrik dan UPS harus sesaat melangkah, dan biasanya mendapatkan IP eksternal yang berbeda dari ISP saya secara dinamis.

Persyaratan :

Sebuah skrip atau tugas cron yang dapat berjalan di pi fedora linux saya yang dapat login ke router saya dan secara berkala polling untuk keberadaan aturan port forwarding dan membuatnya jika ada yang hilang. Bantuan dihargai.

PKM
sumber
1
Apakah router mendukung pengaturan penerusan port melalui UPnP? (dapatkah program yang berjalan di windows / mac / linux secara otomatis membuat aturan port forwarding sendiri saat ini?)
Scott Chamberlain
Saya kira begitu karena pcwintech.com/showimage?file=files/screenshots/beetel-440txi/... Saya tidak terlalu tahu tentang UPnP selain halaman wikipedia. Googling untuk jenis router (yang dipermasalahkan) mengarahkan saya ke halaman itu.
PKM

Jawaban:

18

MiniUPnP adalah klien baris perintah UPnP yang memungkinkan Anda mengaktifkan penerusan porta. Sumber tersedia sehingga Anda harus dapat mengompilasinya ke Pi.

Saya pikir ini adalah sintaks yang Anda butuhkan, tapi saya tidak punya mesin untuk mengujinya. Anda hanya akan memasukkan yang berikut ini dalam skrip yang akan mengatur port UPnP untuk Anda

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
Scott Chamberlain
sumber
yang berfungsi, namun tempat apa yang tepat untuk menambahkannya sehingga perintah berjalan saat startup?
Ciasto piekarz
1
Anda dapat menggunakan @reboot <cmd>crontab Anda
Martin
1
miniupnpc harus tersedia dengan raspbian dengan apt
Scott
dan upnpc, jika dijalankan dari mesin yang menjalankan layanan, akan menggunakan alamat lokal sehingga ifconfig / grep tidak perlu
Scott
yang ifconfig ...bagian tidak bekerja untuk saya jadi saya menggunakan ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p'per jawaban ini .
Helder S Ribeiro