Ubuntu下,开启openvpn自动路由功能

Published on:

openvpn 自动路由的优点:

  1. 节省 VPN 带宽+流量, 也就是省钱;

需要用到的工具:

0. 一份有效的 openvpn 客户端配置文件:

0.1. 自己购买有效的 openvpn 帐号及配置文件(以 my-openvpn-config.ovpn 为例);

1. 路由表文件:

1.1. 从开源项目 chnroutes 下载路由表生成工具 chnroutes.py;
1.2. 命令行下执行如下命令, 生成方案一需要的路由表文件 routes.txt:

python chnroutes.py -p old
1.3. 命令行下执行如下命令, 生成方案二需要的路由表文件 vpn-up.sh 和 vpn-down.sh:
python chnroutes.py
1.4. 命令行下执行如下命令, 將方案二需要的路由表文件 vpn-up.sh 和 vpn-down.sh 复制到 /etc/openvpn/ 下:
sudo cp vpn-up.sh vpn-down.sh /etc/openvpn/

2. openvpn-2.3 源码:

2.1. 从开源项目 openvpn 下载 openvpn-2.3 发行版的源代码;

3. lzo 开发包:

3.1. 命令行下执行如下命令获取 lzo 开发包:

sudo apt-get install liblzo2-dev

实现方式一(手动添加路由信息到 openvpn 客户端配置文件)【未经过测试】:

  1. 使用任意文本编辑工具打开 my-openvpn-config.ovpn 文件, 將 routes.txt 文件内容追加到文件末尾;
  2. 使用此配置文件配置 openvpn, 并重新连接即可;

实现方式二(开启 openvpn 的 iproute2 特性, 自动添加路由信息到 openvpn 客户端配置文件)【经过测试】:

  1. 在安装好 lzo 开发包的前提下, 使用 –enable-iproute2 标记重新编译安装 openvpn: 1.1. 將 openvpn-2.3 源码解压到特定文件夹(以 openvpn-2.3-sources 为例), 命令行下执行如下命令:
    ./configure --enable-iproute2
    make
    make install
  2. 使用任意文本编辑工具打开 my-openvpn-config.ovpn 文件, 將如下内容追加到文件末尾:
    script-security 2
    up vpn-up.sh
    down vpn-down.sh
  3. 命令行下执行如下命令, 开启 openvpn 服务:
    openvpn my-openvpn-config.ovpn

注意:

  1. 在操作过程中如遇到 “permission deny” 字样, 导致无法正常执行, 请使用 sudo 切换以管理员权限执行;
  2. 若使用方案二执行”./configure –enable-iproute2”过程中遇到 “configure: error: lzo enabled but missing”, 请确认安装了 lzo 开发包;
  3. 方案二的路由脚本只能配合命令行使用(笔者测试的情况), 使用 network-manager-openvpn 等 GUI 配置工具的”导入”功能 .ovpn 文件后, 路由功能失效;
  4. 为什么要提出方案二呢? 因为 routes.txt 就目前来讲, 有近 4000 条记录, 通过方式一逐条添加效率非常低下, 影响性能. 而方案二则十分高效迅速;

更新:

2012.12.07

1. 开启 openvpn 自动导入帐号密码功能

1.1. 基于实现方式二的前期准备基础上, 使用如下命令配置编译 openvpn:

./configure --enable-iproute2 --enable-password-save
1.2. 继续执行”实现方式二”的 1.1.2 和 1.1.3 步骤即可; 1.3. 如何使用: 1.3.1. 將帐密信息保存在 .ovpn 文件统一目录下的文本文件中, 内容格式如下:
帐号
密码
1.3.2. 在 .ovpn 格式的配置文件中, 找到 auth-user-pass 这一行, 修改此行内容为如下内容即可:
auth-user-pass 帐密文件名.txt
1.3.3. 保存修改后, 使用最新的配置文件进行连接服务器即可;