A-A+

Freebsd10上部署openvpn服务器的方法

2016年01月04日 站长资讯 暂无评论

安装openvpn软件

1、先更新ports index

#portsnap fetch update

2、安装openvpn

#cd /usr/ports/security/openvpn/ && make install clean

3、安装bash

#cd /usr/ports/shell/bash && make install clean

4、更改root用户shell

#chsh -s bash

5、使用date查看系统时间,是否和标准时间相同,比如看是否和客户端时间相同。#非常重要,否则等到最后测试时才发现时间不对,将导致必须重新生成ca,server和客户端证书。否则证书验证不通过。

#date

2015年 3月14日 星期六 10时28分14秒 CST

如果不同,则使用date命令调整系统时间。

#date 201503141028 #表示2015年3月14日10点28分。

配置openvpn

openvpn安装完成后,安装位置在/usr/local/etc/openvpn目录下。

1、拷贝openvpn配置文件到/usr/local/etc/openvpn。

#cp /usr/local/share/examples/openvpn/sample-config-files/server.conf
/usr/local/etc/openvpn/

2、拷贝easy-rsa目录到/usr/local/etc/openvpn下。

#cp /usr/local/share/easy-rsa /usr/local/etc/openvpn/

3、编辑vars文件。

  1. # cd /usr/local/etc/openvpn/easy-ras/  
  2.     #vi vars        //根据需要修改下面的选项。如果不修改,并不影响后面的配置和使用效果。   
  3. export KEY_COUNTRY=CN      (国家)  
  4. export KEY_PROVINCE=SD       (省份)  
  5. export KEY_CITY=QD            (城市)  
  6. export KEY_ORG="OpenVPN-Server"    (组织或公司)  
  7. export KEY_EMAIL="demo@demo.org"   (电子邮箱)  

4、让vars中定义的环境变量生效,

#source vars

NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/2.0/keys

5、清理以前产生的旧密钥

#./clean-all

6、创建根ca证书,完成后会看到keys文件夹,里面有ca.*文件,一路回车即可

#./build-ca

7.生成用于服务器的密钥,不妨给服务器起名为server,

#./build-key-server server

8.在/etc/openvpn/easy-rsa/keys目录中生成dh1024.pem文件。

#./build-dh

9.防止 DoS 攻击 和 UDP 端口 flooding,生成一个"HMAC firewall",在/etc/openvpn/easy-rsa/keys目录中生成。

# cd /etc/openvpn/easy-rsa/keys && openvpn --genkey --secret ta.key

10.现在生成客户端密钥,比如用户名是 xisxy(如果有100个用户,就得生成100个密钥)

# cd /etc/openvpn/easy-rsa/

# ./build-key xisxy

11.配置openvpn服务器端配置文件。

# cd /usr/local/etc/openvpn/

# vi server.conf

(修改为如下内容)

  1. port 1194          #端口   
  2. proto tcp          # 协议,udp 在大部分环境中运行良好,如需要玩联网游戏可设为udp。  
  3. dev tun0           # 虚拟网络设备   
  4. ca /etc/openvpn/easy-rsa/keys/ca.crt          # 根 ca证书,注意路径。默认是没有指明路径的。  
  5. cert /etc/openvpn/easy-rsa/keys/server.crt    # 服务器证书,注意路径。默认是没有指明路径的。   
  6. key /etc/openvpn/easy-rsa/keys/server.key     # 服务器密钥,注意路径。默认是没有指明路径的。  
  7. dh /etc/openvpn/easy-rsa/keys/dh1024.pem      # Diffie hellman parameters,注意路径。默认是没有指明路径的。   
  8. server 10.8.0.0 255.255.255.0                 # VPN 虚拟网段,这里非常重要。这个网段是给vpn客户端使用的,不是vpn server内网所直连的网段。  
  9. push "route 192.168.0.0 255.255.255.0"      #为vpn client添加路由。告诉vpn client,如果要访问192.168.0.0/24网段,要把数据包发送给vpn server,默认是10.8.0.1.具体的ip要看你上面一样参数的设置。   
  10. ifconfig-pool-persist ipp.txt                 #从新连接后分配刚刚使用过的ip地址  
  11. push "redirect-gateway def1 bypass-dhcp"   #改变默认网关,要做代理这一点很重要。可以把openvpn服务器当作网关,上网都通过openvpn服务器上网(PF NAT功能)   
  12. push "dhcp-option DNS 8.8.8.8"        #设置client的DNS服务器,还可以高为 10.8.0.1 ,这时openvpn服务器本身充当DNS服务器了。  
  13. #client-to-client  # 在这里不需要虚拟网中的机器互相看到服务器以外的机器,所以要注释掉   
  14. keepalive 10 120                   #每10秒ping一次,120秒不响应,从新连接  
  15. #tls-auth /etc/openvpn/easy-rsa/keys/ta.key 0    #防止 DoS 攻击 和 UDP 端口 flooding,生成一个"HMAC firewall",注意服务器端是0,client端是1   
  16. comp-lzo                            # 用lzo压缩  
  17. user _openvpngroup _openvpn    
  18. persist-key  
  19. persist-tun  
  20. status openvpn-status.log    #  每分中更新openvpn状态记录  
  21.    
  22. verb 3  

