无来

不管你来还是不来
我都在这里,夜夜点亮
不是为了守候
只是为了做好我自己

0%

后踢腿训练和高抬腿训练 http://v.youku.com/v_show/id_XMzA0Njc4OTQ0.html

慢速高抬腿

http://v.youku.com/v_show/id_XMzA0Njc4ODg0.html

掌握正确跑步姿势 http://v.youku.com/v_show/id_XMzA0Njc4Nzky.html

头部基准 http://v.youku.com/v_show/id_XMzA0Njc4NzUy.html

动态拉伸训练 http://v.youku.com/v_show/id_XMzA0Njc4NjIw.html

中速高抬腿训练 http://v.youku.com/v_show/id_XMzA0Njc4NTUy.html

臂部基准 http://v.youku.com/v_show/id_XMzA0Njc4NTc2.html

长距离间歇跑训练 http://v.youku.com/v_show/id_XMzA0Njc4NTA4.html

提高成绩的冲刺练习 http://v.youku.com/v_show/id_XMzA0Njc4NDMy.html

短距离间歇跑训练 http://v.youku.com/v_show/id_XMzA0Njc4MzQ0.html

节奏跑 http://v.youku.com/v_show/id_XMzA0Njc4Mjk2.html

高抬腿训练 http://v.youku.com/v_show/id_XMzA0Njc4MjY0.html

马拉松模拟训练 http://v.youku.com/v_show/id_XMzA0Njc4MjI0.html

直腿交叉曲腿交叉与跑步 http://v.youku.com/v_show/id_XMzA0Njc4MTQw.html

速度 = 步频 × 步幅,一条极为简单而又冰冷的公式。

要跑得快,你可以提高步频,或者加大步幅,或者两者兼有,貌似很简单。但是这个问题,已经被反复讨论了几十年,主要在于,步频与步幅,是两个相互制约的因素。你很难完全撇开一个因素,谈论如何改进另一个因素。

你一步两米顶人家两步,人家却可以小鸡啄米似的怎么也甩不掉,正是说明了步幅与步频的对立关系。如果你既大步流星,同时也小鸡啄米,那恭喜你,实力上了两个台阶不止,冲300去的。

那我想跑的快,增加哪个更有效呢?先来看看顶尖运动员是怎么跑的:

2007年的世锦赛万米,贝克勒(万米世界记录保持者)与Mathathi以同样的速度跑了前面九千米。贝克勒身高1.63米,步频190/分钟。在最后的一公里冲刺阶段,他的步幅不变,步频提高到惊人的216/分钟,一举摘金。Mathathi身高1.7米,步频接近200/分钟,在最后冲刺阶段,加大了步幅,步频反而下降,维持速度不变(后来他表示最后没有提速,是疲劳所致)。

而女子万米记录保持者王军霞,则是典型的全程高频率跑法,她的平均步频达到209/分钟。在冲刺阶段,她一般采用加大步幅,步频不变的方式。

上述例子说明,首先,专业运动员的步频都很高。而且,他们可以根据需要调节步频/步幅的节奏。

那么,业余跑者,应该怎么跑呢?

运动生化检测表明,长跑运动员在同一速度下用不同的步频步幅跑步时,摄氧水平呈现U型,既过高和过低的步频都会增加摄氧水平。也就是说,对某个运动员,确实存在着最经济的步频。欧美的跑风盛行,跑步教材多如牛毛,他们经常提到一个“标准步频”:180/分钟。他们宣称,达到或接近这个步频,是每一个长跑者应该改进的技术。据我自己观察,大部分业余跑者的步频达不到这个数字,包括一些全马进了二级的快马。业余跑者中普遍存在的一个问题,就是过大的步幅,把步频限制在不经济的低水平,同时也带来伤痛增加等其他负面作用。

【步幅过大】

我们需要先对“步幅过大”进行定义。所谓步幅过大,就是如图这样右侧的跑法:过度前伸的小腿,打直的膝盖,脚跟的重落地。不幸的是,这样的跑法实在太常见。

