Linux上的OpenVPN服务器设置
时间:2020-03-21 11:46:29 来源:igfitidea点击:
我们将在Debian Wheezy VM上设置OpenVPN服务器。
安装OpenVPN服务器
安装OpenVPN和OpenSSL软件包:
# apt-get update && apt-get install openvpn openssl liblzo2-2 lzop
公钥基础结构设置
创建一个目录来存储日志:
# mkdir /var/log/openvpn
创建一个单独的目录来保存脚本,证书和密钥,以确保在更新OpenVPN软件包时不会丢失对脚本的任何更改:
# mkdir /etc/openvpn/easy-rsa
复制示例目录中的所有内容:
# cp -R /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa/
检查OpenSSL版本
# openssl version OpenSSL 1.0.1e 11 Nov 2013
# dpkg -s openssl | grep -i version Version: 1.0.1e-2
[编辑:2014年4月]此版本的OpenSSL受Heartbleed错误的影响。
适当修改配置文件
强制OpenVPN使用OpenSSL 1.0:
# vim /etc/openvpn/easy-rsa/vars #comment out the line below #export EASY_RSA="`pwd`" export EASY_RSA="/etc/openvpn/easy-rsa" #comment out the line below #export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA` export KEY_CONFIG="$EASY_RSA/openssl-1.0.0.cnf" export KEY_SIZE=1024 #change RSA key to 2048 if paranoid #set some applicable values export KEY_COUNTRY="GB" export KEY_PROVINCE="London" export KEY_CITY="London" export KEY_ORG="Example" export KEY_EMAIL="Hyman@theitroad"
生成主证书颁发机构(CA)证书和密钥
# cd /etc/openvpn/easy-rsa # source vars # ./clean-all # ./build-ca
创建服务器证书
# ./build-key-server deb-server
生成Diffie Hellman参数(如果使用2048键大小,则可能需要很长时间):
# ./build-dh
证书和密钥已在子目录“/etc/openvpn/easy-rsa/keys”中生成。
常见的做法是将它们复制到'/etc/openvpn'中:
# cd /etc/openvpn/easy-rsa/keys # cp ./deb-server.crt ./deb-server.key ./ca.crt ./dh1024.pem /etc/openvpn
创建客户证书
我们将为用户Sandy生成证书:
# cd /etc/openvpn/easy-rsa # source vars # ./build-key sandy
使用安全方法(即SCP)将以下文件复制到Sandy的计算机上:
/etc/openvpn/ca.crt /etc/openvpn/easy-rsa/keys/sandy.crt /etc/openvpn/easy-rsa/keys/sandy.key
客户端证书和密钥仅在客户端计算机上是必需的,因此一旦复制就可以将其从服务器中删除:
# rm /etc/openvpn/easy-rsa/keys/sandy.crt # rm /etc/openvpn/easy-rsa/keys/sandy.key
OpenVPN服务器配置
我们需要首先复制默认服务器配置文件:
# cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn
解压缩:
# gunzip /etc/openvpn/server.conf.gz
打开并修改服务器的配置文件,使其看起来像这样:
# cat /etc/openvpn/server.conf #listen on IPv4 local 0.0.0.0 #we use a non-default port port 11194 #UDP protocol chosen for better protection against DoS attacks and port scanning proto udp #using routed IP tunnel dev tun #full paths to keys and certificates ca /etc/openvpn/ca.crt cert /etc/openvpn/deb-server.crt key /etc/openvpn/deb-server.key dh /etc/openvpn/dh1024.pem #set OpenVPN subnet server 10.26.0.0 255.255.255.0 #maintain a record of client-to-virtual-IP-address ifconfig-pool-persist ipp.txt #ping every 10 seconds, assume that remote peer is down if no ping received during 60 keepalive 10 60 #cryptographic cipher, must be the same (copied) on the client config file as well cipher AES-256-CBC #enable compression on VPN link comp-lzo max-clients 10 #downgrade daemon privileges (non-Windows only) user nobody group nogroup #try to preserve some state across restarts persist-key persist-tun #log files status /var/log/openvpn/openvpn-status.log log /var/log/openvpn/openvpn.log log-append /var/log/openvpn/openvpn.log #log file verbosity verb 3
启动OpenVPN服务器
注意:必须在防火墙上打开UDP端口11194,否则客户端将无法连接。
启用内核模块:
# modprobe tun
启动OpenVPN服务:
# service openvpn start
如果打开,请检查OpenVPN tun接口:
# ifconfig tun tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:10.26.0.1 P-t-P:10.26.0.2 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
注意:OpenVPN服务器始终使用客户端网络中的第一个可用IP地址,并且只有该IP可以ping通。
当我们为客户端网络掩码配置了/24时,将使用.1地址(在本例中为10.26.0.1)。
我们在上面的ifconfig输出中看到的P-t-P地址通常不回答ping请求。
服务器现在应该在UDP 11194端口上侦听:
# netstat -nlup Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name udp 0 0 0.0.0.0:11194 0.0.0.0:* 29821/openvpn
就这样,OpenVPN服务器已经配置好了。
现在,我们可以继续进行操作,并在Sandy的计算机上设置OpenVPN Linux客户端。