Андрей Сеник wrote:
Тогда расскажите подробней, каким образом организована “раздача инета”?
используется ли iptables? если да, то приведите его
[…]
так же желателен конфиг сквида на пасту.
курили ли вы логи dmesg, messages на предмет ошибок? (быть может ядерный модуль сетевухи сбоит?)
Шлюз Debian squeeze с тремя сетевыми картами, в него воткнуты две линии от провайдера и локальная сеть.
Первая сеть серый ip интернет
Вторая сеть белый ip с MX записью для почты
Чтобы все ходили в инет через первую линию я настроил iproute скрипт такой:
#!/bin/sh
## Переменные:
#
## IP адреса:
IP1="192.168.48.97" # серый IP
IP2="xxx.xxx.xxx.xxx" # белый IP
## Интерфейсы:
IF0="eth1" # локальная сеть
IF1="eth0" # линия 1 серый IP
IF2="eth2" # линия 2 белый IP
## шлюзы:
P1="192.168.48.98" # шлюз линия 1
P2="xxx.xxx.xxx.xxx" # шлюз линия 2
## сети:
P0_NET="192.168.222.0/24" # локальная сеть
P1_NET="192.168.48.96/30" # сеть линия 1
P2_NET="xxx.xxx.xxx.xxx/30" # сеть линия 2
# Создаём две дополнительные таблици маршрутизации:
echo 1000 LINE1 >> /etc/iproute2/rt_tables
echo 1001 LINE2 >> /etc/iproute2/rt_tables
# Обнуляем таблицы маршрутов:
ip route flush cache
ip route flush table LINE1
ip route flush table LINE2
# Теперь можно настраиваем таблицы маршрутизации:
ip route add $P1_NET dev $IF1 src $IP1 table LINE1
ip route add default via $P1 table LINE1
ip route add $P2_NET dev $IF2 src $IP2 table LINE2
ip route add default via $P2 table LINE2
# Теперь нужно настроить главную таблицу маршрутизации:
ip route add $P1_NET dev $IF1 src $IP1
ip route add $P2_NET dev $IF2 src $IP2
# Теперь задаем маршрут по умолчанию:
ip route add default via $P1
# Зададим правила маршрутизации.
ip rule add from $IP1 table LINE1
ip rule add from $IP2 table LINE2
# для локалки
ip route add $P0_NET dev $IF0 table LINE1
ip route add $P2_NET dev $IF2 table LINE1
ip route add 127.0.0.0/8 dev lo table LINE1
ip route add $P0_NET dev $IF0 table LINE2
ip route add $P1_NET dev $IF1 table LINE2
ip route add 127.0.0.0/8 dev lo table LINE2
ip route flush cache
## END
И ещё в /etc/network/interfaces строчка удаяющая второй ненужный маршрут:
up route del -net 0.0.0.0 dev eth2
Далее iptables…
Со второй линии пробрасывается 443 порт (веб морда почтовика) на почтовый сервак внутри локалки, Открыт 25 порт для MTA Postfix, 21 порт FTP, 2002 ssh, 2022 OpenVPN
вот iptables-save:
# Generated by iptables-save v1.4.8 on Wed Sep 19 11:11:02 2012
*mangle
:PREROUTING ACCEPT [5031729:2985782557]
:INPUT ACCEPT [3989865:2419248974]
:FORWARD ACCEPT [1038184:566201005]
:OUTPUT ACCEPT [4435265:2666903571]
:POSTROUTING ACCEPT [5463653:3232543188]
-A PREROUTING -i eth0 -j TTL --ttl-set 128
-A PREROUTING -i eth2 -j TTL --ttl-set 128
COMMIT
# Completed on Wed Sep 19 11:11:02 2012
# Generated by iptables-save v1.4.8 on Wed Sep 19 11:11:02 2012
*filter
:INPUT DROP [5806:1341829]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
:bad_packets - [0:0]
:bad_tcp_packets - [0:0]
:icmp_packets - [0:0]
:tcp_inbound - [0:0]
:tcp_outbound - [0:0]
:udp_inbound - [0:0]
:udp_outbound - [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -j bad_packets
-A INPUT -d 224.0.0.1/32 -j DROP
-A INPUT -s 192.168.222.0/24 -i eth1 -j ACCEPT
-A INPUT -d 192.168.222.255/32 -i eth1 -j ACCEPT
-A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth2 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp -j tcp_inbound
-A INPUT -i eth0 -p udp -j udp_inbound
-A INPUT -i eth0 -p icmp -j icmp_packets
-A INPUT -i eth2 -p tcp -j tcp_inbound
-A INPUT -i eth2 -p udp -j udp_inbound
-A INPUT -i eth2 -p icmp -j icmp_packets
-A INPUT -m pkttype --pkt-type broadcast -j DROP
-A INPUT -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "INPUT packet died: "
-A INPUT -p udp -m udp --dport 2022 -j ACCEPT
-A INPUT -i tun0 -j ACCEPT
-A FORWARD -j bad_packets
-A FORWARD -i eth1 -p tcp -j tcp_outbound
-A FORWARD -i eth1 -p udp -j udp_outbound
-A FORWARD -i eth1 -j ACCEPT
-A FORWARD -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i eth2 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -d 192.168.222.5/32 -i eth2 -p tcp -m tcp --dport 443 -j ACCEPT
-A FORWARD -i tun0 -o eth1 -j ACCEPT
-A FORWARD -i eth1 -o tun0 -j ACCEPT
-A FORWARD -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "FORWARD packet died: "
-A OUTPUT -p icmp -m state --state INVALID -j DROP
-A OUTPUT -s 127.0.0.1/32 -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -s 192.168.222.7/32 -j ACCEPT
-A OUTPUT -o eth1 -j ACCEPT
-A OUTPUT -o eth0 -j ACCEPT
-A OUTPUT -o eth2 -j ACCEPT
-A OUTPUT -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "OUTPUT packet died: "
-A bad_packets -s 192.168.222.0/24 -i eth0 -j LOG --log-prefix "Illegal source: "
-A bad_packets -s 192.168.222.0/24 -i eth0 -j DROP
-A bad_packets -s 192.168.222.0/24 -i eth2 -j LOG --log-prefix "Illegal source: "
-A bad_packets -s 192.168.222.0/24 -i eth2 -j DROP
-A bad_packets -m state --state INVALID -j LOG --log-prefix "Invalid packet: "
-A bad_packets -m state --state INVALID -j DROP
-A bad_packets -p tcp -j bad_tcp_packets
-A bad_packets -j RETURN
-A bad_tcp_packets -i eth1 -p tcp -j RETURN
-A bad_tcp_packets -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j LOG --log-prefix "New not syn: "
-A bad_tcp_packets -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A bad_tcp_packets -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j LOG --log-prefix "Stealth scan: "
-A bad_tcp_packets -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
-A bad_tcp_packets -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j LOG --log-prefix "Stealth scan: "
-A bad_tcp_packets -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
-A bad_tcp_packets -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j LOG --log-prefix "Stealth scan: "
-A bad_tcp_packets -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j DROP
-A bad_tcp_packets -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK,URG -j LOG --log-prefix "Stealth scan: "
-A bad_tcp_packets -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,ACK,URG -j DROP
-A bad_tcp_packets -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j LOG --log-prefix "Stealth scan: "
-A bad_tcp_packets -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP
-A bad_tcp_packets -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j LOG --log-prefix "Stealth scan: "
-A bad_tcp_packets -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
-A bad_tcp_packets -p tcp -j RETURN
-A icmp_packets -p icmp -f -j LOG --log-prefix "ICMP Fragment: "
-A icmp_packets -p icmp -f -j DROP
-A icmp_packets -p icmp -m icmp --icmp-type 8 -j LOG --log-prefix "Ping detected: "
-A icmp_packets -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A icmp_packets -p icmp -m icmp --icmp-type 8 -j DROP
-A icmp_packets -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A icmp_packets -p icmp -j RETURN
-A tcp_inbound -p tcp -m tcp --dport 25 -j ACCEPT
-A tcp_inbound -p tcp -m tcp --dport 2002 -j ACCEPT
-A tcp_inbound -p tcp -m tcp --dport 21 -j ACCEPT
-A tcp_inbound -p tcp -j RETURN
-A tcp_outbound -p tcp -j ACCEPT
-A udp_inbound -p udp -m udp --dport 137 -j DROP
-A udp_inbound -p udp -m udp --dport 138 -j DROP
-A udp_inbound -p udp -m udp --dport 53 -j ACCEPT
-A udp_inbound -p udp -m udp --sport 67 --dport 68 -j ACCEPT
-A udp_inbound -p udp -m udp --dport 2022 -j ACCEPT
-A udp_inbound -p udp -j RETURN
-A udp_outbound -p udp -j ACCEPT
COMMIT
# Completed on Wed Sep 19 11:11:02 2012
# Generated by iptables-save v1.4.8 on Wed Sep 19 11:11:02 2012
*nat
:PREROUTING ACCEPT [113231:9533849]
:POSTROUTING ACCEPT [76:7182]
:OUTPUT ACCEPT [56880:3491897]
-A PREROUTING -i eth2 -p tcp -m tcp --dport 443 -j DNAT --to-destination 192.168.222.5:443
-A PREROUTING -d xxx.xxx.xxx.xxx/32 -i eth1 -p tcp -m tcp --dport 443 -j DNAT --to-destination 192.168.222.5:443
-A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
-A POSTROUTING -o eth0 -j SNAT --to-source 192.168.48.97
-A POSTROUTING -o eth1 -j SNAT --to-source 192.168.48.97
-A POSTROUTING -o eth2 -j SNAT --to-source xxx.xxx.xxx.xxx
-A POSTROUTING -o eth1 -j SNAT --to-source xxx.xxx.xxx.xxx
COMMIT
# Completed on Wed Sep 19 11:11:02 2012
У squid всё стандартно кроме этих строчек:
acl localnet src 192.168.222.0/24 # RFC1918 possible internal network
cache_dir ufs /var/spool/squid 1024 16 256
http_port 192.168.222.7:3128 transparent
acl apache rep_header Server ^Apache
acl vip src 192.168.222.1-192.168.222.50/32
acl less src 192.168.222.51-192.168.222.99/32
acl socnet url_regex http://vk.com/ http://vkontakte.ru/ http://www.odnoklassniki.ru/ porn sex xxx
acl lamers src 192.168.222.100-192.168.222.200/32
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny lamers
http_access deny less socnet
http_access allow vip
http_access allow localnet
http_access deny all
dns_nameservers xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx
broken_vary_encoding allow apache
header_access X-Forwarded-For deny all
header_access Via deny all
header_access Cache-Control deny all
dmesg пака не смотрел… помотрю, но может ктото заметить косяк в чём то что описано выше…