而合适的步幅,则应该是如图左侧的跑法:中前掌落地,落地点靠近重心,主动下压、扒地。

enter image description here

步幅过大的坏处是显而易见的:明显的刹车作用,过长的支撑时间,完全抵消了大步幅带来的好处;还显著增加的震动的传导。

事实上,扒地与后蹬动作中的向前分量,是跑步前进的唯一动力。任何跑步技术的改进,都必须针对如何加强这个唯一动力。极端的例子如短跑,步幅是所有跑步中最大的,但是他的落地点也是很靠近身体重心的,目的就在于避免刹车作用,尽量缩短支撑时间,并为强大的扒地与后蹬提供结构条件,如图所示,短跑运动员绝对不会把小腿打直了伸到前面去!

enter image description here

再看看顶尖长距离运动员的落地方式,无一例外,均是中前掌落地,靠近身体,折叠膝关节,主动下压。

enter image description here

再来看看定量的对比: 业余跑者,很大比例是小腿前伸,有些甚至超出15°,而专业高手多是负的角度。脚一着地即可发力,避免了被动支撑重心跟进的阶段,单足触地时间可以达到0.15秒以内。 enter image description here

步幅过大的问题,牵涉到一个大家经常讨论的另一个问题:就是中前掌落地还是脚跟落地,这个问题跑友争论激烈互不认同。我认为,只要你把落地点靠近身体,中前掌落地就是自然而言的事。而后跟落地也不是什么大不了一定要克服的习惯,只要落地点OK,就已经大大提高了跑步的效率。

至此,我的观点是,业余跑者改进跑步技术的第一步,就是避免步幅过大。

【提高步幅】

避免了步幅过大,就开始着手解决如何把步频提高170-180,或曰适合自己的经济步频。

步频与力量、神经类型相关。跑步的时候,对抗肌收缩与舒张快速交替运动,这就要求大脑皮层运动中枢的兴奋与抑制过程迅速转换。据观察,一个短跑选手,他的固有步频在年纪很小的时候就形成了,要改起来,还真不是很容易。我以前曾和体育教练前往中学选材,教练并不看百米成绩,要求进行原地高抬腿频率测试,对频率高的再进行重点关注和其他测试。这就是神经类型是短跑天赋的最大因素的道理,放到中长跑,这个素质仍然是至关重要的。

业余跑者,大多是半路出家,未受过跑步训练。要提高步频,途径之一是逐渐习惯这种快速转换,比如经常进行一些200米之类的反复冲刺跑,体会跑步的协调发力。专业马拉松运动员,一般很少进行这么短距离的练习,而跑吧佟强的计划就有此类练习,正是这个道理。

至于力量,跑步要求的不是那种深蹲之类的绝对静力量,而是运动中的协调用力。形象地说,就是要鹿的力量,不要牛的力量。要练习的途径包括高抬腿跑,后踢腿跑,不屈膝小跳上楼梯,沙地跑等等。

业余跑者的触地时间较长,下肢结构缺乏弹性,也是原因之一。如果你的下肢是一块海绵,吸收了落地的大部分震动,却没有提供力量回馈,就如跑沙地一样,当然跑不快!想跑得快,你就要提高结构的刚性,把你的下肢结构变为一个弹力球。措施包括:不要穿太软的跑鞋(保护是否足够的问题,暂不探讨),增强下肢小肌群,保持足弓的弹性等等。自由泳教练,最头痛的就是学员的脚打不直,称之为跑步脚(如图),但是这个“跑步脚”却是天然的跑步弹力装置,一触即走,绝不拖泥带水。要提高足部结构的刚性,推荐进行越野跑,你不得不随时调整步频步幅,左冲右突凌波微步,练习效果十分明显。

提高频率的时候还要注意,我们要的是放松、协调的高频,不是生硬、刻意的高频。正如最高效率的前进方式是滚动,你的双腿应该是“主动下压落地—扒地—后蹬—放松后扬—屈膝送髋”这样的过程,想象你穿上锁鞋骑自行车,双腿不是下压上提,而是随时进行圆周运动,沿切线方向发力。什么时候你跑步跑出了这种滚动的感觉,那肯定比别人要轻松!

就我自己而言,170-180的步频是很自然的状态,如果是短距离比赛,就会更高一些。所有跑友都应该测量一下自己的步频,明显低于170-180的,不妨先从提高步频做起,稍微习惯一下,你就会发现跑得更省力了。

当然,步频的提高是有限度的,限度则取决于你的神经协调性、身体结构和力量。理论上,人的肌肉1/3的最大收缩速度下运动最为高效,这相当于每分钟180-200步。

【加大步幅】

现在,你既修正了步幅过大的毛病,又习惯了高效率的步频,再想跑得更快的,那就很简单了,唯有加大步幅。什么?好不容易把步幅缩短了现在又要加大?呵呵,事物总是螺旋式上升嘛。好消息是,如能按正确方式加大步幅,你就能把以前的自己甩得老远!坏消息是,加大步幅,最难。

步幅,是力量、柔韧性、协调性的函数,其中又以力量最为关键。

加大步幅,无非是就是“积极前摆,充分送髋,快速下压,主动扒地,加强后蹬”,每一样都是以力量为基础!逐个注释如下:

1.步幅大,说明动作幅度大。前摆幅度与后蹬幅度相互制约,后蹬之后不放松,又限制大小腿折叠角度,导致前摆不充分,真是一环扣一环。

2.所谓送髋,就是以骨盆的转动带动摆腿。躯干,是几乎所有全身运动的发力核心,跑步也是如此。越来越多跑友重视核心力量,是个好现象。不跑步那天去做个飞燕、拱桥啥的,真是挺不错。不过我个人认为,动态的力量练习比静态的好,比如划船机就是个很好的核心力量的练习。

3.主动下压扒地,貌似是减小了步幅,实际却是相反,因为后蹬被加强了。后蹬是跑步动作中最主要的驱动,下压扒地就是其准备动作。后蹬越强,前进性就越好,不必要的上下跳动就越少。这里比较一下Ryan Hall与Samuel Kamau,前者大家熟知,录制了很多教学视频;后者更是超一流选手,北京奥运冠军,半马59分以内。Samuel Kamau明显矮一些,但是他的后蹬角度很恐怖(我今天贴图的额度用完了,只能文字描述下:他的后蹬摆腿达到106°,而前者是90°),两个人的步幅差不多大。Ryan Hall每步要上下跳动4英寸,一个全马下来,光累积跳高就接近80层大楼的高度。每加大1°,就能增加2%的步幅,并能有效减少滞空时间。一个马拉松几万步,累积起来不得了啊。有限的能量,必须尽量的向前、向前、再向前!

总而言之,加大步幅是一个连贯的过程,不是强调动作的某一个阶段,在任何加大步幅的尝试之前,请确认你的跑步是稳定和平衡的。加大步幅更不是单纯的蹦跶延长滞空时间,而是通过技术与身体结构的结合,比如送髋和后蹬这些来实现高而平稳的重心。老黑步幅既大,步频又快,正是这个原因。 下面这些常见的不良习惯是制约步幅加大的:

  1. 肩带肌肉紧张,上臂几乎不动,只是前臂小幅摆动。
  2. 过分强调经济性,自我限制下肢摆动幅度。
  3. 小腿过度前伸,脚跟触地时间过长,损失弹性,动力不足。
  4. 跑后不注重拉伸,韧带紧张僵硬,限制动作幅度。

日复一日地路跑,而不进行专项力量练习,自然事倍功半。要加大步幅,主要在于加强躯干和下肢力量。有强大的结构,才可以吸收震动保护关节;强大的腿部向心力量,离地腿才可以快速前摆;强大的腿部离心力量,才可以主动下压引导后蹬。总之,你要变得强大。

  1. 还是那句话,动态练优于静力练习。多组数的上台阶,跑坡,跳跃,短距离跑,都是有效途径。
  2. 有条件时不时去跑一次越野路面,更是可以全面均衡发展。
  3. 跑步机,就是最好的跑坡(没有下坡跑的伤害,稳定而持续的坡度,可以调节)。
  4. 交叉训练必不可少,推荐网球(急停急起、、反复冲刺、腰腹发力),足球篮球不推荐(强对抗容易受伤,养伤太久)。

