本文所述openVPN的服务器和客户端基于ArchLinux开发环境,所述内容对于各种Linux发行版应该类似。

<li>首先是安装,服务器和客户端的安装都是一样的。(作为ArchLinux用户)你只需要执行下面的命令即可安装openvpn:

其他的发行版请使用对应的包管理工具安装相应的包及其依赖环境。如果是自己编译的内核,请确保把TUN/TAP编译进了内核,或者编译成模块并加载。如果没有,重新配置内核,启用下面这个模块:

<li>然后是清点一下openvpn带的东西。默认情况下安装好openvpn后:
  • 配置脚本位于/usr/share/openvpn/easy-rsa/

  • 配置范例位于/usr/share/openvpn/example/

  • openvpn服务启动脚本位于/etc/rc.d/openvpn(这是ArchLinux的默认位置,是BSD风格的init布局方式。大多数发行版可能采用的是SysV风格的init布局的方式,那么这个脚本可能就位于/etc/init.d/openvpn。)

  • openvpn服务启动时默认从/etc/openvpn/下读取配置文件。

<li>生成认证文件(主要在配置脚本目录下操作,而且需要有root用户权限):
  • 进入配置脚本目录【cd /usr/share/openvpn/easy-rsa】;

  • 首先清除原来的配置【./clean-all】;

  • 然后编辑vars文件,修改最后几行中,关于地区、组织、电邮等信息(非必须);

  • 读入vars文件,使得配置信息生效【source vars】;

  • 生成DH证书【./build-dh】。

  • 生成CA证书【./build-ca】。

  • 生成服务端认证文件【./build-key-server srv_name】(srv_name为服务器名,可任意取,主要用于一台服务器上建立多个openvpn网段时区分);

  • 生成客户端认证文件【./build-key cli_name】(cli_name同上,不过不同的客户端的名字不能一样);

  • 以配置范例目录/usr/share/openvpn/example中的server.conf和client.conf为蓝本,根据配置文件的内容提示,修改创建服务端和客户端的配置文件,服务端命名为srv_name.conf,客户端命名为cli_name.conf。

<li>分发认证文件:
  • 对于服务器,/usr/share/openvpn/easy-rsa/keys下的dh1024.pem、ca.crt、srv_name.{crt,key}四个文件是必须的,直接复制到服务器的/etc/openvpn目录下即可。

  • 对于客户端,/usr/share/openvpn/easy-rsa/keys下的dh1024.pem、ca.crt、cli_name.{crt,key}四个文件是必须的,直接复制到客户端的/etc/openvpn目录下即可。

  • 创建服务器和客户端配置(以/usr/share/openvpn/example下的文件为模板):主要要需要修改的地方有认证文件的文件名路径。

  • 打开IP转发:【sysctl net.ipv4.ip_forword=1】;

  • 对来自openvpn虚拟网络接口的数据放行【iptables -A INPUT -i tun0 -j ACCEPT】;

  • 将来自openvpn的网络请求转发到本地网络接口【iptables -t nat -A POSTROUTING -s 10.8.0.1/24 -o eth0 -j】 MASQUERADE