headermask image

Сервер OpenVPN на CentOS 5.2

Представим ситуацию, когда пользователям вашей организации понадобился доступ извне к корпоративной почте или каким-либо другим данным. Я уверен, что вы можете настроить RPC over HTTPS, но есть и другие способы для достижения цели. Например, OpenVPN, который я нахожу достаточно удобным и надежным.

В этом простейшем HOWTO я покажу, как настроить это все хозяйство. Опытные пользователи вряд ли найдут здесь что-то интересное для себя.

В качесте допущения примем, что мы работаем с правами пользователя root и Selinux отключен, что указано в /etc/selinux/config. На случай, если OpenVPN не найдется в основном репозитарии, необходимо добавить репозитарий rpmforge (не описано в этой статье).

    yum install openvpncd /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 me@mydomain.co.za

Проверяем, запустился ли 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 сервер у нас установлен и ключи для клиентов сгенерированы, применим полученные знания на практике и осчастливим кого-нибудь установкой клиентской части.

  • Скачиваем клиентскую часть вот отсюда
  • Устанавливаем ее
  • В каталог C:\Program Files\OpenVPN\config выкладываем наши ключи и смотрим вообще, что там есть:
      ca.crtca.key
      
      <name>.crt (eg. johnl.crt)
      
      <name>.csr
      
      <name>.key
  • Редактируем файл 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

Вот это собственно и все. Не забудьте настроить маршрутизацию!

Оригинал:  http://howtoforge.com/openvpn-server-on-centos-5.2

Перевод: Сгибнев Михаил. Оригинал перевода

Разное

Усиленно подыскиваю для себя машину. В связи с кризисом уже не получается новую купить, поэтому беру б/у. Пока остановился на шевроле авео, ещё из вариантов опель мерива, думаю…

Вам интересно откуда появился телефон? Читайте статью по ссылке, довольно познавательно.

One Comment

  1. $IPTABLES -A INPUT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP –destination-port 1723 -j ACCEPT

    Что есть $UNIVERSE???

    1. Scales on April 19th, 2011 at 10:23 am