测试服务器

启动服务

/usr/local/sbin/openvpn --config /usr/local/etc/openvpn/server.conf --cd /usr/local/etc/openvpn &

Q:如果修改了上面的server.conf配置文件,如何重新启动openvpn服务?

A:使用jobs查看当前后天程序。使用fg把程序调入到前台,然后按ctrl+c结束程序。如果有多个jobs,根据编号,使用fg 编号 的方式调入到前台,比如

#fg 2

配置openvpn服务器pf防火墙,允许openvpn客户端访问内网

添加/etc/pf.conf中添加如下语句

pass quick on tun0

应用规则。

pfctl -f /etc/pf.conf

client的安装与配置

1.类unix client

在/usr/local/share/examples/openvpn/sample-config-files/目录中有配置文件的模板文件。把client配置文件client.conf复制到/etc/openvpn/,没有该文件夹就新建一个。

  1. # cp /usr/local/share/examples/openvpn/sample-config-files/client.conf /etc/openvpn/  
  2. # vi /etc/openvpn/client.conf  
  3. -------------------------------------------  
  4.   
  5. client  
  6. dev tun0  
  7. proto tcp  
  8. remote ***.***.***.*** 1194   # ***.***.***.***部分为你openvpn server 外网的IP地址或域名   
  9. resolv-retry infinite  
  10. nobind  
  11. user nobody  
  12. group nobody   
  13. persist-key  
  14. persist-tun  
  15. ca /etc/openvpn/easy-rsa/keys/ca.crt  
  16. cert /etc/openvpn/easy-rsa/keys/xisxy.crt   //上面创建ca时,自己所填写的内容。   
  17. key /etc/openvpn/easy-rsa/keys/xisxy.key    //上面创建ca时,自己所填写的内容。  
  18. tls-auth /etc/openvpn/easy-rsa/keys/ta.key 1  #注意服务器端是0,client端是1  
  19. comp-lzo   
  20. verb 3  

测试一下client。

# openvpn /etc/openvpn/client.conf

最后出现Initialization Sequence Completed,表示openvpn client成功连接到服务器。

分配的虚拟专用网络IP地址为10.8.0.4。现在就可用虚拟专用网络中的IP地址来访问访问服务器。

访问外部网页等会透过VPN服务器NAT来实现。

使用ping测试一下访问内网的 client。

2.windows client

安装文件(for windows): openvpn-2.0.9-gui-1.0.3-install.exe 客户端的版本没有什么限制,最新版也最好。

下载地址:http://www.openvpn.se/download.html

复制客户端密钥(client.crt和client.key)和ca.crt和ta.key复制到Client_PC的C:\Program Files\OpenVPN\config\ 目录。

还要把C:\Program Files\OpenVPN\sample-config\client.ovpn文件复制到

C:\Program Files\OpenVPN\config\ 目录。

直接点击C:\Program Files\OpenVPN\config\client.ovpn用记事本编辑配置文件。

这是PC1的client配置文件。

  1. client                          //这个就是client,不要修改。  
  2. dev tun0                                
  3. proto tcp   
  4. remote ***.***.***.*** 1194     # ***.***.***.***部分为你openvpn server 外网的IP地址或域名  
  5. resolv-retry infinite  
  6.   
  7. nobind  
  8. persist-key  
  9. persist-tun  
  10. ca ca.crt   
  11. cert xisxy.crt                      //上面创建ca时,自己所填写的内容。  
  12. key xisxy.key                        //上面创建ca时,自己所填写的内容。  
  13. tls-auth ta.key 1  #注意client端是1   
  14. comp-lzo  
  15. verb 3  

双击桌面上的OpenVPN GUI图标,然后在右下角任务栏的图标上右击,选择connect。连接成功后,使用ping测试一样内网连通性把。

标签:

给我留言