The script to install openvpn (by quqi99)

原创 2016年07月29日 12:27:21

作者:张华  发表于:2016-07-29
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明

http://blog.csdn.net/quqi99 )

安装Server

#!/usr/bin/env bash

set -o xtrace
sudo apt-get -y install easy-rsa openssl
#Using easy-rsa to generate KEY and certificate
sudo cp -r /usr/share/easy-rsa/ /etc/openvpn
cd /etc/openvpn/easy-rsa
sudo chown -R `whoami`:root /etc/openvpn
mkdir -p /etc/openvpn/easy-rsa/keys
if [ ! -f "/etc/openvpn/easy-rsa/keys/ca.key" ]; then     
  source ./vars
  export KEY_COUNTRY=CN
  export KEY_PROVINCE=BJ
  export KEY_CITY=BJ
  export KEY_ORG=sts
  export KEY_OU=sts
  export KEY_NAME=sts
  export KEY_EMAIL=root@sts
  export KEY_NAME="server"
  ./clean-all
  ./build-ca
  ./build-key-server server
fi
cp /etc/openvpn/easy-rsa/keys/{server.crt,server.key,ca.crt} /etc/openvpn
openssl dhparam -out /etc/openvpn/dh2048.pem 2048

#Generate server configuration
#gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf
sudo bash -c 'cat > /etc/openvpn/server.conf' <<EOF
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key  # This file should be kept secret
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
;push "route 192.168.10.0 255.255.255.0"
push "redirect-gateway def1 bypass-dhcp"
;push "dhcp-option DNS 8.8.8.8"
;push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
reneg-sec 0
;openssl dhparam -out /etc/openvpn/dh2048.pem 2048
dh dh2048.pem
;sudo openvpn --genkey --secret ta.key
tls-auth ta.key 0 # This file is secret
;Static Key
;secret /etc/openvpn/ta.key
;cipher BF-CBC        # Blowfish (default)
;cipher AES-128-CBC   # AES
;cipher DES-EDE3-CBC  # Triple-DES
comp-lzo
max-clients 100
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
;log         openvpn.log
;log-append  openvpn.log
verb 3
EOF

#Network Set up
sudo ufw diable
sudo iptables -A INPUT -p tcp -m state --state NEW --dport 1194 -j ACCEPT  
sudo iptables -A INPUT -p udp -m state --state NEW --dport 1194 -j ACCEPT  
sudo iptables -A FORWARD -j ACCEPT  
sudo iptables -t nat -A POSTROUTING -j MASQUERADE  
sudo sed -i '/net.ipv4.ip_forward/ s/.∗=.*/\11/' /etc/sysctl.conf  
sudo sysctl -p  
sudo sysctl -w net.ipv4.ip_forward=1 

#Start VPN Server
sudo /etc/init.d/openvpn restart
#sudo openvpn --config /etc/openvpn/server.conf


重要参数

1, tls-timeout=4 , 因为默认的默认的UDP超时时间是30秒,但是实际测试中发现无论在server配置tls-timeout为任何值均极易引发错误”TLS Error: TLS key negotiation failed to occur within 60 seconds“, 所以没敢tls-timeout值。但是修改了: sudo sysctl -w net.netfilter.nf_conntrack_udp_timeout=60
The tls-timeout specifies how many seconds elapse between retransmission of
packets if no response is recieved from the server. The default timeout is 2
seconds. You can change this timeout to some other value, but the client will
continue to attempt connections for 1 minute regardless of how the tls-timeout
interval is set.

2, "keepalive 10 120", 它相当于“ping 10,ping-restart 120", openvpn构建在udp之上,每隔120秒的时间窗服务端收不到客户端的数据将触发Timer重传。原来默认的60秒可能由于网络环境丢包频繁超时重发降低性能(10/60=16.7%的丢包率)。

3, enable HMAC, ta.key是一个公钥,能对tls数据进行摘要,当验证发现被篡改后能及时丢弃及时重传
#VPN Server端
;sudo openvpn --genkey --secret ta.key
tls-auth ta.key 0 # This file is secret

#VPN Client端
tls-auth ta.key 1

但现在报错: TLS Error: cannot locate HMAC in incoming packet from [AF_INET]123.14.249.122:29758


4, 用下列规则发现被篡改后的tls包及时丢弃及时重传(未测试)
sudo iptables iptables -I FORWARD -p tcp -s <vpn-ip>  --sport 1194 --tcp-flags RST RST -m state --state RELATED,ESTABLISHED -j DROP

