Есть сетка на 30 машин, всем надо открыть доступ на внутренний вэб сайт независимо от наличия денег на счету и определенному количеству народа выход в инет при наличии денег. Решил осуществить это следующим способом:
для безденежного народа доступ через 80 порт, а для выхода в инет использовать прозрачний прокси на порт 3128. Только вот доступа через прксю добиться немогу.
В файрволе установил следующее правила:
iptables -t filter -F
iptables -t filter -X
iptables -t nat -F
iptables -t nat -X
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP
# DNS
iptables -t filter -A INPUT -p tcp --sport 53 -j ACCEPT
iptables -t filter -A FORWARD -p tcp --sport 53 -j ACCEPT
iptables -t filter -A FORWARD -p tcp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p udp --sport 53 -j ACCEPT
iptables -t filter -A FORWARD -p udp --sport 53 -j ACCEPT
iptables -t filter -A FORWARD -p udp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT
# WWW на локалку
#iptables -t filter -A INPUT -d $server -s $local/24 -p tcp --dport 80 -j ACCEPT
#iptables -t filter -A OUTPUT -s $server -d $local/24 -p tcp --sport 80 -j ACCEPT
# SSH
iptables -t filter -A INPUT -p tcp -s $admin -d $server --dport 22 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -d $admin -s $server --sport 22 -j ACCEPT
iptables -t filter -A INPUT -p udp -s $admin -d $server --dport 22 -j ACCEPT
iptables -t filter -A OUTPUT -p udp -d $admin -s $server --sport 22 -j ACCEPT
# Stargazer configurator
iptables -t filter -A INPUT -p tcp -s 192.168.0.0/24 -d $server --dport 5555 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -d 192.168.0.0/24 -s $server --sport 5555 -j ACCEPT
# Stargazer InetAccess
iptables -t filter -A INPUT -p udp -s 192.168.0.0/24 --sport 5555 -d $server --dport 5555 -j ACCEPT
iptables -t filter -A OUTPUT -p udp -d 192.168.0.0/24 --dport 5555 -s $server -j ACCEPT
# Маскарадинг
iptables -t nat -A POSTROUTING -d 0.0.0.0/0 -j MASQUERADE
# Разрешаем все на локальном интерфейсе
iptables -t filter -A INPUT -d 127.0.0.1 -j ACCEPT
iptables -t filter -A OUTPUT -s 127.0.0.1 -j ACCEPT
# samba на локалку
iptables -A INPUT -i eth1 -p tcp -m multiport --port 137,138,139 -j ACCEPT
iptables -A INPUT -i eth1 -p udp -m multiport --port 137,138,139 -j ACCEPT
iptables -A OUTPUT -o eth1 -p tcp -m multiport --port 137,138,139 -j ACCEPT
iptables -A OUTPUT -o eth1 -p udp -m multiport --port 137,138,139 -j ACCEPT
-----------------------------------------
Скрипты Stargazera:
<OnConnect>
#!/bin/bash
# Login
LOGIN=$1
#user IP
IP=$2
#cash
CASH=$3
#user ID
ID=$4
iptables -t nat -A PREROUTING -s $IP -p tcp -m multiport --dport 80 -j REDIRECT --to-port 3128
iptables -t filter -A INPUT -s $IP -j ACCEPT
iptables -t filter -A FORWARD -s $IP -j ACCEPT
iptables -t filter -A FORWARD -d $IP -j ACCEPT
iptables -t filter -A OUTPUT -d $IP -j ACCEPT
echo "C `date +%Y.%m.%d-%H.%M.%S` $IP $CASH" >> /var/stargazer/users/$LOGIN/connect.log
---------------------------------------
<OnDisconnect>
#!/bin/bash
# Login
LOGIN=$1
#user IP
IP=$2
#cash
CASH=$3
#user ID
ID=$4
iptables -t nat -D PREROUTING -s $IP -p tcp -m multiport --dport 80 -j REDIRECT --to-port 3128
iptables -t filter -D INPUT -s $IP -j ACCEPT
iptables -t filter -D FORWARD -s $IP -j ACCEPT
iptables -t filter -D FORWARD -d $IP -j ACCEPT
iptables -t filter -D OUTPUT -d $IP -j ACCEPT
echo "D `date +%Y.%m.%d-%H.%M.%S` $IP $CASH" >> /var/stargazer/users/$LOGIN/connect.log
-----------------------------------
При этих настройках не могу ходить по WEB, при этом доступ в инет открыт. Squid в логах фиксирует запросы к страницам, но не качает их.
Если убрать iptables -t nat..., то все работает нормально, но соответственно без прокси.
Калупаюсь уже неделю и все безтолку. Может кто подскажет в чем грабли.