Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

TL;DR: I am looking for a script or a cron job, which will periodically run on a linux host (fedora on raspberry pi) which will check if a port forwarding rule still exists in the router and add it if it isn't. The aim is to always have access to the raspberry pi linux host via SSH, VNC and the transmission web interface, from any machine on the internet outside my home network. The setup is given below:


Beetel 440Tx1 ADSL2 router+modem+wifi.


Router is connected to the internet (ISP Broadband) and has a dynamic external IP. It provides a private home network to my computers with internal IPs 192.168.x.y acting as a DHCP too.


A raspberry pi ARM host with Fedora Linux, running all the time with ssh, vnc, transmission-daemon servers started at boot time. It also has the dyndns free DUC (dynamic update client) which routinely checks the external IP and binds it to host string. So I can always find my router's external IP by resolving my dyndns string like The pi has a static internal IP like 192.168.1.z.

Port Forwarding:

Have to login to router using GUI/browser with factory credentials only if connected to that network either through ethernet cable or password protected wi-fi

I setup the rule by logging in to forward any traffic at ports 22, 5900, 9091 at the external IP to the respective listener programs (sshd, vncserver, transmission-daemon) on the pi at 192.168.1.z.


This router loses the above port forwarding rule when it (the router) is restarted, or even if there is a spike in electric power and the UPS has to momentarily step in, and usually gets a different external IP from my ISP dynamically.


A script or cron job that can run on my fedora linux pi that can login to my router and periodically poll for the existence of that port forwarding rule and create it if it is missing. Help appreciated.

share|improve this question
Does the router support setting up port forwarding via UPnP? (can programs running in windows/mac/linux automatically set up port forwarding rules themselves currently?) – Scott Chamberlain Aug 21 '13 at 8:40
I think so because… I don't really know much about UPnP other than the wikipedia page. Googling for that router type (in question) led me to that page. – PKM Aug 21 '13 at 8:43
up vote 6 down vote accepted

MiniUPnP is a command line UPnP client that allows you to enable port forwarding. The source is available so you should be able to compile it to the Pi.

I think this is the syntax you need, but I don't have a machine to test it on. You would just put the following in a script that would set up the uPnP ports for you

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
share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .