文章标题
来源:互联网 发布:ios 小游戏源码 编辑:程序博客网 时间:2024/05/20 14:23
Ubuntu命令行下VPN连接与使用
route add default dev ppp0
route add -net 192.168.2.0 netmask 255.255.255.0 ppp0
1)先安装VPN客户端
sudoapt-getinstall pptp-linux
2)命令行下拨号连接VPN服务器
sudo pptpsetup –create testvpn –server 123.45.67.88 –username kk –password fku –encrypt –start
–create 后的是创建的连接名称,可以为任意名称;
–server 后接的是vpn服务器的IP;
–username 是用户名
–password 是密码,在这也可以没这个参数,命令稍后会自动询问。这样可以保证账号安全
–encrypt 是表示需要加密,不必指定加密方式,命令会读取配置文件中的加密方式
–start 是表示创建连接完后马上连接,如果你不想连,就不写
3)以后要连接VPN或断开VPN
pon testvpn <– VPN的“连接名称”
poff <– 断开VPN连接
4)全部流量走VPN通道
把下面两行加入 /etc/ppp/ip-up 中或者直接命令行输入也行,删除默认网关及把 VPN 服务器作为默认网关,也就是改变路由策略,把所以传输流量通过 VPN 线路来走。
route add default gw 192.168.0.1
route del default gw 原来的网关 // 原来的默认网关地址可通过 route 命令来获取
最近换的新电脑,桌面环境换成了cinnamon,网络管理器自然放弃了connman,转到了NetworkManager,也不知道这个管理器什么状况,一直显示正在连接到网络的状态,根本无法使用VPN连接,于是我就尝试用命令行连接VPN,这样即使连接失败,还能查看详细的错误信息。
首先需要安装Linux下的pptp客户端(这里我是搭建了pptp的VPN服务器):
sudo pacman -Syu pptpclient
然后需要创建一个新的VPN连接:
sudo pptpsetup –create name –server server –username username –password password –encrypt –start
这里几个参数的含义如下:
name参数是VPN的名称,下次连接的时候会用到
server可以接受域名或者IP地址,就是VPN服务器的地址
username表示VPN的用户名
password表示VPN的密码
–encrypt表示加密,如果你不是很清楚就写上吧,一般都有这个
–start表示立即连接VPN
这里创建成功后,我们以后可以使用
sudo pon name
来启动VPN,用
sudo poff name
来停用VPN
连接成功后,使用ip addr命令可以查看到我们多了一个网络接口,名字为ppp0(如果只连接了一个VPN),如果连接成功,这个接口应该已经有IP地址了,但是这样还没办法上网,因为现在网络流量并不通过这个接口出去,我们需要更改一下Linux的路由表,把所有的流量通过这个接口出去,首先我们可以看一下路由表:
sudo route -n
应该是没有ppp0接口相关信息的,我们这个时候如果上查询IP的网站,还会发现自己的IP是原本的IP,我们需要添加一下路由信息,这样,所有的流量就通过这个ppp0接口出去了,这样很偷懒~~
sudo route add -net 0.0.0.0 netmask 0.0.0.0 dev ppp0
这样写就代表所有流量都从ppp0出去,当关闭VPN连接的时候,要删除这条路由信息,否则可能无法上网
sudo route del -net 0.0.0.0 netmask 0.0.0.0 dev ppp0
我个人对于网络地址,子网掩码什么的不是很感冒,这么写只是能用,如果有纰漏或者更好的路由设置方法,还请留言指出。
- 文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题 文章标题 文章标题 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- Nginx负载均衡配置实例详解
- 自己做的一个多线程在线音乐播放器,能下载MultiThreadPlayMusic
- 【ios开发学习】Cocoa 新的依赖管理工具:Carthage
- getMeasuredWidth()和getWidth()
- iOS图片旋转问题
- 文章标题
- Rust语言学习笔记(1)
- jQuery.extend 函数详解
- 理解AOP
- Spring+Hibernate+Atomikos集成构建JTA的分布式事务--解决多数据源跨库事务
- MYSQL 区分大小写及乱码解决
- GT9xx系列------从lk里传递gpio的value到kernel中
- 微软Build 2016两天Keynote干货汇总
- mysql中can't find mysql.sock 问题解决