1、 腓肠肌

拉长或伸展小腿后方的腓肠肌和比目鱼肌。

  • 开始姿势

右脚在前,身体呈“半冲刺”姿势,面对或背对墙站立。脚应该平行站立且保持与髋同宽,手扶在墙上。

enter image description here

2、 伸展比目鱼肌

像腓肠肌伸展运动的开始姿势一样站立,但稍屈后膝,从而加强对后腿比目鱼肌的伸展。

enter image description here

3、 股四头肌

拉长或伸展股四头肌的前侧肌肉。如果臀部是倾斜着向前,这种方法也可以伸展臀部的屈肌。

  • 开始姿势和伸展运动

左脚站立,扶墙或依靠同伴保持身体平衡,如果需要的话,右腿弯曲,并用右手握住踝关节,用力使脚后跟尽量靠近臀大肌,持续一段时间(可用自己的手提高动作的幅度)。换右脚做相同的动作。通过伸展运动,保证奔跑时提臀,还可以发展股四头肌后侧部分。

enter image description here

4、 大腿内侧内收肌

拉长或伸展大腿内侧内收肌的肌肉。

  • 开始姿势和伸展运动

坐在地上,挺直后背。如果需要的话,背靠着一面墙。两只脚的脚底相对,让膝盖上部逐渐靠近墙,直到你的大腿内侧和腹股沟得到完全的伸展为止。双手不仅能放在背后的地面上,帮助保持脊椎骨垂直的姿势;而且还能习惯压你的双膝内侧,以些增加伸展的力度(这种伸展活动可供选择的办法是增加你大腿的宽度和垂直度,并通过施加在膝盖内侧的压力使腿与手更容易分开)。

enter image description here

5、 跟腱(大腿后面的跟腱)

拉长或伸展大腿后面跟腿。

  • 开始姿势和伸展运动

上体正直坐在地板上,伸出右腿放在体前--但膝关节不能完全“锁住”。左腿弯曲且稍微外展。从臀部向前弯曲,直到感觉右大腿后面的肌肉伸长。当轻轻地向前倾斜时,腰要挺直,头部保持不动,重复另外一侧。你也可以站着,把一条腿搁在膝盖高度的长凳上做这个锻炼。

enter image description here

6、臀大肌

拉长或伸展臀部肌肉

  • 开始姿势和伸展运动

躺在地板上左腿伸直,或者坐在地板上挺直后背,左腿伸直,右腿弯曲越过左腿,并与左腿交叉,脚尽可能舒适地靠近身体。用你的左臂裹住右腿。膝盖向身体靠拢直到感到右侧臀大肌被伸展。保持一会儿,然后重复另一侧。

enter image description here

7、髂腰肌

拉长或伸展髂腰肌--从骨盆和腰脊柱直到大腿骨前面的肌肉。

  • 开始姿势和伸展运动

跪在地面上,右腿成弓步姿势,大腿与地面保持平行,左腿的膝关节跪在地面上。按压臀部直至感觉到伸展为止。为了保持身体平衡,可以把手放在臀部上、右膝上或地面上。保持向上提腰,上体挺直,然后,换另一侧做同样的动作。

enter image description here

1、错误信息

Running "karma:unit" (karma) task
INFO [karma]: Karma v0.12.37 server started at http://localhost:9876/
INFO [launcher]: Starting browser PhantomJS
ERROR [launcher]: Cannot start PhantomJS

INFO [launcher]: Trying to start PhantomJS again (1/2).
ERROR [launcher]: Cannot start PhantomJS

