精华内容
下载资源
问答
  • linux路由器

    2015-04-20 21:43:00
    在tcp/ip网络中,路由是一个非常重要的概念,所谓路由,就是通过互联的网络把信息从原地址传输到目的地址路由器的原理 路由器的原理非常的复杂。一般情况下,网络中的主机,路由器和交换机都具有路由的功能。...

    在tcp/ip网络中,路由是一个非常重要的概念,所谓路由,就是通过互联的网络把信息从原地址传输到目的地址。

    路由器的原理

    路由器的原理非常的复杂。一般情况下,网络中的主机,路由器和交换机都具有路由的功能。这些设备收到数据包之后,要根据IP数据包的目标地址,决定选择

    那个网络接口把数据包传送出去。如果路由器的某个网络接口与IP数据包的目的主机位于同一个局域网,则可以直接通过该接口把数据包传送到目的主机;如果目的主机

    与路由器不位于同一个局域网中,则路由器会根据目的地址来选择另一台合适的路由器,再从某个网络接口把数据包发送出去。

    注意:由于路由是在网络层的功能,所以只有工作在网络层的交换机才具有路由功能。只能工作在数据链路层的交换机不具有路由功能!

    路由表

    路由表通常包含目标,网络掩码(Genmask),网关(GateWay),接口(Iface)以及跃点数等内容。其中目标可以是目标主机,子网地址,网络地址或者默认路由。通常情况下,默认路由的目标为

    0.0.0.0。当所有的路由都不匹配时,数据包将被转发给默认路由。

    网络掩码和目标主机配合使用。例如,主机路由的掩码为255.255.255.255,默认路由的掩码为0.0.0.0,子网或者网络地址的掩码位于这两者之间,其中,掩码255.255.255.255

    表示只有精确匹配的目标才使用此路由;掩码0.0.0.0表示任何目标都可以使用此路由。

    网关是数据包需要发送到下一个路由器的ip地址。接口表明用于接通下一个路由器的网络接口。跃点数(Metric)表明使用此路由到达目标的相对成本。如果有

    多个相同目标位置的路由,则跃点数最低的路由为最佳路由。

    系统管理员可以通过两种方法来配置路由表,分别为静态路由和动态路由。静态路由由系统管理员手工或者通过route命令对路由表进行配置,它不会随着网络结构

    的改变而改变。动态路由是由主机上面的某一进程通过与其他主机或者路由器交换信息而后对路由表进行自动更新,他会根据网络系统的运行情况而动态进行调整。

    配置网路接口地址

    常用的方式有两种ifconfig命令和直接修改网络接口的配置文件。

    route命令用来查看系统中路由表信息,以及添加,删除静态路由记录。直接执行route命令可以查看当前主机中的路由表信息。

    route命令不仅可以用于查看路由表的信息,还可以添加,删除静态路由表条目,其中当然也包括设置默认网关地址。

    man route部分示意图:

    route [-CFvnee]

    route [-v] [-A family] add [-net|-host] target [netmask Nm] [gw Gw] [metric N]
    [mss M] [window W] [irtt I] [reject] [mod] [dyn] [reinstate] [[dev] If]

    route [-v] [-A family] del [-net|-host] target [gw Gw] [netmask Nm] [metric N]
    [[dev] If]

    route [-V] [--version] [-h] [--help]

    其中-net选项来指定目标网段地址,host则用来指定目标主机的地址,target表示目标网络或者主机。netmask表示子网掩码,当target选项指定了

    一个目标网络时,需要使用子网掩码来配合使用。gw表示网关地址,dev选项表示将该路由条目与某个网络接口绑定在一起。

    在当前系统的路由表中添加一项静态路由信息。

    在上面的命令中,首先使用add子命令增加一条目标为192.168.255.130的路由信息,与该主机通信需要通过网关192.168.255.2,然后使用route

    命令输出系统路由表,从输出结果可以得知该路由信息添加成功。

    如果想要删除路由条目,则可以使用del子命令

    可以看出删除成功了!!!

    默认网关记录是一条特殊的静态路由条目,如果目的地址不匹配所有的路由条目,则通过默认网关发送。

     

    普通客户机的路由设置

    如果某台linux主机并不充当路由器的功能,仅仅提供某些网络服务,则路由配置非常简单。在这种情况下,一般只需要两条路由即可,其中一条是到

    本地子网的路由,另一条是默认路由。前者用于与同一子网的主机通信,后者则负责所有不发送到本地子网的数据包。这也是用户在使用route命令查看本地路由表经常见到的情况。

    linux路由器配置实例

    在本节中,以一个具体的例子来说明如何配置linux主机,实现网络之间的路由功能。

    下图描述了3个子网之间的连接,其中linux主机拥有3个网路接口,其IP地址分别为192.168.1.2, 10.10.1.1和10.10.2.1,同时,这三个网络接口分别与子网192.168.1.0/24

    ,10.10.1.0/24,和10.10.2.0/24相连接。

     

    尽管这三个子网在物理上是相同的,但是如果没有添加路由的话,任然无法实现他们之间的数据交换,为了实现数据的交换,系统管理员应该在linux主机中添加以下三个

    路由条目。

    #route add -net 192.168.1.0/24 eth0

    #route add -net 10.10.1.0/24 eth1

    #route add -net 10.10.2.0/24 eth3

    有了上面的静态路由后,当有了目标网络为10.10.1.0/24的数据包时,linux主机就知道需要从网络接口eth1转发,同理目标网络为10.10.2.0/24的数据包需要从网络接口eth2

    转发,而目标为网络192.168.1.0/24的数据包需要从网络接口eth0转发。

    转载于:https://www.cnblogs.com/leijiangtao/p/4442753.html

    展开全文
  • iptables -t nat -P PREROUTING DROPiptables -t nat -A PREROUTING -s 192.168.50.10 -m mac --mac-source 00:1A:92:E8:9B:6A -j ACCEPTiptables -t nat -A PREROUTING -s 192.168.50.11 -m mac --mac-source 00:1A
    iptables -t nat -P PREROUTING DROP
    iptables -t nat -A PREROUTING -s 192.168.50.10 -m mac --mac-source 00:1A:92:E8:9B:6A -j ACCEPT
    iptables -t nat -A PREROUTING -s 192.168.50.11 -m mac --mac-source 00:1A:92:E8:9A:9B -j ACCEPT
    iptables -t nat -A PREROUTING -s 192.168.50.20 -m mac --mac-source 00:1B:FC:10:C2:A6 -j ACCEPT
    iptables -t nat -A PREROUTING -s 192.168.50.30 -m mac --mac-source 00:1A:92:E8:9A:D2 -j ACCEPT
    iptables -t nat -A PREROUTING -s 192.168.50.50 -m mac --mac-source 00:1A:92:E8:9C:76 -j ACCEPT
    展开全文
  • Linux路由器配置实例

    千次阅读 2005-01-18 09:31:00
    Linux路由器配置实例发布日期:2002-06-06文摘内容: 著者:冷风http://www.chinalinuxpub.com任务:使用 Linux服务器配置路由器。目标:实现单位两个网段:192.168.1.0/24和192.168.2.0/24两个网段互相访问。步骤:...
    Linux路由器配置实例

    发布日期:2002-06-06
    文摘内容:
    著者:冷风
    http://www.chinalinuxpub.com

    任务:使用 Linux服务器配置路由器。

    目标:实现单位两个网段:192.168.1.0/24和192.168.2.0/24两个网段互相访问。

    步骤:

    1.安装一台双网卡的机器

    2.将eth0的地址设置为192.160.1.254,eth1的地址设置为192.168.2.254:

    # ifconfig eth0 192.168.1.254 broadcast 192.168.1.255 netmask 255.255.255.0

    # ifconfig eth1 192.168.2.254 broadcast 192.168.2.255 netmask 255.255.255.0

    3.添加路由信息:

    #route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0

    # route add -net 192.168.2.0 netmask 255.255.255.0 dev eth1

    4.将192.168.1.0/24网段内所有主机默认网关设置为192.168.1.254,将192.168.2.0/24网段内所有主机的默认网关设置为192.168.2.254

    5.测试
    展开全文
  • Linux路由器的配置

    千次阅读 2007-08-03 17:14:00
    本文主要介绍如何用Linux做一个功能完备的路由器,这里将主要介绍静态路由器和动态路由器的配置,但不包括IP伪装或者说公用一个IP地址访问外面网络等问题。其已经不属于本主题讨论的范围,请参考其他如防火墙的配置...
      
    
    本文主要介绍如何用Linux做一个功能完备的路由器,这里将主要介绍静态路由器和动态路由器的配置,但不包括IP伪装或者说公用一个IP地址访问外面网络等问题。其已经不属于本主题讨论的范围,请参考其他如防火墙的配置等的内容。
     
    LRP(Linux Router Project)已经成立了有好几年的时间了。这个计划的目的是利用Linux操
    作系统将老旧的个人电脑如486当成网络的路由器使用。利用Linux低成本建立的路由器可能引起企业界广泛的注意。正如StoneFly Technology的系统整合工程师Bret Berger所说的,
    对无法负担两千(美元)思科(Cisco)路由器的使用者来说,利用486加上几张以太网卡,当
    成路由器使用,是另一个选择。而对于一些小型企业、小型ISP ,甚至是政府机构,这是一个很好的解决方案。事实上目前国内高校很多场合正是利用了这一解决方案。
     
    由于LRP计划已经把Linux的源代码精简化,LRP软件可以少于2MB ,同时也可以将LRP软件放入一张软盘内。也就是说在没有硬盘的情况下,LPR也可以利用软盘,载入电脑中使用。Virtual Design Group的软件工程师Michael Kornegay则表示,他们已经将Linux路由器软件安装在一架老旧的x86个人电脑上,再加上两张以太网卡,没有使用硬盘的设备,只是使用软盘启动,便当成阳春型的路由器与防火墙使用。
     
    我们在这一章里不是教大家如何制作小于2MB的LRP软件包,而是告诉大家如何利用Linux来获得一个性能良好、价格低廉的路由器。利用Linux构建路由器使用的成本虽然便宜,可是在性能与效率上与真正的路由器相比,却还是有一段距离。对于玩家们或是一些要求不高的使用者来说,这是一个不错的选择。
     
    什么是路由器?简单的说:路由器的功能就是寻路――给IP包寻找正确的路径以通往目的地。下面是比较详细的介绍:
    原理与作用:路由器(Router)用于连接多个逻辑上分开的网络,所谓逻辑网络是代表一个单独的网络或者一个子网。当数据从一个子网传输到另一个子网时,可通过路由器来完成。因此,路由器具有判断网络地址和选择路径的功能,它能在多网络互联环境中,建立灵活的连接,可用完全不同的数据分组和介质访问方法连接各种子网,路由器只接受源站或其他路由器的信息,属网络层的一种互联设备。它不关心各子网使用的硬件设备,但要求运行与网络层协议相一致的软件。
     
    一般说来,异种网络互联与多个子网互联都应采用路由器来完成。 路由器的主要工作就是为经过路由器的每个数据帧寻找一条最佳传输路径,并将该数据有效地传送到目的站点。由此可见,选择最佳路径的策略即路由算法是路由器的关键所在。为了完成这项工作,在路由器中保存着各种传输路径的相关数据--路径表(RoutingTable),供路由选择时使用。路径表
    中保存着子网的标志信息、网上路由器的个数和下一个路由器的名字等内容。路径表可以是
    由系统管理员固定设置好的,也可以由系统动态修改,可以由路由器自动调整,也可以由主
    机控制。
     
    静态路径表:由系统管理员事先设置好固定的路径表称之为静态(static)路径表,一般是在系统安装时就根据网络的配置情况预先设定的,当网络结构的改变时需管理员手工改动相应的表项。  
     
    动态路径表:动态(Dynamic)路径表是路由器根据网络系统的运行情况而自动调整的路径表。路由器根据路由选择协议(RoutingProtocol)提供的功能,自动学习和记忆网络运行情况,在需要时自动计算数据传输的最佳路径。
     
    路由器的功能:
    (1) 协议转换:能对网络层及其以下各层的协议进行转换。
    (2) 路由选择:当分组从互联的网络到达路由器时,路由器能根据分组的目的地址按某种路
    由策略,选择最佳路由,将分组转发出去,并能随网络拓扑的变化,自动调整路由表。
    (3) 能支持多种协议的路由选择:路由器与协议有关,不同的路由器有不同的路由器协议,支持不同的网络层协议。如果互联的局域网采用了两种不同的协议,例如,一种是TCP/IP协议,另一种是SPX/IPX协议(即Netware的传输层/网络层协议),由于这两种协议有许多不同之处,分布在互联网中的TCP/IP(或SPX/IPX)主机上,只能通过TCP/IP(或SPX/IPX)路由器与其他互联网中的TCP/IP(或SPX/IPX)主机通信,但不能与同一局域网中的SPX/IP(或TCP/IP)主机通信。多协议路由器能支持多种协议,如IP,IPX及X.25协议,能为不同类型的协议建立和维护不同的路由表。这样不仅能连接同一类型的网络,还能用它连接不同类型的网络。这种功能虽然使路由器的适应性变强,但同时也使得路由器的整体性能降低,现在IP协议在网络中越来越占主导地位,因此在下一代路由器(如交换式路由器)只需要支持IP协议。
    (4) 流量控制:路由器不仅具有缓冲区,而且还能控制收发双方数据流量,使两者更加匹配。
    (5) 分段和组装功能:当多个网络通过路由器互联时,各网络传输的数据分组的大小可能不相同,这就需要路由器对分组进行分段或组装。即路由器能将接收的大分组分段并封装成小分组后转发,或将接收的小分组组装成大分组后转发。如果路由器没有分段组装功能,那么整个互联网就只能按照所允许的某个最短分组进行传输,大大降低了其他网络的效能。
    (6) 网络管理功能:路由器是连接多种网络的汇集点,网间分组都要通过它,在这里对网络中的分组、设备进行监视和管理是比较方便的。因此,高档路由器都配置了网络管理功能,
    以便提高网络的运行效率、可靠性和可维护行。
    一个路由器必然有大于或者等于2的网络接口,这样它才存在路由的功能,否则,如果只有一个接口的话,也就无所谓"寻路"了!这里说的网络接口不一定是物理上的接口,例如网卡或其他,也可以是虚拟的接口,例如隧道入口等。
    如前面所描述的,一个路由器上运行的路由信息可以是静态配置的,也可以是动态产生。前者通过手工配置完成、而后者则通过在路由器上运行跑相关路由协议的程序来根据网络状态动态改变内核中的路由表。下面我们仔细介绍一些这两类路由器的配置。通常,一个路由器既有静态配置的部分,又有动态配置的部分,二者结合起来。
     
    多网卡的设置,静态路由器的配置
    Linux下最常用的指定路由规则的命令是route,当然也有些图形化的工具可以使用,我们下面一个一个介绍。
     
    route命令的使用
    route工具主要功能是管理Linux系统内核中的路由表。它最大的用途就是用来设定静态的路由表项,通常是在系统用ifconfig配置网络接口(例如网卡等)后,用它来设定主机或者一网段的IP地址应该通过什么接口发送等。
     
    Route工具有复杂的调用参数。调用格式如下:
    route [-CFvnee]
    route [-v] [-A family] add [-net|-host] target [netmask
    Nm] [gw Gw] [metric N] [mss M] [window W] [irtt I]
    [reject] [mod] [dyn] [reinstate] [[dev] If]
     
    route [-v] [-A family] del [-net|-host] target [gw Gw]
    [netmask Nm] [metric N] [[dev] If]
     
    route [-V] [--version] [-h] [--help]
     
    主要参数说明如下:
    -v 使用冗余输出模式。
    -A family指定特定的地址族(例如"inet"、"inet6")。
    -n 使用数字显示的地址(例如,202.38.75.75)而不是去解释域名。
    -e 使用与netstat相同的输出格式。
    -ee 参数会产生很长的输出,包括内核路由表的几乎所有信息。
    -net 目标(target)是一个网段。
    -host 目标(target)是一个单独的主机。
    -F 显示内核FIB路由表。结果可能被-e 和-ee参数改变。
    -C 显示内核中路由缓存信息。
    del 删除一个路由表项。
    add 增加一个路由表项。
    target 配置的目的网段或者主机。可以是IP,或者是网络或主机名。
    netmask Nm用来指明要添加的路由表项的网络掩码。
    gw Gw 任何通往目的(target )的IP分组都要通过这个网关。
    metric M设置路由表中该项的尺度域(metric field)为M。
    mss M 设置TCP的最大分片长度(MSS)M bytes。系统缺省值是536。
    window W设置TCP发送窗口的尺寸为W bytes。
    irtt I 设置TCP的初始化回路时间(irtt)I毫秒(1-12000)。缺省情况下按照RFC 1122 规定是300ms。
    reject 安装一个阻塞型的路由,这样可能会有路由查找失败。
    mod, dyn, reinstate添加或者修改一个动态路由表项。主要用来测试和诊断。
    dev If 强行使用某个特定的输出接口(If),而不用系统去寻找接口。
     
    下面举几个配置的例子:
    route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0
    添加一条路由表项,网段192.56.76.x 应该从接口"eth0"走。
     
    route add default gw mango-gw
    添加一条缺省路由(如果没有其他匹配的路由项,就使用这个路由规则)。
    "mango-gw"是一个主机名, 而通往这个主机的路由规则应该事先已经设置好了。
     
    route add ipx4 sl0
    给主机"ipx4"添加一条路由规则,使用SLIP接口sl0。
     
    Route命令的输出结果,输出的格式有以下几栏:
     
    Destination
    目标网段或者主机。
     
    Gateway
    网关地址,如果没有设置,则是"*"表示。
     
    Genmask
    网络掩码。
     
    Flags 一些可能的标记如下:
    U (路由是活动的)
    H (目标是一个主机)
    G (使用网关(gateway))
    R (reinstate route 动态路由产生的表项)
    D (dynamically installed by daemon or redirect)
    M (modified from routing daemon or rederict)
    ! (reject route)
    Metric 路由距离。
    Ref 路由项引用次数。(linux内核中没有使用) 字串6
    Use 查找路由项的次数。.
    Iface 该路由表项对应的输出接口。
    MSS 缺省的TCP最大分片尺寸。
    Window 缺省的TCP窗口的尺寸。
    irtt 缺省的TCP回路时间。
    HH (cached only)
    ARP入口的数目。
    Arp (cached only)该路由项对应的物理地址是否过期等信息。
     
    下面是route -n的输出实例:
     
    tarn:~$ /sbin/route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    202.38.64.3 202.38.75.62 255.255.255.255 UGH 0 0 0 eth0
    202.38.75.75 0.0.0.0 255.255.255.255 UH 0 0 0 eth2
    202.38.75.0 0.0.0.0 255.255.255.128 U 0 0 0 eth0
    192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2
    192.168.75.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
    159.226.0.0 202.38.75.62 255.255.0.0 UG 0 0 0 eth0
    127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
    0.0.0.0 202.38.75.62 0.0.0.0 UG 1 0 0 eth0
     
    上面的输出中我们可以看出,该路由器配置的缺省网关是202.38.75.62,它上面有3个以太网接口(eth0、eth1和eth2)。其中第一条和第二条路由规则是针对一个主机的,其他的都是针对一个网段的,这可以重掩码看出。
     
    动态路由器的配置,基本原理介绍
    先解释一下什么是动态路由。从前面的描述中我们可以看到,路由器的基本功能就是为IP分组寻找到达目的地址的路径。我们前一节介绍的是人工手动静态配置路由规则,也就是人为的设定寻路方式。但是因特网是个庞大的系统,上面跑的网络结构负责,而且拓扑结构也在随时改变,这样在某些复杂的范围里我们的静态配置就不一定能获得最佳的寻路路径了。而且一旦网络结构发生改变,我们手动的静态配置也往往无法及时跟着改变。在这个背景下,产生了动态路由配置的概念,也就是动态路由器。动态路由器上的路由表项是通过相互连接的路由器之间交换彼此信息,然后按照一定的算法优化出来的,而这些路由信息是在一定时间间隙里不断更新,以适应不断变化的网络,以随时获得最优的寻路效果。为了实现IP分组的高效寻路,IETF制定了多种寻路协议。其中用于自治系统(AS:Autonomous System)内部网关协议有开放式最短路径优先(OSPF:Open Shortest Path First)协议和寻路信息协议(RIP:Routing Information Protocol)。所谓自治系统是指在同一实体(如学校、企业或ISP)管理下的主机、路由器及其他网络设备的集合。还有用于自治域系统之间的外部网络路由协议BGP-4等。运行这些路由协议的软件就是我们通常说的路由软件,Linux下常见的路由软件有gated和zebra,。前者既有GPL版本的发行,又有收费的版本;而后者则是日本某组织开发的完全GPL的高效的路由软件。Linux的发行里面一般都缺省就有gated这个软件,我们下面主要介绍它的配置和使用方法。
     
    路由协议的介绍,我们这里介绍一下RIP协议。
    RIP是Routing Information Protocol的缩写,直接翻译就是"路由信息协议"。RIP计算路由时使用了"距离向量(distance vector)"算法,因此,它也被称作距离向量寻路协议(distance vector routing protocol)。
    RIP的特点是路由器间定时地交换网络的整体知识,并且只和相邻路由器交换这种知识。换句话说,路由器只和相邻路由器共享网络信息。路由器一旦从相邻路由器获取了新的知识,就将其追加到自己的数据库中,并将该信息传递给所有的相邻的路由器。相邻路由器做同样的操作,经过若干次传递,使自治系统内的所有路由器都能获得完整的路由信息。RIP报文用UDP数据报来传送。为了区别于其他的UDP应用,规定RIPng的公认专用UDP端口号为521。主动寻路更新报文的源/目的的端口都是RIPng端口,应答的更新报文送往发起请求的端口。应当注意,IPv4中RIP使用的端口号是520,与RIPng的有所不同。定时器在RIP中有着比较重要的作用。在RIP中为支持寻路操作使用了三个不同的定时器。第一个是启动定时进行RIP更新操作的定时器。此定时器通常设置成30秒。在RIP标准中对其进一步加以限制,它要求路由器对更新报文的发送间隔采用随机数,将RIP更新报文的间隔选取在25秒到35秒之间。其目的是为了避免网络上所有的路由器以相同的定时发送更新报文,大量的业务量压迫网络造成冲突。利用随机间隔可均衡业务量,从而减少路由器的冲突。 RIP在避免冲突方面还有一点需要注意,在触发更新中不论何时发送了报文,不对30秒定时器复位。如果复位,多个路由器的更新报文的发送间隔就会发生冲突。这是由于所有的路由器在发送触发更新后同时启动定时器造成的。如不对该定时器复位,即使与在数秒前刚广播的触发更新报文的内容完全一样,定时的更新报文也照发不误。RIP使用的第二个定时器时期满(expiration)定时器。路由器只要收到通往特定信宿的路由,就对通往该信宿的期满定时器初始化。期满定时器虽然被设定为180秒,但在稳定的网络中总是每隔30秒被初始化。当网络不稳定时,此定时器的时间区间表示该路由无效。RIP最后一个定时器时垃圾收集(garbage collection)定时器。路由器对无效路由打上尺度为无穷大的无效标记并将垃圾收集定时器置位。此时,定时器在120秒的区间内工作。在该期间内路由器将尺度费用置成无穷大的同时,继续公布该信宿。以这种方法公布路由,相邻路由表就能迅速从寻路表中删除该路由。
    RIP协议也有它的缺陷:
    网络直径较小:RIP将尺度(即费用)无穷大定义为16,这一定义对使用RIP的所有网络的规模作出了严格的限制。因尺度必须是整数,故网络的费用至少为1。在基于RIP的Internet中,所有的系统距其他任何系统不能超过15个网络。这一大小被称作网络直径。这一限制对管理员分配费用的灵活性是一个很大的制约。管理员分配费用最直接的方法是对各个网络的费用都设成1。但是,在这种分配方式下,RIP就会选择费用最小的路径,而不管该路径上的信道容量的大小。因此会舍弃"较长"的高速路径而通过低效的"较短"路径传送数据。为了避免这种情况的发生,管理员可将大于1的费用分配给低效链路,人为地提高其费用。其结果是最大网络直径随之变小,进一步限制了RIP的网络规模。
    对网络变化的反应较慢:RIP网络中的路由器从路由失效到将其识别出来要等待180秒,而在OSPF中典型值是1~2秒。
    不支持组播:在RIP中没有公布组成员信息的方法,因此不支持组播寻路。为实现组播寻路需和其他协议并用。
    gated的配置:gated支持RIP、OSPF、IS-IS等路由协议。我们这里着重介绍RIP协议的配置方法,其他协议的配置大家可以针对协议本身然后参考相关帮助文档做类似的配置就可以。
    首先修改/etc/sysconfig/network文件,使得FORWARD_IPV4=yes。然后在/etc/目录下创建文件名为gated.conf的文件,里面就是需要填写的配置信息。RIP协议的配置语法如下:
    rip yes | no | on | off [ {
    broadcast ;
    nobroadcast ;
    nocheckzero ;
    preference preference;
    defaultmetric metric ;
    query authentication [none | [[simple|md5] password]] ;
    interface interface_list
    [noripin] | [ripin]
    [noripout] | [ripout]
    [metricin metric]
    [metricout metric]
    [version 1]|[version 2 [multicast|broadcast]]
    [[secondary] authentication [none | [[simple|md5] password]] ;
    trustedgateways gateway_list ;
    sourcegateways gateway_list ;
    traceoptions trace_options ;
    } ] ;
    上面的配置语法用来启动或者禁止RIP协议的运行,并对RIP协议某些参数进行设置。各参数的含义如下:
    broadcast 指明RIP分组将被广播。当广播静态路由或者由其他协议产生的RIP路由项时,这很有用。
    nobroadcast 指明当然的接口上不广播RIP分组。
    nocheckzero 指明RIP不处理RIP分组中的保留域。通常RIP将拒绝保留域为非零的分组。
    preference preference 设置RIP路由的preference,其缺省值是100,这个值可以被其他的给定的策略重写。
    metric metric 定义当使用RIP广告由其他路由协议获得的路由信息时使用的尺度(metric)。其缺省值为16(不可达)。
    query authentication [none | [[simple|md5] password]] ; 设定身份认证密码。缺省是无需认证。
    interface interface_list 针对某特定的接口进行参数设定。可以有的参数如下:
    noripin 指定该接口商接收的RIP分组无效。
    ripin 这是缺省的参数。与noripin相反。
    noripout 被指定的接口上将无RIP分组发出。缺省值是在所有的广播和非广播的接口商发送送RIP分组。
    ripout 这是缺省值。与noripout的含义相反。
    metricin metric 指定在新添加的路由表项加入内核路由表以前增加的尺度(metric)。缺省值是1。
    metricout metric 指定通过特定的接口发出的RIP前,对尺度的增加值。缺省值是0。
    version 1 指定发送第一个版本的RIP协议的分组。缺省值是这个。
    version 2 在指定的接口商发送第二个版本的RIP协议分组。如果IP组播可以使用,则缺省发送完全第二版本的分组,如果不支持组播,则使用与第一版本兼容的第二版本的RIP分组。
    multicast 指明在特定接口上的第二版本的RIP分组使用组播发送。
    broadcast 指明在特定的接口上使用广播来发送与第一版本兼容的第二版本的RIP分组,即使该接口支持组播。
    [secondary] authentication [none | [simple|md5] password] 定义身份认证的方式。只对第二版本的RIP协议有用。缺省是无身份认证。
    trustedgateways gateway_list 定义RIP接收RIP更新分组的网关。gateway_list 是一个简单的主机名或者IP地址的列表。缺省情况下,在共享网络上的所有的路由器都被认为支持提供RIP更新信息。
    sourcegateways gateway_list 定义RIP直接发送分组的路由器列表,而不通过组播或者广播。
    traceoptions trace_options 设置RIP跟踪选项。详细设置略。
    下面是些配置示例:
    配置1:
    #
    #
    # This configuration runs RIP in quiet mode, it only listens to
    # packets, no matter how many interfaces are configured.
    #
    rip yes {
    nobroadcast ;
    } ;
     
    配置2:
    # This configuration emulates routed. It runs RIP and only sends
    # updates if there are more than one interfaces up and IP forwarding is
    # enabled in the kernel.
    #
    # NOTE that RIP *will not* run if UDP checksums are disabled in
    # the kernel.
    #
     
    rip yes ;
     
    zebra介绍:这是日本人写的以GNU版权方式发布的软件,开始于1996年,主要的功能是实现了RIPv1,RIPv2,RIPng, OSPFv2, OSPFv3, BGP-4, and BGP-4+路由协议,目前是0.87版,目前支持Linux和FreeBSD,将来会支持Solaris 7和GNU Hurd。 其中RIPv1, RIPv2, OSPFv2是用于IPv4的自治域系统内部网络路由协议,最好的是OSPF,他支持VLSM(变长子网掩码)、收敛快,能根据链路的负载等动态调整路由,是目前最好的所有厂商都支持的内部路由协议。跟他差不多(也许还要好)的是cisco专有的EIGRP。BGP-4是用于自治域系统之间的外部网络路由协议,也是目前Internet主干上目前使用的协议,非常的灵活。在国外用的非常普遍,如果一个网络有两个以上出口(连接两个ISP)极大的可能会用他。但是在国内好象很少使用,这也跟国内的网络比较封闭有关。假如我们跟CSTNET和CETNET使用BGP-4的话,只要这两个出口一个是通的,我们对外的连接不会中断超过1分钟。RIPng OSPFv3, BGP-4+主要扩展了对ipv6的支持。
    这个软件配置的很多方面跟cisco的IOS配置几乎完全相同,我们完全可以拿一台PC机来完成一些必须用昂贵的CISCO路由器才能完成的比较复杂的路由协议处理控制功能。
    GNU Zebra可以到www.zebra.org去找。
    路由器上的策略控制:IP带宽管理(QoS)
    为什么要管理带宽?
    因特网的成功主要因素是IP(Internet Protocol)协议族的简单和稳健。现在几乎所有的人
    都在向IP靠拢,甚至传统的电讯公司也在将它们的基于电路交换的语音网络向IP网络转。然而基于IP协议的因特网这时候就遇到了一个非常大的困难。它不相ATM协议,它是平等地对待任何业务,也就是说所有的通过IP网络的数据都被平等地尽可能好的传送(称:尽力型服务)。如果我愿意多付1倍的钱,我也不能让我的主页下载的速度提高一倍。这时候就引入了QoS概念,也就是服务质量保证。这种情况下,平等对待所有IP业务数据的方法就要被放弃,而试图区分不同的用户或业务,然后分配不同的带宽。这就是路由器上的带宽的分配和管理。这些年来,不同的技术发展很快,IETF(Internet Engineering Task Force)已经发布了几种标准,包括:综合服务、区分服务、资源预留技术。这些标准都在Linux下有了实现。但它们的使用是个综合的问题,需要网络其他路由器的配合(例如资源预留),所以当前在实践中使用不是很广,但随着因特网业务的不断增加,它们会逐渐越来越多的被大家使用的。Linux内核2.1.x及后续版本里面主要是引入了traffic control代码,来实现IP带宽的分配和管理。
     
    TC的特点
     
    TC是Traffic Control的缩写,中文意思即为"流量控制"。TC有很大的伸缩性。作为一个提供虚拟主机服务的ISP来说,它可以利用Linux的流量控制来给不同的客户不供的服务质量保证。传统的出售虚拟主机或者提供主页存放服务的ISP通常是提供不同的磁盘空间来作为不同档次的服务,例如一个月100元可以获得100M的空间。如果使用Linux的流量控制(TC),我们就可以多提供一种有区分的不同的服务,例如你是一个提供虚拟主机服务的ISP,你可以有如下多的不同的服务选择:
    · 服务水平1: 花费¥100/月――浏览者获得250Kbps的浏览页面速度。
    · 服务水平2: 花费¥150/月--250Kbps,但是如果带宽允许的话在午夜0点到临晨6点之间可以达到1Mbps。
    · 服务水平3: 花费¥200/月--250Kbps, 但是如果带宽允许的话可以最大达到1Mbps,不限制时间(与服务水平2区别之处)。
    · 服务水平4:花费¥500/月--提供1Mbps的高速的带宽保证。适合视频和音频流的服务。
    由上面的例子,我们可以利用TC很方便的指定各种有控制的服务规则。上面提到的每天不同时段提供不同的服务,我们可以很容易的用crontab来定时运行一些脚本去改变带宽分配规则来达到。这是一个比较好的例子,我们在后面将介绍一个实例。
     
    TC的使用实例说明:下面我们提供一个利用TC来实现对在一个Linux服务器上的两个虚拟主机实行不同的带宽策略的例子。在该例中,我们将讲述如何配置和测试TC。
     
    编译内核:至于如何编译一个新的内核已经不属于本章节讨论的范围,我们假设你已经知道如何重新编译一个内核。编译内核时将以下几个内核选项选中:"kernel/User netlink socket"和"Netlink device emulation"。这样TC就可以利用netlink来与内核传送信息。同时将所有的排队算法选上,位于包括
    "Fair queueing"
    "CBQ packet scheduler"
    "CSZ packet scheduler"
    "the simples PRIO pseudoscheduler"
    "RED queue"
    "SFQ queue"
    "TBF queue"
    "QoS support"
    "rate estimator"
    "packet classifier API"
    "routing-tables-based classifier"
    "U32 classifier"
    "special RSVP classifier and special RSVP classifier for IPv6"。
     
    选中这些选项以后,按正常的编译内核步骤编译内核,然后安装新内核,并用新内核重新启
    动系统。编译TC软件包
     
    可以在下面的地址下载到我们需要的软件,然后按照软件包里的说明编译它:
    ftp://linux.wauug.org/pub/net/ip-routing/iproute2-current.tar.gz
    通常我们要做的只是简单的输入make就可以了。
     
    TC 的设定
    图1. CBQ 树图
    图一是我们将配置的一个系统的简单的树形图示范。两个叶子节点从父节点分配带宽,IP地址10.0.0.10(标识符1:1)和地址10.0.0.11(标识符1:2)是接口eth0上的IP别名,它们共同分享父节点(标识符1:0)的带宽。这个例子里面只涉及到了对一个接口上的流量控制,大家可以仿照这个例子构造自己感兴趣的控制多个接口设备的配置。配置QoS特性的第一步就是将qdisc加入到一个接口上,例如本例子:
    qdisc add dev eth0 root handle 1: ...
     
    然后定义你需要区别的类别。不同的类别对应不同的流量控制类型。我们的例子中,使用如下的语句:
    tc class add dev eth0 parent 1:0 classid X:Y ...
    我们的例子中只使用了一层深的类别树。当然,我们可以构造多层深度的复杂的树,基本的
    原则是一样的:就是一个子节点(如图1所示)继承一个父节点的资源同时进一步根据类的定义去分配父节点的资源。例如,父类1:0拥有该设备的全部带宽,那么子节点1:1不可能获得超过10Mbits的带宽,当然本例子中是限制为1Mbps。 最后定义"IP分组--类别"的映射规则,用来告诉系统的分类器,经过路由器调度的某IP分组该对应什么类型。首先,将一个分类器与输出接口关联起来:
    filter add dev eth0 parent 1:0 protocol ip ...
    然后,定义"IP分组--类别"的映射规则。本例子中,将利用IP分组的源地址来作为分类的键词。 下面的脚本完成了这个功能。关于脚本中TC等命令的参数,大家可以参考随机的文档,这里限于篇幅,不做介绍了。
    #! /bin/sh
    #path to tc and the ip utilities;
    #change to reflect yours.
    TC=./iproute2/tc/tc
    IP=./iproute2/ip/ip
    ##################################################
    #Addresses to be aliased
    #change or add more to reflect yours
    #
    ALIAS1=10.0.0.10
    ALIAS2=10.0.0.11
    ##################################################
    # add ip aliasing support
    #uncomment if you want to use the ip utility to
    #add ip-aliasing for you
    #
    #$IP addr add $ALIAS1 dev eth0
    #$IP addr add $ALIAS2 dev eth0
    ##################################################
    # Attaching a device queue discipline to an
    # interface a device queue discipline is
    # equivalent almost to a device manager
    #
    #Attach CBQ to eth0
    #Things you might need to change:
    # bandwidth -- the bandwidth of the eth0 device
    # note it must match the device's real bandwidth
    # allot -- it is safe to leave it at the MTU of
    # the device
    # avpkt -- the average packet size that you
    # suspect will be seen safe to leave at 1000
    # for Ethernet with MTU of 1514 bytes
    # mpu -- minimum packet size
    #
    $TC qdisc add dev eth0 root handle 1: cbq
    bandwidth 10Mbit allot 1514 cell 8 avpkt 1000
    mpu 64
    ##################################################
    # Attaching class queue disciplines
    # bounded -- it is bound to the rate allocated;
    # can't borrow even if there is a lot of idle
    # bandwidth just sitting there isolated -- cannot
    # share its bandwidth to other classes prio is the
    # priority assigned 0 being the highest and 7 the
    # lowest weight -- safer to leave at 1
    # queue discipline setup. Classid 1:1 will have a
    # rate of 1Mbps which is bounded.
    #
    $TC class add dev eth0 parent 1:0 classid 1:1 cbq
    bandwidth 10Mbit rate 1Mbit avpkt 1000 prio 5
    bounded isolated allot 1514 weight 1 maxburst 21
    #rate 1Mbit avpkt 1000 prio 5 bounded allot 1514
    #weight 1 maxburst 21
    # Classid 1:2 will have a rate of 3Mbps which is
    # bounded.
    $TC class add dev eth0 parent 1:0 classid 1:2 cbq
    bandwidth 10Mbit rate 3Mbit avpkt 1000 prio 5
    bounded allot 1514 weight 1 maxburst 21
    ##################################################
    # Define the filter to be attached to eth0
    # Create with hash table of 256 slots with ID 1:
    #
    $TC filter add dev eth0 parent 1:0 protocol ip
    prio 5 handle 1: u32 divisor 256
    ##################################################
    # define the criteria for mapping incoming packets
    # to classes. Add to the 5th slot of hash table a
    # rule to select virtual address ALIAS1 direct it
    # to class 1:1
    #
    $TC filter add dev eth0 parent 1:0 prio 5 u32
    ht 1:6: match ip src $ALIAS1 flowid 1:1
    # Add to 6th slot of hash table rule to select
    # ALIAS2 direct it to class 1:2
    $TC filter add dev eth0 parent 1:0 prio 5 u32
    ht 1:6: match ip src $ALIAS2 flowid 1:2
    ## Lookup hash table, if it is not fragmented
    ## frame. Use protocol as hash key
    #
    $TC filter add dev eth0 parent 1:0 prio 5 handle
    ::1 u32 ht 800:: match ip nofrag
    offset mask 0x0F00 shift 6
    hashkey mask 0x00ff0000 at 8 link 1:
    #
    #some more examples of how to use u32
    # Add to 4th slot of hash table rule to select
    # tcp/telnet to 193.233.7.75 direct it to class
    # 1:4 and prescribe to fall to best effort,
    # if traffic violates TBF (32kbit,5K)
    #$TC filter add dev eth1 parent 1:0 prio 5 u32
    # ht 1:4: match ip dst 193.233.7.75
    # match tcp dst 0x17 0xffff
    # flowid 1:4
    # police rate 32kbit buffer 5kb/8 mpu 64
    # mtu 1514 index 1
    ## Add to 1st slot of hash table rule to select
    ## icmp to 193.233.7.75 direct it to class 1:3
    ## and prescribe to fall to best effort,
    ## if traffic violate TBF (10kbit,5K)
    #$TC filter add dev eth1 parent 1:0 prio 5 u32
    # ht 1:4: match ip dst 193.233.7.75
    # match tcp dst 0x17 0xffff
    # flowid 1:4
    # police rate 32kbit buffer 5kb/8 mpu 64
    # mtu 1514 index 1
    ## Add to 1st slot of hash table rule to select
    ## icmp to 193.233.7.75 direct it to class 1:3
    ## and prescribe to fall to best effort,
    ## if traffic violate TBF (10kbit,5K)
    #$TC filter add dev eth1 parent 1:0 prio 5 u32
    # ht 1:: sample ip protocol 1 0xff
    # match ip dst 193.233.7.75 flowid 1:3
    # police rate 10kbit buffer 5kb/8 mpu 64
    # mtu 1514 index 2
    ##################################################
    #Look at all that we created:
    #
    echo "---- qdisc parameters ----------"
    $TC qdisc ls dev eth0
    echo "---- Class parameters ----------"
    $TC class ls dev eth0
    echo "---- filter parameters ----------"
    $TC filter ls dev eth0
    测试:我们的例子当中,是有在同一个Linux服务器上有两个虚拟WWW服务器,我们的设定是采用了IP别名,将两个地址同时绑在一个接口上。我们可以用ftp来测试。首先用ftp连接10.0.0.10服务器,我们可以获得大概1Mbps的速率;然后ftp另外的地址10.0.0.11,我们可以获得大概3Mbps的速率。
     
    展开全文
  • 交叉编译openssh给misp-linux路由器 工具链下载地址 https://toolchains.bootlin.com/ 编译 编译glibc前应该先编译zlib ,openssl,其中zlib必不可少,但是openssl是可选的,但是可选代表着仅能使用内置的,有限的加密,...
  • linux路由器配置实例

    2008-01-24 10:12:39
    任务:使用 Linux服务器配置路由器。目标:实现单位两个网段:1.0.0.1/8和3.0.0.1/8两个网段互相访问。 实验要求:使用两台Linux机器,为每一台机器配置好两块网卡,我们在这里为第一台linux平台以LIV表示,第二台...
  • Linux路由器配置记要

    千次阅读 2004-07-06 10:51:00
    Linux路由器配置记要: a、设置好两块网卡的ip地址 b、# iptables -t nat -A POSTROUTING -j MASQUERADE c、# echo 1 > /proc/sys/net/ipv4/ip_forward d、子网里面的机器默认网关设成linux路由器的ip地址 e、...
  • IP包头中TTL字段的含义是什么?它用来做什么? TTL(time to live):该字段用于表示IP数据包的生命周期, 作用:限制一个数据在网络中无限循环的转发下去。...Pc1知道pc2的Mac地址后将pc2的mac地址保存的...
  • linux下获取路由器IP地址

    千次阅读 2017-10-11 17:21:48
    但是需要获取路由器地址,也就是笔记本的ip,才能进行通信。 通过百度搜索,得知gateway就是路由器地址。通过route指令可以得到 现在,我们需要从这些信息中得到 ip地址的信息,通过grep,搜索到第二行 ...
  • linux路由器建立心得(转)[@more@]首先,祝贺自己,配置好了自己的路由器,我要写的东西,是我在配置中,遇到的问题和解决办法,也算是一个小小的补充。共享给大家。引 为了使这个地址不再计算机重新启动后消失...
  • 当正在配置的Linux主机需要作为路由器使用时,通过以下步骤配置后,子网上的计算机就可以访问外网了: 1. 编辑 /etc/sysctl.conf 文件,添加 net.ipv4_ip_forward = 1 语句,这样就允许服务器使用Linux自身的内核...
  • linux构建路由器

    2011-02-17 16:28:00
    网络结构如图,Linux路由器这台计算机标识为A,它与三个网段相连,192.168.1.0/24,10.0.0.0/8,172.16.0.0/16。 A计算机必须拥有三块网卡,分别与三个网段相连。 假设: eth0与172.16.0.0相连, eth1与...
  • 新建一台Linux服务器版本为Linux7(双网卡),网卡1为内网和客户端一个网段,网卡2设置为桥接(模拟IPS网络),一台客户端(Window或Linux), Linux服务器基本配置 IP地址配置,服务器两张网卡都...
  • Linux 构造路由器

    2008-01-11 14:26:00
    网络结构如图,Linux路由器这台计算机标识为A,它与三个网段相连,192.168.1.0/24,10.0.0.0/8,172.16.0.0/16。 A计算机必须拥有三块网卡,分别与三个网段相连。 假设: eth0与172.16.0.0相连, eth1与10.0.0.0相连...
  • linux模拟路由器实验

    2017-11-12 20:13:00
    将3台主机设置成路由器 实现两台终端能够相互通信 网络结构如下: 准备工作: 1、批量复制虚拟机文件,创建多个系统,提前把mac地址修改 2、关闭防火墙 service iptables stop //centos6版本 systemctl stop ...
  • linux构建路由器

    2010-03-12 11:37:41
    网络结构如图,Linux路由器这台计算机标识为A,它与三个网段相连,192.168.1.0/24,10.0.0.0/8,172.16.0.0/16。 A计算机必须拥有三块网卡,分别与三个网段相连。 假设:eth0与172.16.0.0相连,eth1与10.0.0.0...
  • Linux系统也可以进行路由器的配置,只需在Linux主机上添加一些简单的路由条目,这些Linux主机就可以充当简单路由器的功能,以下以CentOS6环境下实现路由器功能为例:1. 如上图所示设置所有的IP地址2. 针对不同的机器...
  • Linux路由器的配置

    2009-12-15 17:23:00
    Linux路由器的配置 主要介绍如何用Linux做一个功能完备的路由器,这里将主要介绍静态路由器和动态路由器的配置,但不包括IP伪装或者说公用一个IP地址访问外面网络等问题。其已经不属于本主题讨论的范围,请参考...
  • linux主机充当路由器

    千次阅读 2018-09-30 17:39:39
    只有相同网段才会在网络中发送广播,只有该网段中有广播寻找的主机,才可以建立连接,在二层设备中,只认识MAC地址,不认识 ip地址,只有在与其他网段中的某一个IP地址进行通讯时,才会经过路由器,由路由器转发,...
  • 路由器作为连接各种网络或网段的重要组成设备,工作在 TCP/IP 四层模型的网络互联层,主要工作过程是解析网口数据包中 的目的 IP 地址,根据存储的路由规则决定下一跳节点,从而实现数据转发。
  • linux路由器搭建局域网实验

    千次阅读 2017-09-10 20:27:19
    局域网搭建实验需要使用到IP地址路由器的配置等知识,用到的知识较多,属于一个难点,并且还是一个重点。小编花了一点儿时间,将该实验整理了一下,一来可以帮助自己梳理一下这部分内容,巩固一下,另外也希望能够...
  • linux路由器使用

    2014-04-16 15:14:45
    实验拓扑:实验目的:192.168.1.0/24段地址模拟外网,实现pc端,能访问外网。1.linux端,需要开启路由转发。#echo 1 > /proc/sys/net/ip_forward2.执行iptables命令:#iptables -t nat -A POSTROUTING -O eth0 -j...
  • Linux做简单路由器

    千次阅读 2015-08-20 10:12:09
    但是真实环境是没法给予这个条件的,于是继续想到了万能的虚拟机,这里简单总结一下使用linux做虚拟路由器的方法,之所以说简单,是因为该路由只加了IP地址转发,而没有添加任何限制策略,先保证DR实验能够完成。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,417
精华内容 566
关键字:

linux路由器地址

linux 订阅