Эта заметка является второй частью из цикла настройки полнофункционального сервера на базе FreeBSD 9. Первая часть тут.
В этой же заметке будет рассказано о базовой настройке кэширующего DNS и прозрачного шлюза natd, а основное внимание будет уделено настройке кэширующего прокси-сервера squid.
Первым делом нужно настроить DNS для преобразования имен в ip-адреса и наоборот.
Отредактируем файл демона named:
# ee /etc/namedb/named.conf
acl ACCESS { 127.0.0.1; 10.0.2.0/24; };
options {
listen-on { 127.0.0.1; 10.0.2.15; }
allow-recursion { ACCESS; };
forwarders {
10.0.2.3;
192.168.0.1;
};
};
Добавим в автозагрузку и запустим демон:
# ee /etc/rc.conf
named_enable="YES"
# /etc/rc.d/named start
Проверка:
# ps -ax | grep named
# dig @127.0.0.1 freebsd.org A
Далее настроим прозрачный шлюз natd и файерволл ipfw для обеспечения доступа к интернету из локальной сети.
Добавим в автозагрузку:
# ee /etc/rc.conf
gateway_enable="YES"
natd_enable="YES"
natd_interface="em0"
firewall_type="/etc/firewall.conf"
Настройка файерволла:
# ee /etc/firewall.conf
add 4000 divert natd ip from any to any via em0
add 65500 allow ip from any to any
# natd -n em0
# /etc/rc.d/ipfw restart
В итоге получился прозрачный шлюз.
Для подключения пользователей windows в сети, необходимо указать ip-адрес сервера 10.0.0.1, как шлюз по умолчанию и DNS сервер.
Так как доступ в интернет у нас настроен, и, по сути, имеется неконтролируемый доступ пользователей сети к интернету, то нужно их определенным способом ограничить. Для это стоит настроить кэширующий прокси-сервер squid.
Установка:
# cd /usr/ports/www/squid
# make install clean
Базовая настройка:
# ee /usr/local/etc/squid/squid.conf
acl localnet src 192.168.0.0/24
# squid -z
# ee /etc/rc.conf
squid_enable="YES"
# /usr/local/etc/rc.d/squid start
Таким образом, для пользования прокси-сервером, нужно записать настройки прокси в браузере (пример Firefox):
На скрине видно, что адрес прокси: 192.168.0.10 (ip-адрес машины, на котором установлен прокси-сервер) и порт 3128 (squid).
Теперь разрешим доступ к интернету только определенному пользователю, например с ip-адресом 192.168.0.90:
# ee /usr/local/etc/squid/users.txt
192.168.0.90
# ee /usr/local/etc/squid/squid.conf
acl localnet src 192.168.0.0/24
acl users src "/usr/local/etc/squid/users.txt"
...
http_access allow users
http_access deny all
# squid -k reconfigure
Теперь можно проверить, для пользователя с ip-адресом 192.168.0.90 доступ в интернет есть, остальным - нет.
Теперь сделаем наоборот, всем разрешим, а нашего предыдущего юзера не пустим в интернет:
# ee /usr/local/etc/squid/squid.conf
...
http_access allow localnet !users
http_access deny all
# squid -k reconfigure
Проверка:
Юзер не может воспользоватсья интернетом.
Сделаем запрет доступа к определенным сайтам, например vk.com youtube.com, сайтам и поисковым запросам, соответствующих регулярному выражению audio, video, fun:
# ee /usr/local/etc/squid/squid.conf
acl localnet src 192.168.0.0/24
acl dom_deny dstdomain vk.com youtube.com
acl url_deny url_regex "/usr/local/etc/squid/url.txt"
...
http_access allow localnet !dom_deny !url_deny
# ee /usr/local/etc/squid/url.txt
audio
video
fun
Проверка:
Доступ к google.ru у нас разрешен, поэтому проблем нет.
А вот при подключении к vk.com, youtube.com, fun.ru выдается ошибка пользователя прокси.
Защита про регулярке также работает, скриншот, после попытки погуглить на тему "audio":
Сделаем так, чтобы сообщение об ошибке выводилось на русском языке:
# ee /usr/local/etc/squid/squid.conf
error_directory /usr/local/etc/squid/errors/Russian-1251
В squid доступна аутентификация пользователей. То есть, для того, чтобы получить доступ в интернет, нужно ввести логин и пароль пользователя.
# ee /usr/local/etc/squid/squid.conf
auth_param basic program /usr/local/libexec/squid/ncsa_auth /usr/local/etc/squid/squid.passwd
auth_param basic children 4
...
acl localnet src 192.168.0.0/24
acl auth_users proxy_auth REQUIRED
...
http_access allow localnet auth_users
http_access deny all
# grep amet13 /etc/master.passwd >> /usr/local/etc/squid/squid.passwd
# squid -k reconfigure
Прозрачный прокси, это когда весь трафик пользователя принудительно идет через прокси, то есть не надо указывать настройки прокси в браузере. Все что войдет в 80-й порт, перенаправится на порт 3128 squid'а.
Делается это так:
# ee /usr/local/etc/squid/squid.conf
http_port 3128 transparent
# squid -k reconfigure
# ee /etc/firewall.conf
add 4000 divert natd ip from any to any via em0
add fwd 127.0.0.1, 3128 tcp from any to any 80 via em1
add 65500 allow ip from any to any
# /etc/rc.d/ipfw restart
UPD: 28.07.2013
В этой же заметке будет рассказано о базовой настройке кэширующего DNS и прозрачного шлюза natd, а основное внимание будет уделено настройке кэширующего прокси-сервера squid.
Первым делом нужно настроить DNS для преобразования имен в ip-адреса и наоборот.
Отредактируем файл демона named:
# ee /etc/namedb/named.conf
acl ACCESS { 127.0.0.1; 10.0.2.0/24; };
options {
listen-on { 127.0.0.1; 10.0.2.15; }
allow-recursion { ACCESS; };
forwarders {
10.0.2.3;
192.168.0.1;
};
};
Добавим в автозагрузку и запустим демон:
# ee /etc/rc.conf
named_enable="YES"
# /etc/rc.d/named start
Проверка:
# ps -ax | grep named
# dig @127.0.0.1 freebsd.org A
Далее настроим прозрачный шлюз natd и файерволл ipfw для обеспечения доступа к интернету из локальной сети.
Добавим в автозагрузку:
# ee /etc/rc.conf
gateway_enable="YES"
natd_enable="YES"
natd_interface="em0"
firewall_type="/etc/firewall.conf"
Настройка файерволла:
# ee /etc/firewall.conf
add 4000 divert natd ip from any to any via em0
add 65500 allow ip from any to any
# natd -n em0
# /etc/rc.d/ipfw restart
В итоге получился прозрачный шлюз.
Для подключения пользователей windows в сети, необходимо указать ip-адрес сервера 10.0.0.1, как шлюз по умолчанию и DNS сервер.
Так как доступ в интернет у нас настроен, и, по сути, имеется неконтролируемый доступ пользователей сети к интернету, то нужно их определенным способом ограничить. Для это стоит настроить кэширующий прокси-сервер squid.
Установка:
# cd /usr/ports/www/squid
# make install clean
Базовая настройка:
# ee /usr/local/etc/squid/squid.conf
acl localnet src 192.168.0.0/24
# squid -z
# ee /etc/rc.conf
squid_enable="YES"
# /usr/local/etc/rc.d/squid start
Таким образом, для пользования прокси-сервером, нужно записать настройки прокси в браузере (пример Firefox):
Теперь разрешим доступ к интернету только определенному пользователю, например с ip-адресом 192.168.0.90:
# ee /usr/local/etc/squid/users.txt
192.168.0.90
# ee /usr/local/etc/squid/squid.conf
acl localnet src 192.168.0.0/24
acl users src "/usr/local/etc/squid/users.txt"
...
http_access allow users
http_access deny all
# squid -k reconfigure
Теперь можно проверить, для пользователя с ip-адресом 192.168.0.90 доступ в интернет есть, остальным - нет.
Теперь сделаем наоборот, всем разрешим, а нашего предыдущего юзера не пустим в интернет:
# ee /usr/local/etc/squid/squid.conf
...
http_access allow localnet !users
http_access deny all
# squid -k reconfigure
Проверка:
Сделаем запрет доступа к определенным сайтам, например vk.com youtube.com, сайтам и поисковым запросам, соответствующих регулярному выражению audio, video, fun:
# ee /usr/local/etc/squid/squid.conf
acl localnet src 192.168.0.0/24
acl dom_deny dstdomain vk.com youtube.com
acl url_deny url_regex "/usr/local/etc/squid/url.txt"
...
http_access allow localnet !dom_deny !url_deny
# ee /usr/local/etc/squid/url.txt
audio
video
fun
Проверка:
Доступ к google.ru у нас разрешен, поэтому проблем нет.
А вот при подключении к vk.com, youtube.com, fun.ru выдается ошибка пользователя прокси.
# ee /usr/local/etc/squid/squid.conf
error_directory /usr/local/etc/squid/errors/Russian-1251
# ee /usr/local/etc/squid/squid.conf
auth_param basic program /usr/local/libexec/squid/ncsa_auth /usr/local/etc/squid/squid.passwd
auth_param basic children 4
...
acl localnet src 192.168.0.0/24
acl auth_users proxy_auth REQUIRED
...
http_access allow localnet auth_users
http_access deny all
# grep amet13 /etc/master.passwd >> /usr/local/etc/squid/squid.passwd
# squid -k reconfigure
Делается это так:
# ee /usr/local/etc/squid/squid.conf
http_port 3128 transparent
# squid -k reconfigure
# ee /etc/firewall.conf
add 4000 divert natd ip from any to any via em0
add fwd 127.0.0.1, 3128 tcp from any to any 80 via em1
add 65500 allow ip from any to any
# /etc/rc.d/ipfw restart
UPD: 28.07.2013
Третья часть тут.
Комментариев нет:
Отправить комментарий