INFO [launcher]: Trying to start PhantomJS again (2/2).
ERROR [launcher]: Cannot start PhantomJS

ERROR [launcher]: PhantomJS failed 2 times (cannot start). Giving up.
Warning: Task "karma:unit" failed. Used --force, continuing.

Done, but with warnings.

2、系统ubuntu 14.04

3、解决方案

sudo apt-get install libfontconfig

# Install gem sass for grunt-contrib-sass
RUN apt-get update -qq && apt-get install -y build-essential
RUN apt-get install -y ruby
RUN gem install sass

1.进入root权限

sudo su


## 2.停止所有的container,这样才能够删除其中的images:

docker stop $(docker ps -a -q)


如果想要删除所有container的话再加一个指令:

docker rm $(docker ps -a -q)


## 3.查看当前有些什么images

docker images


## 4.删除images,通过image的id来指定删除谁

docker rmi <image id>


想要删除untagged images,也就是那些id为<None>的image的话可以用

docker rmi $(docker images | grep "^<none>" | awk "{print $3}")


要删除全部image的话

docker rmi $(docker images -q)

1. 查看docker信息(version、info)

# 查看docker版本  
$docker version  

# 显示docker系统的信息  
$docker info  

2. 对image的操作(search、pull、images、rmi、history)

# 检索image  
$docker search image_name  

# 下载image  
$docker pull image_name  

# 列出镜像列表; -a, --all=false Show all images; --no-trunc=false Don't truncate output; -q, --quiet=false Only show numeric IDs  
$docker images  

# 删除一个或者多个镜像; -f, --force=false Force; --no-prune=false Do not delete untagged parents  
$docker rmi image_name  

# 显示一个镜像的历史; --no-trunc=false Don't truncate output; -q, --quiet=false Only show numeric IDs  
$docker history image_name  

3. 启动容器(run)

docker容器可以理解为在沙盒中运行的进程。这个沙盒包含了该进程运行所必须的资源,包括文件系统、系统类库、shell 环境等等。但这个沙盒默认是不会运行任何程序的。你需要在沙盒中运行一个进程来启动某一个容器。这个进程是该容器的唯一进程,所以当该进程结束的时候,容器也会完全的停止。
# 在容器中运行"echo"命令,输出"hello word"  
$docker run image_name echo "hello word"  

# 交互式进入容器中  
$docker run -i -t image_name /bin/bash  

# 在容器中安装新的程序  
$docker run image_name apt-get install -y app_name  


`Note:` 在执行apt-get 命令的时候,要带上-y参数。如果不指定-y参数的话,apt-get命令会进入交互模式,需要用户输入命令来进行确认,但在docker环境中是无法响应这种交互的。apt-get 命令执行完毕之后,容器就会停止,但对容器的改动不会丢失。

4. 查看容器(ps)

# 列出当前所有正在运行的container  
$docker ps  
# 列出所有的container  
$docker ps -a  
# 列出最近一次启动的container  
$docker ps -l  

5. 保存对容器的修改(commit)

当你对某一个容器做了修改之后(通过在容器中运行某一个命令),可以把对容器的修改保存下来,这样下次可以从保存后的最新状态运行该容器。

# 保存对容器的修改; -a, --author="" Author; -m, --message="" Commit message  
$docker commit ID new_image_name  


`Note:` image相当于类,container相当于实例,不过可以动态给实例安装新软件,然后把这个container用commit命令固化成一个image。

6. 对容器的操作(rm、stop、start、kill、logs、diff、top、cp、restart、attach)

# 删除所有容器  
$docker rm `docker ps -a -q`  

# 删除单个容器; -f, --force=false; -l, --link=false Remove the specified link and not the underlying container; -v, --        volumes=false Remove the volumes associated to the container  
$docker rm Name/ID  

# 停止、启动、杀死一个容器  
$docker stop Name/ID  
$docker start Name/ID  
$docker kill Name/ID  

# 从一个容器中取日志; -f, --follow=false Follow log output; -t, --timestamps=false Show timestamps  
$docker logs Name/ID  

