Ubuntu命令行连接VPN并自动设置所有流量通过VPN

摘要

本文主要记录chenqp7于2016-01-12在ubuntu 14.04 LTS系统下校园网环境中使用apt-get的purge命令卸载Network-Manager,同时手动设置interfaces文件,并使用ifup配置网络;然后设置PPTP连接VPN并设置路由route使所有网络流量走VPN的具体过程:

  • purge卸载network-manager网络管理包以使手动配置生效
  • 编辑 interfaces 文件使ifup能够配置网卡
  • 确认安装VPN客户端
  • 命令行下创建pptp账号并连接VPN服务器
  • 使用 pon 和 poff 命令连接或断开pptp账号
  • 命令行设置默认路由测试所有流量能否成功走VPN通道
  • 设置 ip-up 文件实现连接VPN时自动修改默认路由

目录

[TOC]

手动配置网卡

手动配置网卡而不使用Network Manager (NM)的好处是当用户是通过SSH远程控制该机器时,也能够控制以及配置网络。

停止NM服务并停止其对网络的控制

由于对于Ubuntu等Linux系统,网络管理仅允许一个软件进行控制。Ubuntu 14.04 LTS 桌面版默认安装了NM,接管了网络控制。所以最好先停止NM服务,并设定手动控制网络。具体请参考 CSDN博客

  • 首先关闭NM服务,并设置手动配置网络
1
2
sudo stop network-manager
echo "manual" | sudo tee /etc/init/network-manager.override

手动配置interfaces文件设置ip地址

  • 配置interfaces文件以使ifup生效
1
sudo vi /etc/network/interfaces
1
2
3
4
5
6
7
8
9
10
# Vim中使用下列方案替换文件内容,方案二选一即可
# 方案1:配置静态地址
auto eth0
iface eth0 inet static
address xxx.xxx.xxx.xxx #IP地址
netmask xxx.xxx.xxx.xxx #子网掩码
gateway xxx.xxx.xxx.xxx #网关
#方案2:配置动态地址(DHCP)
auto eth0
iface eth0 inet dhcp
  • 配置DNS服务器地址(若使用ifup则可不进行此步骤)
1
sudo vi /etc/resolv.conf
1
2
3
# Vim中改为如下内容:
nameserver xxx.xxx.xxx.xxx #希望修改成的DNS
nameserver xxx.xxx.xxx.xxx #希望修改成的DNS

彻底卸载NM并配置网卡

  • 通过apt-get的purge来卸载软件并删除配置文件
1
2
3
4
5
6
7
8
sudo apt-get purge network-manager
```

- 最后通过`ifup`配置网卡,并重启网络服务

```fsh
sudo ifup eth0
sudo /etc/init.d/networking restart

配置PPTP客户端并设置流量自动通过VPN

首先设置VPN连接并测试。而在某些使用情况下需要将流量先转发到VPN再访问网络,即将本机的所有网络请求的流量均先通过VPN转发出去,如需要使用VPN来访问英特网。做到这点的方法是将默认路由改为VPN。

创建VPN账号并测试连接

  • 安装VPN客户端
1
sudo apt-get install pptp-linux
  • 创建VPN账号并连接
1
2
3
4
sudo pptpsetup --create tunnel_name --server xxx.xxx.xxx.xxx --username vpn_user --password vpn_psw --encrypt --start
# --create 表示创建的连接(VPN账号)名称
# --encrypt 表示该连接需要加密
# --start 表示创建完成后立即连接
  • 检查连接是否成功
1
2
ifconfig
# 若有ppp0(或pppN,N为数字)的信息,则表示连接成功

bash测试流量转发到VPN上是否成功

  • 首先查看当前的路由表
1
2
3
route -n
# 若其中有iface为ppp0(0可为其他数字)的,也表示VPN连接成功
# 记录第一行(默认路由)的Gateway为ddd.ddd.ddd.ddd,以备用
  • 添加VPN服务为默认路由,并删除原默认路由
1
2
sudo route add default dev ppp0
sudo route del default gw ddd.ddd.ddd.ddd
  • 测试网络连接,若成功,则进行下一步

设置VPN连接后流量自动通过VPN转发

做到上步为止,已经能够正常使用网络,但VPN一旦关闭,再重新连接,会发现路由需要重新配置。故需要配置自动添加默认路由。

1
2
sudo poff tunnel_name
# tunnel_name为之前新建的VPN连接名称
  • 编辑ip-up文件实现自动设置
1
sudo vi /etc/ppp/ip-up
1
2
3
4
5
6
7
8
# Vim --INSERT--
# if VPN was connected, config default route to VPN
case "$1" in
ppp0)
/sbin/route add default dev ppp0
;;
*)
esac
  • 连接VPN并测试是否能够直接访问网络
1
sudo pon tunnel_name

至此应该可以简单地通过一句命令访问网络,若希望能够开机自动连接VPN,则将上面的命令添加到/etc/rc.local文件中即可。


本文为chenqp7原创博文,转载请注明出处:
http://blog.csdn.net/chenqp7/article/details/50505924

坚持原创技术分享,您的支持将鼓励我继续创作!

热评文章