Всем доброго дня. Достался сервер в роли маршрутизатора со скриптом настройки. Все работает хорошо, но теперь потребовалось сделать доступ c сервера в DMZ во внешний мир. Достаточно только одного порта tcp.
Просидел сегодня целый день в попытках разобраться. Шлюзом по-умолчанию сейчас eth1 (ext2). Его внешний адрес нормально пингуется. Когда же пытаюсь пинговать его шлюз, узел недоступен. В то время как второй конец тоннеля ppp0(ext1) абсолютно нормально пингуется.
Сломал сегодня себе всю голову. Помогите, пожалуйста. =)
#/bin/bash
## addresses and interfaces
IP_EXT1="*.*.*.*"
IP_EXT2="*.*.*.*"
IP_LAN="192.168.0.1"
IP_DMZ="192.168.1.1"
IP_VPN="10.8.0.1"
IF_EXT1="ppp0"
IF_EXT2="eth1"
IF_LAN="eth2"
IF_DMZ="eth3"
IF_VPN="as0t0"
DMZ_FTP="192.168.1.3"
DMZ_RDP="192.168.1.2"
DNS="192.168.0.1"
VPN_SUBNET="10.8.0.0/24"
##iptables
IPT="/sbin/iptables"
##ip-forwarding
echo "1" > /proc/sys/net/ipv4/ip_forward
##dynamic IP
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
##flush all rules
$IPT --flush
$IPT -t nat --flush
$IPT -t mangle --flush
$IPT -t filter --flush
$IPT -X
##default polices
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP
## loopback
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
## DNS
#external DNS
$IPT -A INPUT -p udp --sport 1024:65535 -j ACCEPT
$IPT -A INPUT -p udp --sport 53 -j ACCEPT
$IPT -A INPUT -p tcp --sport 1024:65535 -j ACCEPT
$IPT -A INPUT -p tcp --sport 53 -j ACCEPT
#LAN
$IPT -A INPUT -i $IF_LAN -p udp -d $DNS --dport 53 --sport 1024:65535 -j ACCEPT
$IPT -A INPUT -i $IF_LAN -p tcp -d $DNS --dport 53 --sport 1024:65535 -j ACCEPT
#DMZ
$IPT -A INPUT -i $IF_DMZ -p udp -d $DNS --dport 53 --sport 1024:65535 -j ACCEPT
$IPT -A INPUT -i $IF_DMZ -p tcp -d $DNS --dport 53 --sport 1024:65535 -j ACCEPT
$IPT -A INPUT -p tcp --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -p icmp -j ACCEPT
$IPT -A OUTPUT -p icmp -j ACCEPT
#Port mapping
$IPT -t nat -A PREROUTING -i $IF_VPN -s $VPN_SUBNET -p tcp --dport 3389 -j DNAT --to-destination $DMZ_RDP:3389
$IPT -t nat -A PREROUTING -i $IF_VPN -s $VPN_SUBNET -p tcp --dport 8443 -j DNAT --to-destination $IP_LAN:8443
$IPT -A FORWARD -i $IF_VPN -o $IF_DMZ -j ACCEPT
$IPT -A FORWARD -i $IF_DMZ -o $IF_VPN -j ACCEPT
## NAT : IF_EXT1
$IPT -t nat -A POSTROUTING -o $IF_EXT1 -j SNAT --to-source $IP_EXT1
$IPT -A FORWARD -i $IF_LAN -o $IF_EXT1 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -i $IF_EXT1 -o $IF_LAN -m state --state ESTABLISHED,RELATED -j ACCEPT
## NAT : IF_EXT2
$IPT -A FORWARD -i $IF_LAN -o $IF_EXT2 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -i $IF_EXT2 -o $IF_LAN -m state --state ESTABLISHED,RELATED -j ACCEPT
## LAN <-> DMZ
$IPT -A FORWARD -i $IF_LAN -o $IF_DMZ -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
## FTP from LAN to DMZ
$IPT -A FORWARD -p tcp -i $IF_LAN -o $IF_DMZ -d $DMZ_FTP --dport 21 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -p tcp -i $IF_LAN -o $IF_DMZ -d $DMZ_FTP --dport 20 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
## RDP from LAN to DMZ
$IPT -A FORWARD -p tcp -i $IF_LAN -o $IF_DMZ -d $DMZ_RDP --dport 3389 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
## DMZ <-> LAN, only established
$IPT -A FORWARD -i $IF_DMZ -o $IF_LAN -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
## SSH
$IPT -A INPUT -i $IF_LAN -p tcp --dport 22 -j ACCEPT
$IPT -A INPUT -s $VPN_SUBNET -p tcp --dport 22 -j ACCEPT
$IPT -A INPUT -s $VPN_SUBNET -p tcp --dport 22 -j ACCEPT
## WEB-RDP
$IPT -A INPUT -i $IF_LAN -p tcp --dport 443 -j ACCEPT
$IPT -A INPUT -i $IF_EXT1 -p tcp --dport 443 -j ACCEPT
$IPT -A INPUT -i $IF_EXT2 -p tcp --dport 443 -j ACCEPT
$IPT -A INPUT -i $IF_EXT2 -p tcp --dport 3389 -j ACCEPT
## VPN
$IPT -A INPUT -i $IF_EXT2 -p tcp --dport 1194 -j ACCEPT
$IPT -A INPUT -i $IF_EXT2 -p udp --dport 1194 -j ACCEPT
## DHCP
$IPT -A INPUT -i $IF_LAN -p udp --sport 67 --dport 68 -d 255.255.255.255 -j ACCEPT
$IPT -A OUTPUT -o $IF_LAN -p udp --sport 68 --dport 67 -d 255.255.255.255 -j ACCEPT