Поставил роутер на Линксе 7.2
Как сконфигурировать iptables, чтобы работал и squid
#!/bin/sh
INET_IP="192.168.0.27"
INET_IFACE="eth1"
INET_BROADCAST="192.168.0.255"LAN_IP="10.0.0.1"
LAN_IP_RANGE="10.0.0.0/12"
LAN_IFACE="eth0"LO_IFACE="lo"
LO_IP="127.0.0.1"IPTABLES="/sbin/iptables"
/sbin/depmod -a
/sbin/modprobe ip_tables
/sbin/modprobe ip_conntrack
/sbin/modprobe iptable_filter
/sbin/modprobe iptable_mangle
/sbin/modprobe iptable_nat
/sbin/modprobe ipt_LOG
/sbin/modprobe ipt_limit
/sbin/modprobe ipt_stateecho "1" > /proc/sys/net/ipv4/ip_forward
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP$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 -s 0/0 --dport 21 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 22 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 80 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 113 -j allowed#$IPTABLES -A udp_packets -p UDP -s 0/0 --destination-port 53 -j ACCEPT
#$IPTABLES -A udp_packets -p UDP -s 0/0 --destination-port 123 -j ACCEPT
$IPTABLES -A udp_packets -p UDP -s 0/0 --destination-port 2074 -j ACCEPT
$IPTABLES -A udp_packets -p UDP -s 0/0 --destination-port 4000 -j ACCEPT
$IPTABLES -A udp_packets -p UDP -i $INET_IFACE -d $INET_BROADCAST \
--destination-port 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 icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT$IPTABLES -A INPUT -p tcp -j bad_tcp_packets
$IPTABLES -A INPUT -p ALL -i $LAN_IFACE -s $LAN_IP_RANGE -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LO_IP -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 UDP -i $LAN_IFACE --dport 67 --sport 68 -j ACCEPT
$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 -i $INET_IFACE -d 224.0.0.0/8 -j DROP
$IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \
--log-level 7 --log-prefix "IPT INPUT packet died: "$IPTABLES -A FORWARD -p tcp -j bad_tcp_packets
$IPTABLES -A FORWARD -i $LAN_IFACE -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT$IPTABLES -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG \
--log-level 7 --log-prefix "IPT FORWARD packet died: "$IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets
$IPTABLES -A OUTPUT -p ALL -s $LO_IP -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 7 --log-prefix "IPT OUTPUT packet died: "iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3128
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-ports 3128
iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 3128
>Поставил роутер на Линксе 7.2
>Как сконфигурировать iptables, чтобы работал и squid
А нафига полный листинг приводить? Все верят, что ты умеешь copy-paste пользоваться
У меня в конфиге за http отвечают несколько строк:
ловим хттп трафик и направляем в сквид
iptables -A FORWARD -p tcp -s $LAN_NET -d $ANY --dport 80 -j REDIRECT --to-ports 3128
если кто-то указал ручками проксю, то тоже пускать
iptables -A INPUT -p tcp -s $LAN_NET --dport 3128 -j ACCEPT
разрешать сквиду отвечать на запросы в локалку
iptables -A OUTPUT -p tcp -d $LAN_NET --sport 3128 -j ACCEPT
разрешать сквиду лазить в инет
iptables -A OUTPUT -o $ext_if -p tcp -d $ANY --dport 80 -j ACCEPT
разрешать из инета только ответы на запросы сквида
iptables -A INPUT -i $ext_if -p tcp -s $ANY --sport 80 -m state --state ESTABLISHED -j ACCEPTвроде все.
работающего конфига под рукой нет, пишу по памяти, так что если будут огрехи, то ногами не пинать ;)
>А нафига полный листинг приводить? Все верят, что ты умеешь copy-paste пользоватьсяУмею,
спасибоа вот такая запись, что говорит?
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3128
>>А нафига полный листинг приводить? Все верят, что ты умеешь copy-paste пользоваться
>
>Умею,
>спасибо
>
>а вот такая запись, что говорит?
>iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports
>3128это строчка заворачивает все запросы посылаемые 80 порт на порт прокси,
типа "Transparent proxy settings"
с указанием интерфейсов, строчка эта выглядит так
iptables -t nat -A PREROUTING -i $LANINT -s $LANNET -p tcp --dport 80 -j REDIRECT --to-port $PROXYPORTгде,
LANINT локальный интерфейс
LANNET локальная сеть, например 192.168.1.0/24
PROXYPORT порт, который слушаеть squid