É assim que você faz o que você pediu com o iptables:
sysctl net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -p tcp -d x.x.x.x --dport 500 -j DNAT --to-destination 127.0.0.1:500
iptables -t nat -A POSTROUTING -j MASQUERADE
Quanto aos problemas de script de shell, você deve configurar o script (má ideia) ou usar popen()
para executar sudo /path/to/yourscript
e configurar o sudo para permitir que o usuário que está executando o programa em C faça isso.