$EXT_IP - внешний IP роутера
$EXT_DEV - внешний интерфейс (например, eth0)
$INT_IP - внутренний адрес машины, которую надо "выкидывать" наружу
$PORT1 - Порт, на который будут заходить извне и попадать на локальную машину
$PORT2 - Порт, который "выбрасывается" наружу(например, 80 - http, либо 21 - ftp)
iptables -t nat -A PREROUTING -p tcp -d $EXT_IP --dport $PORT1 -j DNAT --to-destination $INT_IP:$PORT2
iptables -A FORWARD -i $EXT_DEV -d $INT_IP -p tcp --dport $PORT2 -j ACCEPT
Или требуется вообще "выкинуть" машину наружу?
$NEW_IP - новый IP, на который будем "сажать" "выведенную" машину из локалки
(не может же она жить без IP
Если провайдер дал Вам больше одного внешнего IP-адреса)
$BC,$NM,$GW - соответственно, broadcast, netmask, gateway
ifconfig $EXT_DEV:0 $NEW_IP netmask $NM broadcast $BC
route add $NEW_IP gw $GW netmask 0.0.0.0 metric 1 dev $EXT_DEV:0
iptables -t nat -A PREROUTING -p tcp -d $NEW_IP -j DNAT --to-destination $INT_IP
iptables -A FORWARD -i eth0 -d $INT_IP -j ACCEPT
Теперь локальную машину могут ломать хакеры всего интернета!!