Iptables, переброска порта.
Добрый день. Настраиваю у себя небольшую сеть. Как маршрутизатор использую Ubuntu Server 11.04. У него два интерфейса eth1 - внешний (с IP от провайдера) и eth0 для NAT. Суть вопроса пока не в этом, но для полной картины приведу все настройки
/etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback
auto eth1
iface eth1 inet static
address x.x.x.x
netmask 255.255.255.240
gateway x.x.x.x
dns-nameservers x.x.x.x
auto eth0
iface eth0 inet static
address 192.168.0.1
network 192.168.0.0
netmask 255.255.254.0
broadcast 192.168.1.255
Вся настройка NAT делается следующими скриптами:
Очистка от всех правил
#!/bin/bash
echo "Stopping fw..."
/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -t nat -F
/sbin/iptables -t nat -X
/sbin/iptables -t mangle -F
/sbin/iptables -t mangle -X
/sbin/iptables -P INPUT ACCEPT
/sbin/iptables -P FORWARD ACCEPT
/sbin/iptables -P OUTPUT ACCEPT
nat.sh
#! /bin/bash
FWVER=0.1
echo -e "\n\nLoading simple rc.firewall-iptables version $FWVER..\n"
DEPMOD=/sbin/depmod
MODPROBE=/sbin/modprobe
EXTIF="eth1"
INTIF="eth0"
echo " External Interface $EXTIF"
echo " Internal Interface $INTIF"
#===================================================================
echo -en " loading modules: "
echo " - Verifying that all kernel modules are ok"
$DEPMOD -a
echo "------------------------------------------------------------------------------------------"
echo -en "ip_tables, "
$MODPROBE ip_tables
echo -en "nf_conntrack, "
$MODPROBE nf_conntrack
echo -en "nf_conntrack_ftp, "
$MODPROBE nf_conntrack_ftp
echo -en "nf_conntrack_irc, "
$MODPROBE nf_conntrack_irc
echo -en "iptable_nat, "
$MODPROBE iptable_nat
echo -en "nf_nat_ftp "
$MODPROBE nf_nat_ftp
echo -en "\n------------------------------------------------------------------------------------------"
echo -en " \nDone loading modules.\n"
echo " Enabling forwarding.."
echo "1" > /proc/sys/net/ipv4/ip_forward
echo " Enabling DynamicAddr.."
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
echo " Clearing any existing rules and setting default policy.."
iptables-restore <<-EOF
*nat
-A POSTROUTING -o "$EXTIF" -j MASQUERADE
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A FORWARD -i "$EXTIF" -o "$INTIF" -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i "$INTIF" -o "$EXTIF" -j ACCEPT
-A FORWARD -j LOG
COMMIT
EOF
echo -e "\nrc.frewall-iptables v$FWVER done.\n"
Все это дело работает на ура + в связке с isc-dhcp + bind9. Вопрос в следующем скрипте. В NAT есть машинка под WinXp куда мне бы хотелось иметь доступ удаленно (RDP). Порт там стандартный 3389. А заходить хочу не через него, а через другой (скажем 6882)
Делаю так
pf.sh
!/bin/bash
EXT_R_IP=x.x.x.x
LOCAL_IP=192.168.1.10
PORT1=6882
PORT2=3389
EXTIF=eth1
INTIF=eth0
echo -ne "External IP $EXT_R_IP\n"
echo -ne "IP to be forwarded to $LOCAL_IP\n"
echo -ne "External port to be knocked at $PORT1\n"
echo -ne "RDP port at $LOCAL_IP is $PORT2\n"
echo -ne "Doing the f**king magic.......\n"
echo -ne "-----------------------------------------------------------\n"
/sbin/iptables -A INPUT -p tcp -i $EXTIF --dport $PORT1 -j ACCEPT
/sbin/iptables -t nat -A PREROUTING -p tcp -d $EXT_R_IP --dport $PORT1 -j DNAT --to-destination $LOCAL_IP:$PORT2
/sbin/iptables -A FORWARD -i $EXTIF -d $LOCAL_IP -p tcp --dport $PORT2 -j ACCEPT
Но ничего не работает. Как не бьюсь, не заходит удаленно. Подскажите, что неверно здесь?