День добрый!
Имеется сервер Ubuntu 8.10 server, два интерфейса, eth0 смотрит в сторону интернета со статическим IP, eth1 смотрит в сторону локальной сети, машинам этой сети IP раздаются по DHCP сервера. iptables настроен так:
# Generated by iptables-save v1.4.0 on Thu Nov 13 16:49:09 2008
*nat
:OUTPUT ACCEPT [0:0]
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Thu Nov 13 16:49:09 2008
# Generated by iptables-save v1.4.0 on Thu Nov 13 16:49:09 2008
*mangle
:PREROUTING ACCEPT [231:16053]
:INPUT ACCEPT [90:9095]
:FORWARD ACCEPT [140:6720]
:OUTPUT ACCEPT [52:8679]
:POSTROUTING ACCEPT [196:16213]
COMMIT
# Completed on Thu Nov 13 16:49:09 2008
# Generated by iptables-save v1.4.0 on Thu Nov 13 16:49:09 2008
*filter
:INPUT ACCEPT [17003:6426770]
:FORWARD ACCEPT [986:47373]
:OUTPUT ACCEPT [10668:4646019]
-A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i eth1 -o eth0 -j ACCEPT
-A FORWARD -j LOG
COMMIT
# Completed on Thu Nov 13 16:49:09 2008
В таком варианте доступ в интернет на локальных машинах есть.
Воспользовался шаблоном со 2-ой стр. темы, немного его отредактировав, и столкнулся с проблемой. После применения правил перестали устанавливаться соединения, т.е. нельзя открыть страницу в браузере, принять/отправить почту и т.д. Однако, если аська до применения правил была в коннекте, то она так и продолжает работать, пока не сделаешь ей дисконнект. Все, после этого и она отказывается работать. Да, речь идет о соединениях с машины в локальной сети. При этом пингуется и свой сервер (оба интерфейса), и шлюз провайдера, но не пингуются буквенные адреса (например,
www.google.ru) - как будто упала DNS, но я-то ее не трогал.
Новые настройки iptables (для наглядности вырезал комментарии, хотя может быть и зря):
IPTABLES="/sbin/iptables"
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT
$IPTABLES -t nat -P OUTPUT ACCEPT
$IPTABLES -t mangle -P PREROUTING ACCEPT
$IPTABLES -t mangle -P OUTPUT ACCEPT
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -t mangle -F
$IPTABLES -X
$IPTABLES -t nat -X
$IPTABLES -t mangle -X
INET_IP="xxx.xxx.xxx.xxx"
INET_IFACE="eth0"
LAN_IP="192.168.0.50"
LAN_IP_RANGE="192.168.0.0/24"
LAN_IFACE="eth1"
LO_IFACE="lo"
LO_IP="127.0.0.1"
LO_IP_RANGE="127.0.0.0/8"
DNS_PORT="53"
HTTP_PORT="80"
HTTPS_PORT="443"
FTP_PORT="21"
POP3_PORT="25"
SMTP_PORT="110"
SSH_PORT="22"
ICQ_PORT="5190"
WEBMIN_PORT="10000"
WEBCUPS_PORT="631"
#TORRENT_PORT="6881"
#MYSQL_PORT="3306"
/sbin/modprobe ip_conntrack_ftp
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -N bad_tcp_packets
$IPTABLES -N allowed
$IPTABLES -N tcp_packets
$IPTABLES -N udp_packets
$IPTABLES -N icmp_packets
$IPTABLES -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset
$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "New not syn:"
$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP
$IPTABLES -A allowed -p TCP --syn -j ACCEPT
$IPTABLES -A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A allowed -p TCP -j DROP
$IPTABLES -A tcp_packets -p TCP --dport $DNS_PORT -j allowed
$IPTABLES -A tcp_packets -p TCP --dport $FTP_PORT -j allowed
$IPTABLES -A tcp_packets -p TCP --dport $HTTP_PORT -j allowed
$IPTABLES -A tcp_packets -p TCP --dport $HTTPS_PORT -j allowed
$IPTABLES -A tcp_packets -p TCP --dport $WEBMIN_PORT -j allowed
$IPTABLES -A tcp_packets -p TCP --dport $WEBCUPS_PORT -j allowed
$IPTABLES -A tcp_packets -p TCP --dport $POP3_PORT -j allowed
$IPTABLES -A tcp_packets -p TCP --dport $SMTP_PORT -j allowed
$IPTABLES -A tcp_packets -p TCP --dport $SSH_PORT -j allowed
$IPTABLES -A tcp_packets -p TCP --dport $ICQ_PORT -j allowed
$IPTABLES -A udp_packets -p UDP --destination-port 123 -j ACCEPT
$IPTABLES -A udp_packets -p UDP -i $INET_IFACE -d 255.255.255.255 --dport 135:139 -j DROP
$IPTABLES -A udp_packets -p UDP -i $LAN_IFACE -d 255.255.255.255 --dport 135:139 -j DROP
$IPTABLES -A udp_packets -p UDP -i $INET_IFACE -d 255.255.255.255 --destination-port 67:68 -j DROP
$IPTABLES -A udp_packets -p UDP -i $LAN_IFACE -d 255.255.255.255 --destination-port 67:68 -j DROP
$IPTABLES -A icmp_packets -p ICMP --icmp-type 8 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP --icmp-type 11 -j ACCEPT
$IPTABLES -A INPUT -p tcp -j bad_tcp_packets
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LO_IP_RANGE -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LAN_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $INET_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -d $LAN_IP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p TCP -i $LAN_IFACE -j tcp_packets
$IPTABLES -A INPUT -p UDP -i $LAN_IFACE -j udp_packets
$IPTABLES -A INPUT -p ICMP -i $LAN_IFACE -j icmp_packets
$IPTABLES -A INPUT -p ALL -d $INET_IP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p TCP -i $INET_IFACE -j tcp_packets
$IPTABLES -A INPUT -p UDP -i $INET_IFACE -j udp_packets
$IPTABLES -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets
$IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "IPT INPUT packet died: "
$IPTABLES -A FORWARD -p tcp -j bad_tcp_packets
$IPTABLES -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "IPT FORWARD packet died: "
$IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets
$IPTABLES -A OUTPUT -p ALL -s $LO_IP_RANGE -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $LAN_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $INET_IP -j ACCEPT
$IPTABLES -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "IPT OUTPUT packet died: "
$IPTABLES -t nat -A POSTROUTING -s $LAN_IP_RANGE -o $INET_IFACE -j SNAT --to-source $INET_IP
Подскажите, где я допустил ошибку?