# 列出一个容器里面被改变的文件或者目录,list列表会显示出三种事件,A 增加的,D 删除的,C 被改变的  
$docker diff Name/ID  

# 显示一个运行的容器里面的进程信息  
$docker top Name/ID  

# 从容器里面拷贝文件/目录到本地一个路径  
$docker cp Name:/container_path to_path  
$docker cp ID:/container_path to_path  

# 重启一个正在运行的容器; -t, --time=10 Number of seconds to try to stop for before killing the container, Default=10  
$docker restart Name/ID  

# 附加到一个运行的容器上面; --no-stdin=false Do not attach stdin; --sig-proxy=true Proxify all received signal to the process  
$docker attach ID  


`Note:` attach命令允许你查看或者影响一个运行的容器。你可以在同一时间attach同一个容器。你也可以从一个容器中脱离出来,是从CTRL-C。

7. 保存和加载镜像(save、load)

当需要把一台机器上的镜像迁移到另一台机器的时候,需要保存镜像与加载镜像。

# 保存镜像到一个tar包; -o, --output="" Write to an file  
$docker save image_name -o file_path  
# 加载一个tar包格式的镜像; -i, --input="" Read from a tar archive file  
$docker load -i file_path  

# 机器a  
$docker save image_name > /home/save.tar  
# 使用scp将save.tar拷到机器b上,然后:  
$docker load < /home/save.tar  

8、 登录registry server(login)

# 登陆registry server; -e, --email="" Email; -p, --password="" Password; -u, --username="" Username  
$docker login  

9. 发布image(push)

# 发布docker镜像  
$docker push new_image_name  

10. 根据Dockerfile 构建出一个容器

#build  
  --no-cache=false Do not use cache when building the image  
  -q, --quiet=false Suppress the verbose output generated by the containers  
  --rm=true Remove intermediate containers after a successful build  
  -t, --tag="" Repository name (and optionally a tag) to be applied to the resulting image in case of success  
$docker build -t image_name Dockerfile_path

1、安装pptp客户端软件

~ sudo apt-get install pptp-linux

2、查看网络配置

~ ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:27:90:e8:19
          inet addr:192.168.1.200  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe90:e819/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:74 errors:0 dropped:0 overruns:0 frame:0
          TX packets:64 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:8112 (8.1 KB)  TX bytes:8542 (8.5 KB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

~ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

~ ip route
default via 192.168.1.1 dev eth0  metric 100
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.200

3、初始化一个VPN的连接通道:myvpn

~ sudo pptpsetup --create myvpn --server xxx.xxx.xxx.xxx --username xx1--password xx2--encrypt --start

Using interface ppp0
Connect: ppp0  /dev/pts/1
CHAP authentication succeeded
MPPE 128-bit stateless compression enabled
local  IP address 10.10.10.3
remote IP address 10.10.10.1

成功连接到远程VPN服务器。

  • 通过刚才的创建脚步:
  • 在/etc/ppp/peers目录下面,会生成一个叫myvpn的文件。
  • 在/etc/ppp目录下面,用户名和密码会写在chap-secrets文件中。

4、

~ sudo vi /etc/ppp/peers/myvpn

# written by pptpsetup
pty "pptp xxx.xxx.xxx.xxx --nolaunchpppd"
lock
noauth
nobsdcomp
nodeflate
name conan2
remotename myvpn
ipparam myvpn
require-mppe-128

#生成用户名和密码
~ sudo vi /etc/ppp/chap-secrets
xx1 myvpn "xx2" *

5、通过网站路由功能,测试VPN

# 安装traceroute

~ sudo apt-get install traceroute

~ traceroute www.163.com
traceroute to www.163.com (101.23.128.17), 30 hops max, 60 byte packets
 1  localhost (192.168.1.1)  2.222 ms  3.144 ms  3.132 ms
 2  111.192.144.1 (111.192.144.1)  80.279 ms  80.632 ms  80.624 ms
 3  61.148.185.69 (61.148.185.69)  9.026 ms  9.492 ms  9.479 ms
 4  124.65.61.157 (124.65.61.157)  9.469 ms  9.459 ms  9.447 ms
 5  202.96.12.185 (202.96.12.185)  9.829 ms  9.783 ms  9.771 ms
 6  219.158.96.110 (219.158.96.110)  17.160 ms  17.210 ms  17.158 ms
 7  61.182.176.178 (61.182.176.178)  30.222 ms  28.589 ms  28.077 ms
 8  60.5.194.58 (60.5.194.58)  29.293 ms  29.287 ms  29.276 ms
 9  60.5.197.214 (60.5.197.214)  26.617 ms  26.724 ms  26.668 ms
10  101.23.255.45 (101.23.255.45)  27.672 ms  28.147 ms  26.811 ms
11  101.23.128.17 (101.23.128.17)  25.890 ms  28.065 ms  28.420 ms

我们发现虽然VPN已经连接成功,但是路由没有通过VPN上网,第1跳还是localhost (192.168.1.1)

再次查看网络连接配置

~ ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:27:90:e8:19
          inet addr:192.168.1.200  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe90:e819/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:175 errors:0 dropped:0 overruns:0 frame:0
          TX packets:162 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:16817 (16.8 KB)  TX bytes:19723 (19.7 KB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

ppp0      Link encap:Point-to-Point Protocol
          inet addr:10.10.10.3  P-t-P:10.10.10.1  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1496  Metric:1
          RX packets:7 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:70 (70.0 B)  TX bytes:76 (76.0 B)

~ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eth0
10.10.10.1      0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
50.116.27.194   192.168.1.1     255.255.255.255 UGH   0      0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

~ ip route
default via 192.168.1.1 dev eth0  metric 100
10.10.10.1 dev ppp0  proto kernel  scope link  src 10.10.10.3
50.116.27.194 via 192.168.1.1 dev eth0  src 192.168.1.200
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.200

我们发现默认路由是指向eth0。

下面修改路由配置:

#修改路由命令
~ sudo ip route del default
~ sudo ip route add default dev ppp0

~ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 ppp0
10.10.10.1      0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
50.116.27.194   192.168.1.1     255.255.255.255 UGH   0      0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

~ ip route
default dev ppp0  scope link
10.10.10.1 dev ppp0  proto kernel  scope link  src 10.10.10.3
50.116.27.194 via 192.168.1.1 dev eth0  src 192.168.1.200
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.200

~ traceroute www.163.com
traceroute to www.163.com (101.23.128.17), 30 hops max, 60 byte packets
 1  localhost (10.10.10.1)  281.093 ms  281.414 ms  280.941 ms
 2  router2-dal.linode.com (67.18.7.162)  281.225 ms  281.109 ms  281.841 ms
 3  xe-2-0-0.car04.dllstx2.networklayer.com (67.18.7.93)  280.882 ms  284.002 ms  283.913 ms
 4  po102.dsr01.dllstx2.networklayer.com (70.87.254.81)  284.123 ms  284.087 ms  283.979 ms
 5  po21.dsr01.dllstx3.networklayer.com (70.87.255.65)  284.000 ms  283.921 ms  283.839 ms
 6  ae16.bbr01.eq01.dal03.networklayer.com (173.192.18.224)  283.542 ms  279.296 ms  290.455 ms
 7  dls-bb1-link.telia.net (213.248.102.173)  301.426 ms  302.092 ms  302.085 ms
 8  las-bb1-link.telia.net (213.155.131.77)  327.192 ms  327.350 ms  327.344 ms
 9  chinaunicom-ic-151188-las-bb1.telia.net (213.248.94.126)  478.941 ms  479.089 ms  479.083 ms
10  219.158.30.173 (219.158.30.173)  496.679 ms  496.673 ms  496.667 ms
11  219.158.97.57 (219.158.97.57)  516.819 ms  517.035 ms  517.011 ms
12  219.158.5.129 (219.158.5.129)  491.084 ms  490.018 ms  497.472 ms
13  219.158.100.130 (219.158.100.130)  518.239 ms  518.216 ms  518.192 ms
14  61.182.176.186 (61.182.176.186)  533.695 ms  533.673 ms  533.666 ms
15  101.23.255.230 (101.23.255.230)  512.212 ms  512.500 ms  512.479 ms
16  60.5.194.74 (60.5.194.74)  519.246 ms  519.815 ms  519.791 ms
17  101.23.255.45 (101.23.255.45)  526.522 ms  526.907 ms  526.844 ms
18  101.23.128.17 (101.23.128.17)  522.068 ms  517.535 ms  517.240 ms

查看第一跳,localhost (10.10.10.1),已经通过VPN实现路由。

停止VPN

~ sudo poff myvpn

~ ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:27:90:e8:19
          inet addr:192.168.1.200  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe90:e819/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2270 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1991 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:207578 (207.5 KB)  TX bytes:184147 (184.1 KB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

再ping网站,发现网络出现问题。Network is unreachable

~ ping www.163.com
connect: Network is unreachable

~ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
50.116.27.194   192.168.1.1     255.255.255.255 UGH   0      0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

~ ip route
50.116.27.194 via 192.168.1.1 dev eth0  src 192.168.1.200
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.200

    ~ sudo ip route add default via 192.168.1.1

    ~ route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
    50.116.27.194   192.168.1.1     255.255.255.255 UGH   0      0        0 eth0
    192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

    ~ ip route
    default via 192.168.1.1 dev eth0
    50.116.27.194 via 192.168.1.1 dev eth0  src 192.168.1.200
    192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.200

    #再次ping网站,访问成功!
    ~ ping www.163.com
    PING 163.xdwscache.glb0.lxdns.com (101.23.128.17) 56(84) bytes of data.
    64 bytes from 101.23.128.17: icmp_req=1 ttl=54 time=25.6 ms
    64 bytes from 101.23.128.17: icmp_req=2 ttl=54 time=25.5 ms
    64 bytes from 101.23.128.17: icmp_req=3 ttl=54 time=27.8 ms

通过ip-up, ip-down配置路由 ~ sudo vi /etc/ppp/ip-up.d/route-traffic

#!/bin/bash
/sbin/ip route add 50.116.27.194 via 192.168.1.1
/sbin/ip route del default
/sbin/ip route add default dev ppp0

~ sudo vi /etc/ppp/ip-down.d/disableroute

#!/bin/bash
/sbin/ip route add default via 192.168.1.1

重启VPN连接

~ sudo pon myvpn
#路由跟踪正确
~ traceroute www.163.com
traceroute to www.163.com (123.125.34.30), 30 hops max, 60 byte packets
 1  localhost (10.10.10.1)  293.397 ms  293.782 ms  293.668 ms
 2  router2-dal.linode.com (67.18.7.162)  293.530 ms  293.721 ms  294.223 ms
 3  xe-2-0-0.car04.dllstx2.networklayer.com (67.18.7.93)  293.454 ms  293.358 ms  293.239 ms
 4  po102.dsr02.dllstx2.networklayer.com (70.87.254.85)  293.749 ms  293.650 ms  293.544 ms
 5  po22.dsr02.dllstx3.networklayer.com (70.87.255.69)  293.444 ms  293.339 ms  293.242 ms
 6  ae17.bbr02.eq01.dal03.networklayer.com (173.192.18.230)  293.117 ms  293.525 ms  300.406 ms
 7  dls-bb1-link.telia.net (80.239.195.177)  300.850 ms  300.667 ms  300.320 ms

#正常退出
~ sudo poff myvpn
#测试网络连接正常
~ ping www.163.com
PING 163.xdwscache.glb0.lxdns.com (101.23.128.17) 56(84) bytes of data.
64 bytes from 101.23.128.17: icmp_req=1 ttl=54 time=28.2 ms
64 bytes from 101.23.128.17: icmp_req=2 ttl=54 time=28.1 ms