|
Сервер OpenVPN на CentOS 5.2 |
|
|
Представим ситуацию, когда пользователям вашей организации понадобился доступ извне к корпоративной почте или каким-либо другим данным. Я уверен, что вы можете настроить RPC over HTTPS, но есть и другие способы для достижения цели. Например, OpenVPN, который я нахожу достаточно удобным и надежным.
как настроить VPN с корпоративной сетью? Как настроить OpenVPN? В этом простейшем HOWTO я покажу, как настроить это все хозяйство. Опытные пользователи вряд ли найдут здесь что-то интересное для себя.
В качесте допущения примем, что мы работаем с правами пользователя root и Selinux отключен, что указано в /etc/selinux/config. На случай, если OpenVPN не найдется в основном репозитарии, необходимо добавить репозитарий rpmforge (не описано в этой статье). yum install openvpn cd /etc/openvpn/ cp -R /usr/share/doc/openvpn-2.0.9/easy-rsa/ /etc/openvpn/ cd /etc/openvpn/easy-rsa/2.0/ ../vars chmod +rwx * ./clean-all source ./vars
Изменим значения вверху файла, чтобы они соответствовали нашим параметрам vi ../vars
Изменим значения вверху файла, чтобы они соответствовали нашим параметрам vi vars
Создаем сертификат CA: ./build-ca
Создаем файл server.key: source ./vars ./clean-all ./build-ca ./build-key-server server
Редактируем файл openvpn.conf: vi /etc/openvpn/openvpn.conf
Хотя в файле конфигурации указано использовать tcp, считается, что на медленных линиях udp работает быстрее. port 1723 # (1194 is the default but on some APN networks this is blocked) proto tcp dev tun ca ca.crt cert server.crt key server.key dh dh1024.pem server 172.16.0.0 255.255.255.0 push "dhcp-option DNS 192.168.168.1" push "dhcp-option DNS 168.210.2.2" #push "dhcp-option WINS 192.168.1.2" push "route 192.168.168.0 255.255.255.0" ifconfig-pool-persist ipp.txt keepalive 10 120 comp-lzo user nobody group users persist-key persist-tun status openvpn-status.log
Копируем ключи и запускаем OpenVPN: cp keys/{ca.crt,ca.key,server.crt,server.key} /etc/openvpn/ ./build-dh cp keys/dh1024.pem /etc/openvpn/ /etc/init.d/openvpn start chkconfig --list | grep vpn
Генерируем ключи по одному на каждого клиента: ./build-key <name>
Рассылаем ключи клиентам: cd keys/ zip keys.zip ca.crt ca.key <name>.crt <name>.csr <name>.key yum install -y nail nail -s “Keys" -a keys.zip
Этот адрес e-mail защищен от спам-ботов. Чтобы увидеть его, у Вас должен быть включен Java-Script
Проверяем, запустился ли OpenVPN: netstat -ntpl | grep 1723
Настраиваем правила iptables: # External Interface for VPN # VPN Interface VPNIF="tun0" VPNNET="172.16.0.0/24" VPNIP="172.16.0.1" ### OpenVPN $IPTABLES -A INPUT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP --destination-port 1723 -j ACCEPT # OpenVPN $IPTABLES -A INPUT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP --destination-port 1723 -j ACCEPT # OpenVPN # Allow TUN interface connections to OpenVPN server $IPTABLES -A OUTPUT -o $INTIF -s $EXTIP -d $VPNNET -j ACCEPT $IPTABLES -A OUTPUT -o $VPNIF -s $EXTIP -d $VPNNET -j ACCEPT # OpenVPN $IPTABLES -A FORWARD -i $EXTIF -o $VPNIF -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A FORWARD -o $INTIF -s $EXTIP -d $VPNNET -j ACCEPT $IPTABLES -A FORWARD -o $VPNIF -s $EXTIP -d $VPNIP -j ACCEPT $IPTABLES -A FORWARD -o $EXTIF -s $EXTIP -d $VPNNET -j ACCEPT $IPTABLES -A FORWARD -o $VPNIF -s $INTNET -d $VPNNET -j ACCEPT
Устанавливаем OpenVPN GUI на Windows XP
Поскольку OpenVPN сервер у нас установлен и ключи для клиентов сгенерированы, применим полученные знания на практике и осчастливим кого-нибудь установкой клиентской части. Редактируем файл client.ovpn таким образом, чтобы параметры соответствовали нашему серверу: # The hostname/IP and port of the server. # You can have multiple remote entries # to load balance between the servers. remote <myserver> 1723 ;remote my-server-2 1194 # SSL/TLS parms. # See the server config file for more # description. It's best to use # a separate .crt/.key file pair # for each client. A single ca # file can be used for all clients. ca ca.crt cert .crt key .key
Вот это собственно и все. Не забудьте настроить маршрутизацию! Автор: OpenVPN Server On CentOS 5.2 Перевод: Сгибнев Михаил |