Открылся новый офис, в нём необходимо обеспечить подключение к Интернет
и связь с центральным офисом. Без лишних предисловий поделюсь
своим опытом по установке такого функционала.
Дано:
— Интернет шлюз на UbuntuServer в центральном офисе (server на схеме).
— Новый шлюз Интернета в филиале (client). Для сервера я использовал
обычный ПК 2ГГц, 1Гб ОЗУ, 160Гб ЖД и свеженький Ubuntu server 9.10.
— Интенрент соединение между ними.
Необходимо:
— Сотрудникам филиала иметь доступ в Интернет.
— Сотрудникам филиала иметь возможность работать с Сервером 1С
в центральном офисе(1C_serv)
— Сотрудникам филиала иметь возможность работать с Файлсервером
в центральном офисе (Fileserv)
Приступим.
Для начала установим на наш новый компьютер в филиале операционную
систему Ubuntu Server 9.10 и затем превратим его в шлюз. Процедура
установки стандартная - никаких дополнительных пакетов сразу ставить
не надо. Всё доустановим потом.
По окончании установки, перезагружаемся и начинаем поднимать
прозрачный прокси сервер на Squid3. Почему прозрачный? Потому что
легче будет проводить настройку на пользовательских компьютерах, а
точнее вообще не понадобится никаких настроек, кроме прописывания шлюза.
Проверяем интерфейсы:
Код:
/etc/network/interfaces
auto lo
iface lo inet loopback
auto eth1
iface eth1 inet
staticaddress 77.247.220.1
netmask 255.255.255.0
gateway 77.247.220.1
dns-nameservers 77.247.220.2 77.247.220.3
auto eth0
iface eth0 inet
static address 169.254.1.1
netmask 255.255.255.0
Приступаем к установке Squid3, вводим команду:
Код:
sudo apt-get install squid3
По окончании установки, лезем в конфиг и прописываем наши настройки в соответствующих секциях конфига(для поиска в nano используйте ctrl+w):
Код:
sudo nano /etc/squid3/squid.conf
http_port 3128 transparent
acl our_networks src 169.254.0.21/24 #подставить вашу подсеть,
# например 192.168.0.1/24
acl localnet src 127.0.0.1/255.255.255.255
http_access allow our_networks #вместо our_netrorks здесь
# и выше можно написать любое имя
http_access allow localnet
Таким образом, мы получили прозрачный прокси сервер
на порту 3128, с разрешённым доступом из сети
169.254.0.0/24. Сохраняем. Перезагружаем демон:
Код:
sudo /etc/init.d/squid3 restart
И последняя, но очень важная настройка сквида — это редикрет запросов
из вашей локальной сети на порт прокси. Для этого потребуется внести
новые правила в штатный файрвол iptables. Это делается следующими
командами:
(пишется все в две строчки начиная с sudo)
Код:
sudo iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT
--to-destination 192.168.0.1:3128
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j
REDIRECT --to-ports 3128
В первом правиле мы говорим файрволу занести в таблицу с именем nat,
цепочку с именем PREROUTING, в которой прописано, что слушающий
интернет интерфейс eth1 должен принимать входящий трафик по
протоколу tcp на порт 80 и изменять путь назначения на адрес
192.168.0.1:3128
Во втором правиле мы говорим файрволу занести в таблицу с именем
nat, цепочку с именем PREROUTING, в которой прописано, что
локальный интерфейс eth0 должен принимать входящий трафик по
протоколу tcp на порту 80 и перенаправлять его на эту же машину,
но изменив порт на 3128, на котором висит squid.
Завершили настройку шлюза. Перезагружаться не надо. Можно
проверить пропинговать какой-нибудь сайт с пользовательских машин,
например 4.2.2.2 И чтобы до конца не зависеть от настроек провайдера,
можно поставить собственный ДНС сервер, который будет
переводить непонятные компьютеру адреса вроде ubuntu.ru или
gmail.com на понятные 213.95.41.13 и 209.85.225.83
Теперь приступим к настройке openVPN сервера и клиента. Это
позволит нам соединить центральный офис и удалённый офис компании
как бы в единую локальную сеть. Т.е. компьютеры в удалённом
офисе смогут запросто обращаться к компьютерам центрального
офиса так, как будто бы они стояли в соседнем кабинете. Но для
этого, естественно, необходим стабильный и качественный канал
интернета с наименьшим откликом. Поэтому использование
модемного, мобильного или спутникового соединения здесь недопустимо.
Установка VPN происходит в два этапа: Установка сервера openVPN
в центральном офисе и установка клиента openVPN в удалённом
офисе. В дальнейшем, вы сможете установить ещё openVPN клиентов,
если в вашей компании откроются дополнительные офисы и
потребуется их соединить.
Установка openVPN сервера.
В моём случае, уже имеется настроенный шлюз интернета под
Ubuntu в центральном офисе (на картинке server) и поэтому мне
лишь необходимо доустановить пакет openVPN сервера.
Код:
sudo apt-get install openvpn
Для начала нам необходимо создать сертификаты безопасности и
ключи для клиента. Это просто необходимо, чтобы никто посторонний
не смог подключиться к нашему VPN каналу. Скрипты генерации
ключей находятся в директории
/usr/share/doc/openvpn/examples/easy-rsa/2.0. Переходим в неё:
Код:
cd /usr/share/doc/openvpn/examples/easy-rsa/2.0
Генерируем сертификаты попутно заполняя понятной информацией
о фирме, электронном адресе и т.д.
Код:
./build-dh
./pkitool --initca
./pkitool --server server
./pkitool client
Созданные сертификаты и ключи должны появиться в той же папке.
Перейдём к настройке openVPN сервера. Для этого создадим
пустой файл настроек и начнём вносить в него необходимые записи:
Код:
sudo touch /etc/openvpn/server.conf
sudo nano /etc/openvpn/server.conf
dev tun
tls-server
proto udp
port 3334
comp-lzo
persist-tun
persist-key
# наши шлюзы будут общаться через виртуальные интерфейсы
# (на картинке между ними труба нарисована :) Здесь мы задаём их адреса
ifconfig 192.168.254.1 192.168.254.2
# маршрут к локальной сети удалённого офиса
route 169.254.1.0 255.255.255.0
dh /etc/openvpn/keys/dh1024.pem #Ключи безопасности.
# Переместите их из папки в которой создали в папку которую здесь укажете.
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
log /var/log/openvpn.log #ведём логи 3 уровня
verb 3
Вроде всё, сохраняем, выходим. А нет! Не всё. Здесь нам снова
потребуется добавить правила в штатный файрвол, чтобы он
правильно перенаправлял запросы из одной сети в другую:
Код:
sudo iptables -A INPUT -p udp -dport 3334 -j ACCEPT
sudo iptables -A INPUT -i tun0 -j ACCEPT
sudo iptables -A FORWARD -i tun0 -j ACCEPT
sudo iptables -A FORWARD -o tun0 -j ACCEPT
Теперь всё. Можно перезапустить сервер openVPN.
Код:
sudo /etc/init.d/openvpn restart
Установка клиента
С сервером покончили, перейдём к настройке клиента (на
картинке client1). Здесь нам снова потребуется установить
пакет openVPN. После установки, также создаём пустой файл
настроек и внесём в него необходимые записи:
Код:
dev tun
tls-client
proto udp
remote 77.227.220.1 #внешний адрес шлюза в центральном офисе
port 3334
comp-lzo
persist-tun
persist-key
# прописываем виртуальные интерфейсы в обратном порядке
ifconfig 192.168.254.2 192.168.254.1
# а здесь маршрут к локальной сети центрального офиса
route 169.254.0.0 255.255.255.0
dh /etc/openvpn/keys/dh1024.pem #Этот ключ одинаков с серверным
ca /etc/openvpn/keys/ca.crt #Этот тоже
cert /etc/openvpn/keys/client.crt #Эти ключи для клиента берём на
# сервере. У меня был [color=blue]установлен ftp[/color]
# поэтому труда не составило.
key /etc/openvpn/keys/client.key #Этот тоже
log /var/log/openvpn.log #и вновь ведём логи 3 уровня
verb 3
Сохраняем, выходим, перезапускаем:
Код:
sudo /etc/init.d/openvpn restart
Прежде чем закончить, пропишем правила для iptables:
Код:
iptables -A INPUT -i tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -j ACCEPT
iptables -A FORWARD -o tun0 -j ACCEPT
В принципе всё. Теперь можно попробовать пропинговать адреса
с пользовательских компьютеров в обе стороны. По картинке,
пользователь 1.4 успешно соединился как с сервером 1С 0.102,
так и с файлсервером 0.100, что и требовалось.
источники информации: http://www.opennet.ru/base/net/openvpn_office.txt.html
http://kuscsik.blogspot.com/2008/01/transparent-proxy-with-squid-3-on.html