5, 如使用用户名和密码登录的话,服务端加上如下配置,客户端加(auth-user-pass pass.txt)
# Username and Password authentication.
# sudo apt-get install libpam0g-dev liblzo2-dev  
client-cert-not-required
username-as-common-name
plugin /usr/share/openvpn/plugin/lib/openvpn-auth-pam.so login

useradd vpn -M -s /sbin/nologin
passwd vpn

客户端设置

#VPN Client
#It's ideal for each client connecting to the VPN to have its own unique certificate and key.
#This is preferable to generating one general certificate and key to use among all client devices.
cd /etc/openvpn/easy-rsa && ./build-key client1
#cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/easy-rsa/keys/client.ovpn
#scp ubuntu@<server>:/etc/openvpn/easy-rsa/keys/client1.crt /etc/openvpn/
#scp ubuntu@<server>:/etc/openvpn/easy-rsa/keys/client1.key /etc/openvpn/
#scp ubuntu@<server>:/etc/openvpn/easy-rsa/keys/client.ovpn /etc/openvpn/
#scp ubuntu@<server>:/etc/openvpn/easy-rsa/keys/ca.crt /etc/openvpn/
#scp ubuntu@<server>:/etc/openvpn/ta.key /etc/openvpn/
#Generate client configuration
sudo bash -c 'cat > /etc/openvpn/client.ovpn' <<EOF
client
dev tun
proto udp
remote <vpn-server> 1194
;remote my-server-2 1194
;remote-random
resolv-retry infinite
nobind
user nobody
group nogroup
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
ns-cert-type server
tls-auth ta.key 1
comp-lzo
verb 3
redirect-gateway def1
tun-mtu 1500
mssfix 1420
;Static Key
;secret /etc/openvpn/ta.key
EOF
#Start VPN Client
sudo openvpn --config /etc/openvpn/client.ovpn



版权声明:本文为博主原创文章,如需转载,请注明出处!

Re-install Flyme or Native Google Android on Meizu MX4 Ubuntu (by quqi99)

作者:张华 发表于:2017-06-23版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 ( http://blog.csdn.net/quqi99 ) ##...
  • quqi99
  • quqi99
  • 2017年06月23日 09:04
  • 681

Install Openvswitch by binary and source way on rhe6.3 ( by quqi99 )

Install Openvswitch by rpm binary and source code way on rhe6.3 ( by quqi99 ) 作者:张华  发表于:2012-1...
  • quqi99
  • quqi99
  • 2012年12月30日 21:09
  • 3468

Perform a bisect test to identify the kernel problem (by quqi99)

*作者:张华 发表于:2016-12-07 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 ( http://blog.csdn.net/quqi99 ...
  • quqi99
  • quqi99
  • 2016年12月15日 21:19
  • 572

How to debug QEMU (by quqi99)

**作者:张华 发表于:2016-08-11 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 ( http://blog.csdn.net/quqi99 ...
  • quqi99
  • quqi99
  • 2016年08月11日 15:14
  • 1321

调研NFV编排工具(by quqi99)

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 (http://blog.csdn.net/quqi99)裸机配置工具 Cobbler, Dell开源的基于PX...
  • quqi99
  • quqi99
  • 2017年11月10日 22:31
  • 221

使用rsync同步数据(by quqi99)

作者:张华  发表于:2015-12-28版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明( http://blog.csdn.net/quqi99 )急需使用r...
  • quqi99
  • quqi99
  • 2015年12月28日 14:40
  • 2172

Neutron DVR实现multi-host特性打通东西南北流量提前看(by quqi99)

作者:张华  发表于:2014-03-07 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 (http://blog.csdn.net/quqi99 )  ...
  • quqi99
  • quqi99
  • 2014年03月07日 15:17
  • 9391

三种方式使用vlan (by quqi99)

作者:张华  发表于:2016-04-22版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明( http://blog.csdn.net/quqi99 )Use O...
  • quqi99
  • quqi99
  • 2016年04月22日 11:53
  • 5659

定制你自己的Linux系统 ( by quqi99 )

定制你自己的Linux ( by quqi99 ) 作者:张华  发表于:2013-09-21 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 ( http...
  • quqi99
  • quqi99
  • 2013年09月21日 09:26
  • 8681

为什么openstack中的oslo模块总喜欢发生代码冲突? (by quqi99)

作者:张华  发表于:2014-02-02版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明(http://blog.csdn.net/quqi99 )      ...
  • quqi99
  • quqi99
  • 2015年02月02日 14:50
  • 6016
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:The script to install openvpn (by quqi99)
举报原因:
原因补充:

(最多只允许输入30个字)