Здравствуйте.
Есть Ubuntu Server 14.04, который работает в качестве шлюза уже несколько лет.
Через Iptables разрешено ходить в интернет через nat только нескольким адресам, остальным разрешено только забирать почту, пинговать, и еще по мелочам.
Так вот на днях, все кто не ходит в интернет через nat перестали пинговать адреса за границей локальной сети, запросы отваливаются по time out. Почту отправить через клиент тоже не получается, хотя забирает ее нормально.
Есть скрипт, который загружает правила в iptables, не могу понять где проблема.
#!/bin/bash
OUT="ppp0" # имя исходящего интерфейса, смотрящего в интернет.
OUTADDR="xx.xxx.xxx.xxx" # Адрес исходящего интерфейса
IN="eth0" # имя входящего интерфейса, смотрящего в локальную сеть
INADDR="192.168.0.7" # Адрес входящего интерфейса
NETWORK="192.168.0.0/16" # Адресация вашей локальной сети
ANYWHERE="0.0.0.0/0" # Назначение, любое.
PORTS="1024:65535" # Порты, которые считаются локальными
MULTICAST="224.0.0.0/4" # Мультикаст пакеты
ADMINS="192.168.0.151 192.168.0.187 192.168.0.62 192.168.0.78 192.168.0.162"
##############################################################################################
# Остановка скрипта
case "$1" in
stop)
echo "Shutting down firewall..."
iptables --flush
iptables --delete-chain
iptables --table nat --flush
iptables --table filter --flush
iptables --table nat --delete-chain
iptables --table filter --delete-chain
iptables -t filter -P INPUT ACCEPT
iptables -t filter -P OUTPUT ACCEPT
iptables -t filter -P FORWARD ACCEPT
echo "...done"
;;
status)
echo $"Table: filter"
iptables --list
echo $"Table: nat"
iptables -t nat --list
;;
restart|reload)
$0 stop
$0 start
;;
################################################################
# Запуск скрипта
start)
echo "Starting Firewall..."
echo ""
# Очистка таблиц и цепочек
iptables --flush
iptables --delete-chain
iptables --table nat --flush
iptables --table filter --flush
iptables --table nat --delete-chain
iptables --table filter --delete-chain
# Назначение глобальных политик фаервола
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
# Загружаем модули, для корректной работы VPN, Active ftp, DCC in IRC которые будут идти через нат.
modprobe ip_conntrack
modprobe ip_gre
modprobe ip_nat_ftp
modprobe ip_nat_pptp
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc
# Включение форвардинга
echo 1 > /proc/sys/net/ipv4/ip_forward
# Включение форвардинга для VPN
echo 1 > /proc/sys/net/ipv4/ip_dynaddr
# Admins - full control (even dangerous)
for admin_ips in $ADMINS; do
iptables -A INPUT -s $admin_ips -m state --state NEW -j ACCEPT
done
##########################################################
# Silently Drop Stealth Scans
# All of the bits are cleared
iptables -A INPUT -p icmp --icmp-type timestamp-request -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
# SYN and FIN are both set
iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
# SYN and RST are both set
iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
# FIN and RST are both set
iptables -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j DROP
# FIN is the only bit set, without the expected accompanying ACK
iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j DROP
# PSH is the only bit set, without the expected accompanying ACK
iptables -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j DROP
# URG is the only bit set, without the expected accompanying ACK
iptables -A INPUT -p tcp --tcp-flags ACK,URG URG -j DROP
################################################################
# Multicast - ignore
iptables -A INPUT -s $MULTICAST -j DROP
iptables -A INPUT -d $MULTICAST -j DROP
# any established or related conns are welcome
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Loopback
iptables -A INPUT -i lo -j ACCEPT
# Statistics and auths for customers, ping tests
for net_ips in $NETWORK; do
iptables -A INPUT -p icmp -i $IN --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp -i eth2 --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp -i $OUT --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp -i ppp1 --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p 139 -i ppp1 -j ACCEPT
iptables -A INPUT -p 139 -i ppp0 -j ACCEPT
done
############ Открываем нужные нам порты.
#Samba
iptables -A INPUT -p tcp -i $IN -m multiport --dport 139,445 -j ACCEPT
iptables -A INPUT -p udp -i $IN -m multiport --dport 137,138 -j ACCEPT
#SNMP port
iptables -A INPUT -p udp -i $IN --dport 161 -j ACCEPT
#SNTP time port
iptables -A INPUT -p udp -i $IN --dport 123 -j ACCEPT
# HTTP
iptables -A INPUT -p tcp -i $IN -m multiport --dport 80,443,10000 -j ACCEPT
iptables -A INPUT -p tcp --source 62.122.207.154 -i $OUT -m multiport --dport 80,443,10000 -j ACCEPT
#Mail
iptables -A INPUT -p tcp -i $OUT -m multiport --dport 465,995,587,143,993,110 -j ACCEPT
#MAIL
#iptables -A INPUT -p tcp -i $IN -m multiport --dport 25,110,143,465,995,993 -j ACCEPT
#dns
iptables -A INPUT -p udp -i $IN --dport 53 -j ACCEPT
########### OUTPUT
iptables -A OUTPUT -p icmp --icmp-type timestamp-reply -j DROP
########### NAT
POSTROUTING -s 192.168.0.0/23 -o $OUT -j SNAT --to-source 62.122.207.107
iptables -t nat -A POSTROUTING -s 192.168.0.5 -o $OUT -j SNAT --to-source xx.xxx.xxx.xxx ###fuji
iptables -t nat -A POSTROUTING -s 192.168.0.6 -o $OUT -j SNAT --to-source xx.xxx.xxx.xxx ###megatron
#############ОСТАЛЬНОЕ#############
## #
## #
## #
###################################
echo "...done"
echo "--> IPTABLES firewall loaded/activated <--"
##--------------------------------End Firewall---------------------------------##
;;
*)
echo "Usage: firewall (start|stop|restart|status) EXTIF INTIF"
exit 1
esac
exit 0
Если отобразить цепочку правил, то вроде все на месте.
adm@ubuntu:~$ sudo iptables -L -n -v
Chain INPUT (policy DROP 3995 packets, 356K bytes)
pkts bytes target prot opt in out source destination
0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x3F/0x00
0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x03/0x03
0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x06/0x06
0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x05/0x05
0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x11/0x01
0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x18/0x08
0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x30/0x20
0 0 DROP all -- * * 224.0.0.0/4 0.0.0.0/0
0 0 DROP all -- * * 0.0.0.0/0 224.0.0.0/4
2393K 684M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
7 677 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT icmp -- eth0 * 0.0.0.0/0 0.0.0.0/0 icmptype 8
0 0 ACCEPT icmp -- eth2 * 0.0.0.0/0 0.0.0.0/0 icmptype 8
0 0 ACCEPT icmp -- ppp0 * 0.0.0.0/0 0.0.0.0/0 icmptype 8
0 0 ACCEPT icmp -- ppp1 * 0.0.0.0/0 0.0.0.0/0 icmptype 8
0 0 ACCEPT 139 -- ppp1 * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT 139 -- ppp0 * 0.0.0.0/0 0.0.0.0/0
1 48 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 multiport dports 139,445
1223 125K ACCEPT udp -- eth0 * 0.0.0.0/0 0.0.0.0/0 multiport dports 137,138
160 14577 ACCEPT udp -- eth0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:161
0 0 ACCEPT udp -- eth0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:123
18 936 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 multiport dports 80,443,10000
0 0 ACCEPT tcp -- ppp0 * xx.xxx.xxx.xxx 0.0.0.0/0 multiport dports 80,443,10000
0 0 ACCEPT tcp -- ppp0 * 0.0.0.0/0 0.0.0.0/0 multiport dports 25,465,995,587,143,993,110
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:21 state NEW
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpts:50000:50500 state NEW
0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpts:50000:50500 state NEW
0 0 DROP tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:3128
2871 143K ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:40781
0 0 ACCEPT 47 -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:1723
0 0 ACCEPT tcp -- ppp0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:1723
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:1723
252 18883 ACCEPT udp -- eth0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:53
0 0 ACCEPT tcp -- eth2 * 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy ACCEPT 307K packets, 263M bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp -- ppp0 * 0.0.0.0/0 192.168.0.8 tcp dpt:7681
Chain OUTPUT (policy ACCEPT 4732K packets, 789M bytes)
pkts bytes target prot opt in out source destination
0 0 DROP icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 14
Если делать трассировку, то отвечает только сам шлюз, дальше time out.