OpenVPN搭建日志

OpenVPN搭建

  • 以下步骤均在Ubuntu 14.04下进行

服务器推荐

安装OpenVPN

安装OpenVPN和easy-rsa

注意 以下命令均需要sudo权限

将easy-rsa拷贝到OpenVPN目录下

之后进入目录

之后我们会用到一些环境变量, 修改”vars”里面对应数据, 以下为一个示例

接下来拷贝openssl配置

加载环境变量

生成密钥的最后一步准备工作是清空旧的证书和密钥,以及生成新密钥的序列号和索引文件。

生成证书

生成服务器密钥

生成Diffie-Hellman密钥, 此过程请耐心等待

生成用于TLS验证的密钥

移动所有生成的文件到最后的位置中

服务端配置文件(server.conf)

  • 编辑位于/etc/openvpn/server.conf, 以下附上我的配置文件的一部分并加以解释

备注0

  • proto可选的有TCP/TCP6/UDP/UDP6 其中IPv6版本向下兼容IPv4, 这里我们显然需要使用IPv6. 请注意,请尽量不要在普通IPv4环境下使用OpenVPN, 因为防火墙能准确识别OpenVPN.

备注1

  • OpenVPN工作在三层, 因此网络流量是否走VPN隧道完全由路由表控制.
  • 此处的redirect-gateway是将默认路由改为走VPN隧道
  • def1是可选参数, 此处是一个OpenVPN的feature(真feature!不是Bug!), 当没有此参数时, 连接VPN时给客户端推的路由为”0.0.0.0/0″, 此时, 系统中可能存在两条0.0.0.0的路由(一条是本来的默认网关, 根据不同系统情况可能有所不同), 而如果有def1参数, 向客户端推得路由表为0.0.0.0/1和128.0.0.0/1这两条, 根据最长匹配原则, 数据就一定会通过VPN隧道走了!

备注2

  • push “route address netmask vpn_gateway/net_gateway”这是向客户端推送一条通过VPN隧道走或通过本来的网关走的路由表, 如果细心的话, 会发现166.111.204.120就是net.tsinghua.edu.cn的地址…这样我就能把它给劫持了.
  • 至于其他的校内IP地址, 你可以在bgp.he.net上找到或找我要一份…

备注3

  • 向客户端interface推DNS地址

备注4

  • auth-user-pass-verify 表示通过用户名密码方式验证
  • xxx 是你的自定义验证脚本, 每次有用户连接时, OpenVPN会自动运行一次此脚本, 返回值为0表示认证成功, 为1表示认证失败
  • via-env 表示用户名密码通过环境变量传递
  • 更多信息请查阅官方文档

备注5

  • 这两处是自定义的连接和断开连接时运行的脚本. 劫持的net.tsinghua页面的用户名对应就是在连接时处理的, 流量统计是在断开连接时处理的.
  • 更多信息请查阅官方文档

至此OpenVPN服务端配置已完成

开启转发

不开启转发的话,VPN将不能转发你的数据包

编辑/etc/sysctl.conf

将net.ipv4.ip_forward = 0改成net.ipv4.ip_forward = 1

让更改生效

iptables配置

Xen和KVM用户

OpenVZ用户

保存iptables配置

编辑/etc/network/interfaces文件,在最后插入一行:

服务端基本配置完成

客户端配置文件

完成

劫持net.tsinghua 只需将net.tsinghua的路由表改为到VPN, 再在服务器上将net.tsinghua DNAT到本地, 服务器Nginx监听net.tsinghua.edu.cn即可

更多关于OpenVPN的信息请参考官方文档

2 thoughts on “OpenVPN搭建日志

Leave a Comment

电子邮件地址不会被公开。 必填项已用*标注