Всем привет, столкнулся с задачей организации публичного Wi-Fi доступа в торговом центре. Серьезного опыта в администрировании нет, боюсь где-нибудь напортачить.
Сейчас организовал подобие на основе своих мыслей, кто разбирается в этом, посмотрите, пожалуйста. Прислушаюсь к любым советам!
ps. очень волнует вопрос, есть ли возможность получить доступ к локалке предприятия клиентом (вдруг кулхацкер какой-нибудь появится)…
Топология сети:
Сеть типа «звезда», серверы и рабочие станции находятся в одной подсети (192.168.0.0/16), доступ в интернет через шлюз (192.168.0.3, Ubuntu Server, iptables NAT)
Предварительно настроил так (просьба сильно не пинать):
Отдельный шлюз с 2 сетевыми картами, одна (192.168.0.149, gateway=192.168.0.3, dns=8.8.8.8) смотрит в общую сеть, ко второй (10.0.0.1) подключена Wi-Fi точка (10.0.0.2). На шлюзе включен DHCP, при подключении к точке выдает адреса 10.0.0.0/24. Так же работает BIND9, для «проброса» DNS и SQUID для кэширования и навешивания ограничений. NGINX чтобы был.
Поставил целых 4!!! правила в IPTABLES (делал по man'ам, может что и не правильно или не логично):
# все http запросы перенаправляем через proxy
iptables -t nat -A PREROUTING -s 10.0.0.0/24 -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.0.0.1:3128
# натим все, что можно
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# разрешаем доступ к интернет шлюзу
iptables -t filter -A FORWARD -s 10.0.0.0/24 -d 192.168.0.3 -j ACCEPT
# запрещаем доступ к внутренней локалке
iptables -t filter -A FORWARD -s 10.0.0.0/24 -d 192.168.0.0/16 -j DROP
Содержание squid.conf:
# включаем "прозрачность"
http_port 10.0.0.1:3128 transparent
# указываем подсети (локальная сеть и сеть для клиентов)
acl clientNet src 10.0.0.0/24
acl localNet src 192.168.0.0/16
acl all src 0.0.0.0/0.0.0.0
# файлы (будем резать)
acl filesVideo url_regex -i \.avi$ \.wmv$ \.mkv$ \.flv$ \.swf$
acl filesAudio url_regex -i \.mp3$ \.wma$ \.mp4$ \.ogg$
acl filesOther url_regex -i \.torrent$
# зачатки "порно-фильтра"
acl urlPorno dstdom_regex sex porno
#скоростные ограничения
delay_pools 1
delay_class 1 2
delay_parameters 1 524288/524288 32768/32768
delay_access 1 allow clientNet
delay_access 1 deny all
# страница ошибки "порно-фильтра"
deny_info http://10.0.0.1/porno.html urlPorno
# вешаем запреты
http_access deny all filesAudio
http_access deny all filesVideo
http_access deny all filesOther
http_access deny all urlPorno
http_access allow clientNet
http_access deny all
В общем виде работает так: клиент подключается к Wi-Fi точке, получает адрес, все запросы веб страниц идут через squid, все остальное прямиком через NAT.
В дальнейшем (когда смогу целиком iptables (и если не свихнусь при этом)) хочу добавить:
1. ограничение скорости в iptables
2. запрет обращения к некоторым портам
3. ограничение на максимальный размер закачиваемого файла (пока не знаю, как организовать)
4. страницы ошибок с логотипом компании
5. ограничение на время сессии
6. снифер для воровства паролей (шучу)...