正在加载...

Ubuntu 9.10下使用Network-manager 配置openvpn

April 23rd, 2010

简单步骤安装openvpn

  1. 重新安装最新版本的network-manager,默认版本有bug,无法使用VPN
  2. 默认情况下vpn选项卡是无效的,所以要安装network-manager-openvpn
  3. 配置Openvpn,将配置好的client.conf文件在vpn设置界面使用导入的方式导入

到这里已经可以通过vpn上网了。

但是,我希望能够访问国外网站时才使用vpn,访问国内网站时还是使用原始的路由,所以还需要配置路由表。

Google了一下,发现了这个项目:http://code.google.com/p/chnroutes/
按照说明进行配置,发现network-manager没有地方自动增加路由,配置的conf文件导入后完全没有作用。

于是想是否可以在连接成功后,手动修改路由表,经过试用成功。

安装提示:

  1. 下载 http://chnroutes.googlecode.com/files/chnroutes_ovpn_linux
  2. 从终端进入下载目录, 执行python chnroutes_ovpn_linux, 执行完毕之后同一目录下将生成两个新文件'vpnup'和'vpndown'
  3. 在终端里运行命令 chmod a+x vpnup vpndown 把这两个文件设置为可执行
  4. 在vpn连接前执行./vpnup ,
  5. 然后连接vpn,发现已经能正常访问国外的网站了
  6. 断开连接,执行vpndown恢复路由数据

可是,每次都要手动设置还是麻烦,有没有办法能在连接后自动执行脚本呢?

继续Google,试了n多方法,就是不行。

使用Network-manager用起来比较方便,但却没有了Openvpn的配置文件,所以一些在Openvpn里可用的技巧都无效了。

没法子,自己研究吧!

查看日志,发现Network-manager每次创建完连接和断开连接都会调用 /etc/NetworkManager/dispatcher.d/01ifupdown 文件,看来有戏,看了下脚本,貌似连接成功后会调用/etc/network/if-post-down.d目录下的脚本,而这个目录下正好又一个openvpn文件,修改了一下,加入vpnup,重新创建连接,发现没有作用?

怎么回事,继续研究01ifupdown,结合日志,发现当openvpn连接时,发生的action名字分别是vpn-up和vpn-down,而脚本里没有处理这两种状态,哦,这下,修改01ifupdown就行了,在case语句中加入

vpn-up)
  exec /root/config/openvpn/vpnup
  ;;
vpn-down)
   exec /root/config/openvpn/vpndown
  ;;

继续连接,查看路由表,发现脚本是执行了,但结果把所有国内地址都设置成了使用vpn来路由,查看vpnup,发现问题出在执行时间,vpn-up事件是在连接建立后触发的,而vpnup脚本需要在连接建立前执行。
不过问题不大,将

OLDGW=`ip route show | grep '^default' | sed -e 's/default via \([^ ]*\).*/\1/'`

修改为

OLDGW=`ip route show | grep '^[^d].*proto static'|sed -e 's/.*via \([^ ]*\) .*/\1/'`

OK,问题解决了,重新启动openvpn,上网,浏览IP138.com发现显示地址为中国本地,访问twitter.com,完全没有问题。呵呵!折腾了好半天!

 

相关阅读:



google reader 抓虾
bloglines my yahoo
哪吒 鲜果
* 更多订阅本站方式请看 订阅帮助