• Debian 8(Jessie) 安装pptp-linux (PPTP客户端), 以及route命令说明


    命令, 这里定义这个pptp的连接名称为hcoffice

    #安装
    sudo apt-get install pptp-linux
    #用户名和口令
    sudo vim /etc/ppp/chap-secrets 
    #连接参数
    sudo vim /etc/ppp/peers/hcoffice
    #启动后添加路由
    sudo vim /etc/ppp/ip-up.d/hcoffice
    #设置为可执行
    sudo chmod a+x /etc/ppp/ip-up.d/hcoffice

    用户名和口令, 如果没有domain的, "domain\"可以不用加

    # Secrets for authentication using CHAP
    # client        server  secret                  IP addresses
    domain\username   PPTP    password      *

    连接参数, 可以用域名也可以用IP, 然后是用户名, 最后的ipparam的值, 和文件名一致

    pty "pptp 119.254.90.16 --nolaunchpppd"
    name username
    remotename PPTP
    require-mppe-128
    file /etc/ppp/options.pptp
    ipparam hcoffice

    启动后路由添加

    #!/bin/bash
    
    # This script is called with the following arguments:
    # Arg Name
    # $1 Interface name
    # $2 The tty
    # $3 The link speed
    # $4 Local IP number
    # $5 Peer IP number
    # $6 Optional ``ipparam'' value foo
    /sbin/route add -net 192.168.1.0 netmask 255.255.255.0 dev $1

    注意: 这个192.168.1.0 netmask 255.255.255.0意思是, 如果遇上了目标是这类地址的请求, 都转向到dev $1, 这个$1实际上会被替换为ppp0或ppp1等.

    连接的启动和关闭

    #启动
    sudo pon hcoffice
    #带debug输出的启动, 会阻塞
    sudo pon hcoffice debug dump logfd 2 nodetach
    #关闭
    sudo poff hcoffice

    关于route命令的简单说明

    为了让设备能访问另一个子网,需要在设备里增加路由到子网络,下面是一些资料。基本操作如下:

    一般来说,都是为了能访问别的子网才设置路由的,比如说,你的主机处于192.168.10.0/24,而你想访问192.168.20.0/24网的主机,当然你知道一个网关IP,例如192.168.10.1(必须和你主机处于同一子网),那么,你可以这样配置路由。

    添加路由

    route add -net 192.168.20.0 netmask 255.255.255.0 gw 192.168.10.1

    查看路由状态

    route -n

    删除路由

    route del -net 192.168.20.0 netmask 255.255.255.0

    两部主机之间一定要有路由才能够互通 TCP/IP 的协定,否则就无法进行连线啊!一般来说,只要有网路介面,该介面就会产生一个路由,例如在鸟哥实验室内部的主机有一个 eth0 及 lo ,所以:
    [root@linux ~]# route [-nee]
    [root@linux ~]# route add [-net|-host] [网域或主机] netmask [mask] [gw|dev]
    [root@linux ~]# route del [-net|-host] [网域或主机] netmask [mask] [gw|dev]
    观察的参数:
       -n  :不要使用通讯协定或主机名称,直接使用 IP 或 port number
       -ee :使用更详细的资讯来显示
       -net    :表示后面接的路由为一个网域;
       -host   :表示后面接的为连接到单部主机的路由;
       netmask :与网域有关,可以设定 netmask 决定网域的大小;
       gw      gateway 的简写,后续接的是 IP 的数值喔,与 dev 不同;
       dev     :如果只是要指定由那一块网路卡连线出去,则使用这个设定,后面接 eth0 
    范例一:单纯的观察路由状态

    [root@linux ~]# route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    192.168.10.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
    169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0
    0.0.0.0         192.168.10.30   0.0.0.0         UG    0      0        0 eth0
    [root@linux ~]# route
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    192.168.10.0    *               255.255.255.0   U     0      0        0 eth0
    169.254.0.0     *               255.255.0.0     U     0      0        0 eth0
    default         server.cluster      0.0.0.0         UG    0      0        0 eth0

    由上面的例子当中仔细观察 route 与 route -n 的输出结果,你可以发现有加 -n参数的主要是显示出 IP ,至于使用 route 而已的话,显示的则是『主机名称』喔!也就是说,在预设的情况下, route 会去找出该 IP 的主机名称,如果找不到呢?就会显示的钝钝的(有点小慢),所以说,鸟哥通常都直接使用 route -n 啦!由上面看起来,我们也知道 default = 0.0.0.0/0.0.0.0 ,而上面的资讯有哪些你必须要知道的呢?

    · Destination, Genmask:这两个玩意儿就是分别是 network netmask 啦!所以这两个咚咚就组合成为一个完整的网域囉!

    · Gateway:该网域是通过那个 gateway 连接出去的? 如果显示 0.0.0.0 表示该路由是直接由本机传送,亦即可以透过区域网路的 MAC 直接传讯;如果有显示 IP 的话,表示该路由需要经过路由器 (通讯闸的帮忙才能够传送出去。

    · Flags:总共有多个旗标,代表的意义如下:                        

    o U (route is up):该路由是启动的;                       

    o H (target is a host):目标是一部主机 (IP) 而非网域;                       

    o G (use gateway):需要透过外部的主机 (gateway) 来转递封包;                       

    o R (reinstate route for dynamic routing):使用动态路由时,恢复路由资讯的旗标;                       

    o D (dynamically installed by daemon or redirect):已经由服务或转 port 功能设定为动态路由                       

    o M (modified from routing daemon or redirect):路由已经被修改了;                       

    o !  (reject route):这个路由将不会被接受(用来抵挡不安全的网域!)

    · Iface:这个路由传递封包的介面。

    此外,观察一下上面的路由排列顺序喔,依序是由小网域(192.168.10.0/24 是 Class C),逐渐到大网域(169.254.0.0/16 Class B) 最后则是预设路由 (0.0.0.0/0.0.0.0)。然后当我们要判断某个网路封包应该如何传送的时候,该封包会经由这个路由的过程来判断喔!举例来说,我上头仅有三个路由,若我有一个传往 192.168.10.20 的封包要传递,那首先会找 192.168.10.0/24 这个网域的路由,找到了!所以直接由 eth0 传送出去;如果是传送到 Yahoo 的主机呢? Yahoo 的主机 IP 是 202.43.195.52,我通过判断 

    1)不是 192.168.10.0/24
    2)不是 169.254.0.0/16 结果到达 
    3)0/0 时,
    OK!传出去了,透过 eth0 将封包传给 192.168.10.30那部 gateway 主机啊!所以说,路由是有顺序的。因此当你重复设定多个同样的路由时,例如在你的主机上的两张网路卡设定为相同网域的 IP 时,会出现什么情况?会出现如下的情况:

    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    192.168.10.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
    192.168.10.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1

    也就是说,由于路由是依照顺序来排列与传送的,所以不论封包是由那个介面 (eth0, eth1) 所接收,都会由上述的 eth0 传送出去,所以,在一部主机上面设定两个相同网域的 IP 本身没有什么意义!有点多此一举就是了。除非是类似虚拟主机 (Xen, VMware 等软体所架设的多主机时,才会有这个必要~

    范例二:路由的增加与删除

    [root@linux ~]# route del -net 169.254.0.0 netmask 255.255.0.0 dev eth0
    # 上面这个动作可以删除掉 169.254.0.0/16 这个网域!
    # 请注意,在删除的时候,需要将路由表上面出现的资讯都写入
    # 包括  netmask , dev 等等参数喔!注意注意
    [root@linux ~]# route add -net 192.168.100.0 netmask 255.255.255.0 dev eth0
    # 透过 route add 来增加一个路由!请注意,这个路由必须要能够与你互通。
    # 举例来说,如果我下达底下的指令就会显示错误:
    # route add -net 192.168.200.0 netmask 255.255.255.0 gw 192.168.200.254
    # 因为我的环境内仅有 192.168.10.100 这个 IP ,所以不能与 192.168.200.254
    # 这个网段直接使用 MAC 互通!这样说,可以理解喔!?
    [root@linux ~]# route add default gw 192.168.10.30
    # 增加预设路由的方法!请注意,只要有一个预设路由就够了喔!
    # 在这个地方如果您随便设定后,记得使用底下的指令重新设定你的网路
    # /etc/init.d/network restart

    如果是要进行路由的删除与增加,那就得要参考上面的例子了,其实,使用 man route 里面的资料就很丰富了!仔细查阅一下囉!你只要记得,当出现『SIOCADDRT: Network is unreachable』这个错误时,肯定是由于 gw 后面接的 IP 无法直接与您的网域沟通 (Gateway 并不在你的网域内),所以,赶紧检查一下是否输入错误啊!加油吧!

    # route 命令添加的路由,机器重启或者网卡重启后就没掉了,在linux下设置永久路由的方法:

    1.在/etc/rc.local里添加
    2.在/etc/sysconfig/network里添加到末尾
    3./etc/sysconfig/static-router :
    any net x.x.x.x/24 gw y.y.y.y

  • 相关阅读:
    【基础算法】- 全排列
    【基础算法】- 2分查找
    区块链培训
    Static Binding (Early Binding) vs Dynamic Binding (Late Binding)
    test
    No data is deployed on the contract address!
    "throw" is deprecated in favour of "revert()", "require()" and "assert()".
    Variable is declared as a storage pointer. Use an explicit "storage" keyword to silence this warning.
    京都行
    Failed to write genesis block: database already contains an incompatible
  • 原文地址:https://www.cnblogs.com/milton/p/4513474.html
Copyright © 2020-2023  润新知