Acabei criando um script que essencialmente atualizaria o iptables automaticamente se o endereço IP fosse alterado. Aqui está o que eu criei (preencha XXXX com IP e porta)
#!/bin/sh
# setup variables
HOST=$1
HOSTFILE="/tmp/root/hosts/host-$HOST"
IPTABLES="/usr/sbin/iptables"
# check to make sure we have enough args passed (1).
if [ $# -eq 0 ]; then
echo "$0 hostname"
echo "You must supply a hostname to update in iptables."
exit
fi
# lookup host name from dns tables using ping, if invalid hostname, dns server ip responds (67.215.65.132)
IP='ping -c 1 ${HOST} | egrep -m1 -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}''
if [ "${IP}" = "67.215.65.132" ]; then
echo "Couldn't lookup hostname for $HOST, failed."
exit
fi
# check if hostfile exists (-e) and if so, read the contents
OLDIP=""
if [ -e $HOSTFILE ]; then
OLDIP='cat $HOSTFILE'
echo "CAT returned: $?"
fi
# has address changed?
if [ "$OLDIP" == "$IP" ]; then
echo "Old and new IP addresses match."
exit
fi
# save new ip to host file.
echo $IP>$HOSTFILE
echo "Updating $HOST in iptables."
if [ "${#OLDIP}" != "0" ]; then
echo "Removing old rule ($OLDIP)"
'${IPTABLES} -t nat -D PREROUTING -p tcp -s ${IP} -d $(nvram get wan_ipaddr) --dport XXXX -j DNAT --to 192.168.1.XXXX:XXXX'
'${IPTABLES} -D FORWARD -p tcp -s ${IP} -d 192.168.1.XXXX --dport XXXX -j ACCEPT'
fi
echo "Inserting new rule ($IP)"
# route and forward all traffic from ip XXXX to port XXXX
'${IPTABLES} -t nat -I PREROUTING -p tcp -s ${IP} -d $(nvram get wan_ipaddr) --dport XXXX -j DNAT --to 192.168.1.XXXX:XXXX'
'${IPTABLES} -I FORWARD -p tcp -s ${IP} -d 192.168.1.XXXX --dport XXXX -j ACCEPT'