北京快三开奖

  • <tr id="U9YkSO"><strong id="U9YkSO"></strong><small id="U9YkSO"></small><button id="U9YkSO"></button><li id="U9YkSO"><noscript id="U9YkSO"><big id="U9YkSO"></big><dt id="U9YkSO"></dt></noscript></li></tr><ol id="U9YkSO"><option id="U9YkSO"><table id="U9YkSO"><blockquote id="U9YkSO"><tbody id="U9YkSO"></tbody></blockquote></table></option></ol><u id="U9YkSO"></u><kbd id="U9YkSO"><kbd id="U9YkSO"></kbd></kbd>

    <code id="U9YkSO"><strong id="U9YkSO"></strong></code>

    <fieldset id="U9YkSO"></fieldset>
          <span id="U9YkSO"></span>

              <ins id="U9YkSO"></ins>
              <acronym id="U9YkSO"><em id="U9YkSO"></em><td id="U9YkSO"><div id="U9YkSO"></div></td></acronym><address id="U9YkSO"><big id="U9YkSO"><big id="U9YkSO"></big><legend id="U9YkSO"></legend></big></address>

              <i id="U9YkSO"><div id="U9YkSO"><ins id="U9YkSO"></ins></div></i>
              <i id="U9YkSO"></i>
            1. <dl id="U9YkSO"></dl>
              1. <blockquote id="U9YkSO"><q id="U9YkSO"><noscript id="U9YkSO"></noscript><dt id="U9YkSO"></dt></q></blockquote><noframes id="U9YkSO"><i id="U9YkSO"></i>

                鸟哥的 Linux 私房菜
                目次 | Linux 根底篇 | Linux 效劳器篇 | Linux 企业使用篇 | 平安办理
                     
                 
                近来更新日期:2006/08/30
                我们在 网络根底 外面提到 路由 (route) 是一个紧张的观点,他可以控制我们的材料封包的走向! 别的,假如统一个网络外面有太多的电脑数目需求来播送的话,效能肯定不会太好,以是才会有 Netmask 对吧!明天我们换个角度来想一想,假如说我的网络内真的有太多的电脑数目了, 那么将整个网络切割成较小的数个子网络 (Subnet) 会是一个比拟好的作法,不外, 由于网络与网络之间的封包不行以间接互通材料,以是这个时分我们就需求运用 Router (路由器) 来帮助封包的传送了!


                大标题的图示路由
                我们在网络根底外面谈到过路由的相干观点, 他最大的功用便是在帮我们计划网络封包的通报方法与偏向。 至于路由的察看则可以运用 route 或许是 netstat 来查阅与设定。 好了,那么路由的方式有哪些?您又该怎样确认路由能否准确呢?


                小标题的图示路由表
                好像后面网络根底谈到的,每一台主机都有本人的路由表, 也便是说,您必需要透过你本人的路由表来通报你主机的封包到下一个路由器上头。 若传送出去后,该封包就得要透过下一个路由器的路由表来传送了,此时与你本人主机的路由表就没有干系啦! 以是说,假如网络下面的某一台路由器设定错误,那.....封包的流向就会发作很大的题目。 我们就得要透过 traceroute 来实验理解一下每个 router 的封包流向啰。

                OK!那你本人主机的路由表究竟有哪些局部呢?我们以底下这个路由表来阐明:
                [root@linux ~]# route -n
                Kernel IP routing table
                Destination  Gateway     Genmask        Flags Metric Ref  Use Iface
                192.168.1.0  0.0.0.0     255.255.255.0  U     0      0      0 eth0 <== 1
                127.0.0.0    0.0.0.0     255.0.0.0      U     0      0      0 lo   <== 2
                0.0.0.0      192.168.1.2 0.0.0.0        UG    0      0      0 eth1 <== 3
                
                起首,我们得晓得在 Linux 零碎下的路由表是由小网络陈列到大网络, 比方下面的路由表当中,路由是由‘ 192.168.1.0/24 --> 127.0.0.0/8 --> 0.0.0.0/0 (预设路由) ’来陈列的。 而当主机的网络封包需求传送时,就会查阅上述的三个路由规矩来理解怎样将该封包传送出去。

                你会不会以为奇异,为什么会有这几个路由呢?实在路由表次要有这几种状况来设计的:
                • 根据介面而存在的路由
                  比方 192.168.1.0/24 这个路由的存在是由于鸟哥的这部主机下面拥有 192.168.1.11 这个 IP 的干系! 也便是说,你主机下面有几个网络介面的存在时,该网络介面就会存在一个路由才对。 以是说,万一你的主机有两个网络介面时,比方 192.168.1.11, 192.168.2.11 时,那路由至多就会有:
                  [root@linux ~]# route -n
                  Kernel IP routing table
                  Destination  Gateway     Genmask        Flags Metric Ref  Use Iface
                  192.168.1.0  0.0.0.0     255.255.255.0  U     0      0      0 eth0 
                  192.168.2.0  0.0.0.0     255.255.255.0  U     0      0      0 eth1
                  .....以下省略.....
                  

                • 手动或预设路由(default route)
                  你可以运用 route 这个指令手动的赐与额定的路由设定,比方谁人预设路由 (0.0.0.0/0) 便是额定的路由。 运用 route 这个指令时,最紧张的一个观点是:‘你所计划的路由必需要是你的安装 (如 eth0) 或 IP 可以间接相同 (broadcast) 的状况’才行。举例来说,以上述的情况来看, 我的情况外面仅有 192.168.1.11 及 192.168.2.11 ,那我假如想要衔接到 192.168.100.254 这个路由器时, 下达:
                  [root@linux ~]# route add -net 192.168.100.0  \
                  > netmask 255.255.255.0 gw 192.168.100.254
                  SIOCADDRT: Network is unreachable
                  
                  看吧!零碎就会回应没有方法衔接到该网络,由于我们的网络介面与 192.168.100.0/24 基本就没有干系嘛! 那假如 192.168.100.254 真的是在我们的实体网络衔接上,那实在你应该是如许做:
                  [root@linux ~]# route add -net 192.168.100.0  \
                  > netmask 255.255.255.0 dev eth0
                  [root@linux ~]# route -n
                  Kernel IP routing table
                  Destination    Gateway      Genmask        Flags Metric Ref Use Iface
                  192.168.100.0  0.0.0.0      255.255.255.0  U     0      0     0 eth0
                  192.168.1.0    0.0.0.0      255.255.255.0  U     0      0     0 eth0
                  0.0.0.0        192.168.1.2  0.0.0.0        UG    0      0     0 eth1
                  
                  如许你的主机就会间接用 eth0 这个安装去实验衔接 192.168.100.254 了! 别的,下面路由输入的重点实在是谁人‘Flags 的 G ’了!由于谁人 G 代表运用内部的安装作为 Gateway 的意思!而谁人 Gateway (192.168.1.2) 必需要在我们的已存在的路由情况中。 这但是很紧张的观点喔! ^_^

                • 静态路由
                  除了下面这两种可以间接运用指令的办法来添加路由规矩之外, 另有一种透过路由器与路由器之间的协商以告竣静态路由的情况, 不外,那就需求额定的软件援助了,比方: zebra (http://www.zebra.org/) 或 CentOS 下面的 Quagga (http://www.quagga.net/) 这几个软件了!
                现实上,在 Linux 的路由规矩都是透过中心来告竣的, 以是这些路由表的规矩都是在中心功用内啊!也便是在影象体当中喔! ^_^


                小标题的图示IP Alias 的测试用处
                我们在 Linux 常用指令外面谈过 eth0:0 这个安装吧? 这个安装可以在本来的 eth0 下面模仿出一个假造介面出来,以让我们本来的网络卡具有多个 IP , 具有多个 IP 的功用就被称为 IP Alias 了。而这个 eth0:0 的安装可以透过 ifconfigip 这两个指令来告竣, 关于这两个指令的用处请翻归去之前的章节阅读,这里不再糜费篇幅啊!

                那你大概会问啊:‘这个 IP Alias 有啥用处啊?’好题目!这个 IP Alias 最大的用处便是可以让你用来‘应急’! 怎样说呢?我们就来聊一聊他的几个罕见的用处好了:
                • 测试用
                  怎样说用来测试呢?举例来说,如今运用 IP 分享器的冤家许多吧, 那 IP 分享器通常运用 WWW 介面来提供设定。那这个 IP 分享器通常会赐与一个公有 IP 亦便是 192.168.0.1 来让运用者开启 WWW 介面的阅读。题目来了,那你要怎样衔接上这部 IP 分享器呢? 嘿嘿!在不变动既有的网络情况下,你可以间接应用:
                  [root@linux ~]# ifconfig [device] [ IP ] netmask [netmask ip] [up|down]
                  [root@linux ~]# ifconfig eth0:0 192.168.0.100 netmask 255.255.255.0 up
                  
                  来树立一个假造的网络介面,如许就可以立即衔接上 IP 分享器了。

                • 在一个实体网络中含有多个 IP 网络
                  别的,假如像是在补习班或许是学校单元的话, 由于本来的主机网络设定最好不要随意修正,那假如要让同窗们各人互通一切的电脑资讯时, 就可以让每个同窗都透过 IP Alias 来设定统一网络的 IP , 云云各人就可以在统一个网段内停止各项网络效劳的测试了,很不错吧!

                • 既有设置装备摆设无法提供更多实体网卡时
                  假如你的这部主机需求衔接多个网络,但该设置装备摆设却无法提供装置更多的网卡时, 你只好勉为其难的运用 IP Alias 来提供差别网段的连线效劳了!
                不外,你需求晓得的是:一切的 IP Alias 都是由实体网卡模仿来的, 以是当要启动 eth0:0 时,eth0 必需要先被启动才行。而当 eth0 被封闭后, 以是 eth0:n 的模仿网卡将同时也被封闭。这得先要理解才行,不然经常会搞错启动的安装啊! 在路由规矩的设定当中,经常需求停止一些测试,那这个 IP Alias 就派的上用场了。 尤其是学校单元的训练情况当中! ^_^!

                根本上,除非有特别需求,不然发起你要有多个 IP 时,最幸亏差别的网卡下面告竣, 假如你真的要运用 IP Alias 时,那么怎样在开机的时分就启动 IP alias 呢?有两个复杂的办法可以运用:
                • 透过 /etc/rc.d/rc.local
                  将‘ifconfig eth0:n ....’的指令写入 /etc/rc.d/rc.local 当中,如许开机的时分就可以启动这个假造介面, 不外这办法有个缺点,便是当运用相似‘ /etc/init.d/network restart ’的指令时,该介面能够就会被取消。

                • 透过 /etc/sysconfig/network-scripts/ifcfg-eth0:0
                  举例来说,你可以透过底下这个办法来树立一个假造安装的设定文件:
                  [root@linux ~]# cd /etc/sysconfig/network-scripts
                  [root@linux network-scripts]# vi ifcfg-eth0:0
                  DEVICE=eth0:0            <==相称紧张!肯定要与档名相反的安装代号!
                  ONBOOT=yes
                  BOOTPROTO=static
                  IPADDR=192.168.0.100
                  NETMASK=255.255.255.0
                  NETWORK=192.168.0.0
                  BROADCAST=192.168.0.255
                  
                  [root@linux network-scripts]# ifup eth0:0
                  [root@linux network-scripts]# ifdown eth0:0
                  
                  关于安装的设定文件内的更多参数阐明,请参考连上 Internet 一文的相干阐明,在此不再叙说!运用这个办法有个益处,便是当你运用‘ /etc/init.d/network restart ’时, 零碎照旧会运用你的 ifcfg-eth0:0 文件内的设定值来启动你的假造网卡喔!别的, 不管 ifcfg-eth0:0 内的 ONBOOT 设定值为何,只需 ifcfg-eth0 这个实体网卡的设定档中, ONBOOT 为 yes 时,开机就会将全部的 eth0:n 都启动
                透过这两个复杂的办法,你就可以在开机的时分启动你的假造介面而获得多个 IP 在统一张网卡上了。 不外照旧要留意的是,假如你的 eth0 是运用 DHCP 来获得 IP 参数的话,那么由于 ifup 及 /etc/init.d/network 这两个 script 内顺序码撰写的方法,将会招致 ifcfg-eth0:0 这个设定档不会被运用到喔! 以是当你运用 DHCP 来获得 eth0 的 IP 时,你只好运用手动方法 (用 ifconfig) 来设定你的 IP Alias 了


                小标题的图示反复路由的题目
                许多冤家能够都有一个心爱的想法,那便是:‘我可不行以应用两张网卡, 应用两个相反网络的 IP 来添加我这部主机的网络流量’?现实上这是一个可行的方案, 不外必需要透过很多的设定来告竣,若您有需求的话,可以参考网中人年老写的这一篇:
                假如只是单纯的以为设定好两张网卡的 IP 在统一个网络罢了,那您可就大错特错了~ 为什么呢?还记得我们在路由表规矩外面提过网络封包的通报次要是根据主机内的路由表规矩吧! 那假如你有两张网络卡时,假定:
                • eth0 : 192.168.0.100
                • eth1 : 192.168.0.200
                那你的路由规矩会是怎样呢?实际上会酿成如许:
                [root@linux ~]# route -n
                Kernel IP routing table
                Destination     Gateway   Genmask         Flags Metric Ref   Use Iface
                192.168.0.0     0.0.0.0   255.255.255.0   U     0      0       0 eth1
                192.168.0.0     0.0.0.0   255.255.255.0   U     0      0       0 eth0
                
                也便是说,当要传送到 192.168.0.0/24 的网络时,都只会透过第一条规矩 ,也便是透过 eth1 来传出去,而不论是由 eth0 照旧由 eth1 出去的网络封包都市透过 eth1 来回传,这能够会形成一些题目, 尤其是一些防火墙的规矩方面,很能够会发作一些严峻的错误, 云云一来,基本没有方法告竣负载均衡,也不会有添加网络流量的结果! 更惨的是,还能够发作封包通报错误的状况呐!以是说,统一台主机下面设定相反网络的 IP 时, 得要特殊注意你的路由规矩,普通来说, 不该该设定统一的网段的差别 IP 在统一台主机下面。 比方下面的案例便是一个欠好的树模啊!

                大标题的图示路由器搭建
                在统一的地区网络外面可以透过播送 (broadcast) 理解到 MAC 与 IP 的剖析,然后透过 MAC 对 MAC 来传送材料封包, 在差别的网络外头就得要透过路由器的帮助。那么什么是路由器?他的次要功用是什么? 底下我们就来聊一聊!


                小标题的图示什么是路由器
                既然主机想要将材料传送到差别的网络时得透过路由器的帮助,以是啦,路由器的次要功用便是: ‘转递网络封包’啰! 也便是说,路由器会剖析泉源端封包的 IP 表头,找出目的的 IP 后,透过路由器自身的路由表 (routing table) 将这个封包向下一个目的 (next hop) 传送。这便是路由器的功用。

                那么路由器的功用可以怎样告竣呢?现在有两种办法可以告竣:
                • 硬体功用:比方 Cisco, IBM, 3Com 等公司都有消费硬体路由器,这些路由器内有嵌入式的作业零碎, 可以担任差别网络间的封包转译与转递等功用;
                • 软件功用:比方 Linux 这个作业零碎的中心就有提供封包转递的才能。
                高阶的路由器可以保持差别的硬体设置装备摆设,而且可以转译许多差别的封包款式,通常....价钱也方便宜啊! 在这个章节外面,我们并没有要讨论这么高阶的咚咚,仅讨论在乙太网络外头最复杂的路由器功用: 衔接两个差别的网络。嘿嘿!这个功用 Linux 就可以告竣了! 就好像路由表是由 Linux 的中心功用所提供的,这个转递封包的才能也是 Linux 中心所提供, 那怎样启动这个封包转递呢?很复杂啊,只需如许做即可:
                [root@linux ~]# echo "1" > /proc/sys/net/ipv4/ip_forward
                
                下面这个举措就在翻开 Linux 中心的封包转递才能。你可以将上述的指令写入 /etc/rc.d/rc.local 当中, 以使 Linux 可以在开机的时分就启动封包转递的功用, 也可以透过修正 /etc/sysctl.conf 来告竣开机启动封包转递:
                [root@linux ~]# vi /etc/sysctl.conf
                # 将底下这个设定值修正准确即可!
                net.ipv4.ip_forward = 1
                
                [root@linux ~]# sysctl -p  <==立即让该设定失效
                
                sysctl 这个指令是在中心任务时用来间接修正中心参数的一个指令,更多的功用可以参考 man sysctl 盘问。 不要疑心!只需这个举措,你的 Linux 就具有最复杂的路由器功用了。 而由于 Linux 路由器的路由表设定办法的差别,通常路由器计划其路由的方法就有两种:
                • 静态路由:间接以相似 route 这个指令来间接设定路由表到中心功用当中,设定值只需与网络情况符合即可。 不外,当你的网络有变革时,路由器就得要重新设定;

                • 静态路由:透过相似 zebra 软件的功用,这些软件可以装置在 Linux 路由器上, 而这些软件可以静态的探测网络的变革,而间接修正 Linux 中心的路由表资讯, 你无须手动以 route 来修正你的路由表资讯喔!
                理解了路由器之后,接上去你能够需求理解到什么是 NAT (Network Address Translation, 网络位址转译) 主机, NAT 是啥?实在 IP 分享器便是最复杂的 NAT 主机啦!嘿嘿,理解了吗?没错, NAT 可以告竣 IP 分享的功用, 而 NAT 自身便是一个路由器,但 NAT 比路由器多了一个‘ IP 转换’的功用。怎样说呢?
                • 普通来说,路由器会有两个网络介面,透过路由器自身的 IP 转递功用让两个网络可以相互相同网络封包。 那假如两个介面一边是大众 IP (public IP) 但一边是公有 IP (private IP) 呢? 由于公有 IP 不克不及间接与大众 IP 相同其路由资讯,此时就得要额定的‘ IP 转译’功用了;

                • Linux 的 NAT 主机可以透过修正封包的 IP 表头材料之泉源或目的 IP ,让来无私有 IP 的封包可以转成 NAT 主机的大众 IP ,就可以连上 Internet !
                以是说, 当路由器两头的网络辨别是 Public 与 Private IP 时,才需求 NAT 的功用! NAT 功用我们会在防火墙时谈及,这个章节仅议论一下路由器罢了啊! ^_^


                小标题的图示何时需求路由器?
                普通来说,电脑数目小于数十部的小型企业是无须路由器的,只需求应用 hub/switch 串接各部电脑, 然后透过单一线路衔接到 Internet 上即可。不外,假如是超越数百部电脑的大型企业情况, 由于他们的情况通常需求思索如下的情况,因而才需求路由器的搭建:
                • 实体线路之布线及效能的考量
                  在一栋大楼的差别楼层要串接一切的电脑能够有点难度,那可以透过每个楼层搭建一台路由器, 并将每个楼层路由器相衔接,就可以复杂的办理各楼层的网络; 别的,假如各楼层不想搭建路由器,而是间接以网络线串接各楼层的 hub/switch 时, 那由于统一网络的材料是透过播送来通报的,那当整个大楼的某一台电脑在播送时, 一切的电脑将会予以回应,哇!会形成大楼内网络效能的题目;以是搭建路由器将实体线路分开, 就有助于这方面的网络效能;

                • 部分独立与维护材料的考量
                  在阅读过网络根底章节后,您就会知道, 只需实体线路是衔接在一同的,那么当材料透过播送时,你就可以透过相似 tcpdump 的指令来监听封包材料, 而且予以盗取~以是,假如你的部分之间的材料能够需求独立, 或许是某些紧张的材料必需要在公司外部也予以维护时,可以将那些紧张的电脑放到一个独立的实体网络, 并额定加设防火墙、路由器等衔接上公司外部的网络。
                路由器就只是一个设置装备摆设,要怎样运用端看您的网络情况的计划!下面仅是举出一些使用案例。 底下我们先就搭建一个静态路由的路由器来玩一玩吧!


                小标题的图示静态路由之路由器
                假定在贵公司的网络情况当中,除了普通职员的任务用电脑是间接衔接到对外的路由器来保持 Internet, 在外部实在另有一个部分需求较平安的独立情况,因而这部份的网络计划能够是如许的状况:

                静态路由之路由器架构表示图
                图一、静态路由之路由器架构表示图

                以上图的架构来说,这家公司次要有两个 C class 的网络,辨别是 192.168.0.0/24 及 192.168.10.0/24 , 此中 192.168.0.0/24 是用来做为普通员工衔接网际网络用的,至于 192.168.10.0/24 则是给特别的部分用的。PC1 代表的是普通员工的电脑, PC2 及 PC3, PC4 则是特别部分的任务用电脑, Linux Router 则是这个特别部分用来衔接到公司外部网络的路由器。在如许的架构下, 该特别部分的封包就可以具有根底的维护了。

                由图一你也不难发明,只需是具有路由器功用的设置装备摆设 (Router A, Linux Router) 都市具有两个以上的介面, 辨别用来相同差别的网络,同时该路由器也都市具有一个预设路由啊! ^_^! 别的,你还可以加上一些防火墙的软件在 Linux Router 上, 以维护 PC2~PC4 的外部电脑呢!

                在 Router A 的局部,由于他具有 Public 与 Private IP ,以是这部 Router 必需要具有 NAT 的功用, 这个将来我们再引见。昔日的重点就在于 Linux Router 谁人玩意儿!在该主机下, 最好装备两张网卡,一张给 192.168.0.100,另一张给 192.168.10.254 这个 IP。 这部 Linux Router 的设定复杂的要命喔!你可以如许做的:


              2. Linux Router
                在这部主机内需求有两张网卡,鸟哥在这里将他界说为:
                • eth0: 192.168.10.254
                • eth1: 192.168.0.100
                那怎样设定呢?如许做就对了:
                1. 先处置 eth0 
                [root@linux ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
                DEVICE=eth0
                BOOTPROTO=static
                BROADCAST=192.168.10.255
                IPADDR=192.168.10.254
                NETMASK=255.255.255.0
                NETWORK=192.168.10.0
                ONBOOT=yes
                
                2. 再先处置 eth1 
                [root@linux ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth1
                DEVICE=eth1
                BOOTPROTO=static
                BROADCAST=192.168.0.255
                IPADDR=192.168.0.100
                NETMASK=255.255.255.0
                NETWORK=192.168.0.0
                GATEWAY=192.168.0.254    <==这个设定值很紧张喔!
                ONBOOT=yes
                
                3. 启动 IP 转递
                [root@linux ~]# echo "1" > /proc/sys/net/ipv4/ip_forward
                # 上述指令假如没有题目,将他参加 /etc/rc.d/rc.local 当中去!
                
                4. 重新启动网络,而且察看路由
                [root@linux ~]# /etc/init.d/network restart
                [root@linux ~]# route -n
                Kernel IP routing table
                Destination     Gateway        Genmask         Flags Metric Ref Use Iface
                192.168.0.0     0.0.0.0        255.255.255.0   U     0      0     0 eth1
                192.168.10.0    0.0.0.0        255.255.255.0   U     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         192.168.0.254  0.0.0.0         UG    0      0     0 eth1
                
                有够复杂吧!如许你的 Linux Router 就 OK 了呐!接上去则是 PC2 来作为典范。


              3. 受维护的网络,以 PC2 为例:
                不管你的 PC2 是哪一种作业零碎,你的情况都应该是如许的:
                • IP: 192.168.10.20
                • netmask: 255.255.255.0
                • network: 192.168.10.0
                • broadcast: 192.168.10.255
                • gateway: 192.168.10.254
                以 Linux 作业零碎为例,而且 PC2 仅有 eth0 一张网卡时,他的设定是如许的:
                [root@linux ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
                DEVICE=eth0
                BOOTPROTO=static
                BROADCAST=192.168.10.255
                IPADDR=192.168.10.20
                NETMASK=255.255.255.0
                NETWORK=192.168.10.0
                GATEWAY=192.168.10.254   <==这个设定最紧张啦!
                ONBOOT=yes
                
                [root@linux ~]# /etc/init.d/network restart
                [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
                127.0.0.0     0.0.0.0         255.0.0.0       U     0      0      0 lo
                0.0.0.0       192.168.10.254  0.0.0.0         UG    0      0      0 eth0
                

              4. Router A 的新增路由规矩:
                在如许的架构下,您的 PC2 曾经可以衔接上 Internet 了!只不外,当封包由 Internet 传返来时, 由于 Router A 并没有衔接到 192.168.10.0/24 网络的路由规矩,以是该封包‘会遗失’喔!那就费事了~ 以是,你的 Router A 必需要额定添加一条规矩,这条规矩是‘将目的为 192.168.10.0/24 的封包传送给 192.168.0.100 行止理’,假定 Router A 为 Linux 零碎时,那他应该要如许:
                [root@linux ~]# route add -net 192.168.10.0 netmask 255.255.255.0 \
                >  gw 192.168.0.100
                
                [root@linux ~]# route -n
                Destination   Gateway        Genmask         Flags Metric Ref  Use Iface
                192.168.10.0  192.168.0.100  255.255.255.0   UG    0      0      0 eth0
                # 你应该会发明上头这一条规矩存在才行!
                
                云云一来,你的 Router A 及 Linux Router 之间就可以相同,而且可以通报 192.168.10.0/24 的网络呐!


              5. PC1 间接与 PC2 的相同方法:
                在图一当中,你会发明谁人 PC1 必需要将预设路由设定为 192.168.0.254 , 以是当 PC1 要与 PC2 相同时,封包将由:

                PC1 --> Router A --> Linux Router --> PC2

                不外,在图一当中我们晓得实在 PC1 与 PC2 同时接到 Linux Router 上嘛! 以是 PC1 实在可以间接参加一条路由规矩,规则当 192.168.10.0/24 的封包目的时, 他可以间接传到 Linux Router 上即可,那可以如许做:
                [root@linux ~]# route add -net 192.168.10.0 netmask 255.255.255.0 \
                >  gw 192.168.0.100
                
                最初只需 PC2 运用 ping 可以连到 PC1,异样的, PC1 也可以 ping 到 PC2 的话, 就表现你的设定是 OK 的啦!嘿嘿!搞定!而透过如许的设定方法,您也可以发明到一件事, 那便是:‘路由是双向的,你必需要理解出去的路由与返来时的规矩’。 举例来说,在预设的状况下 (Router A 与 PC1 都没有额定的路由设定时),实在封包是可以由 PC2 连线到 PC1 的,但是 PC1 却没有相干的路由可以回应到 PC2 ~以是上头才会要您在 Router A 或许是 PC1 下面设定额定的路由规矩啊!如许说,明晰吧? ^_^

                以是说,用 Linux 作一个静态路由的 Router 很复杂吧!以下面的案例来说,你在 Linux Router 下面简直没有作什么额定的任务,只需将网络 IP 与网络介面临应好启动,然后加上 IP Forward 的功用, 让你的 Linux 中心援助封包转递,然后其他的任务我们的 Linux kernel 就自动帮你搞定了! 真是好复杂! ^_^

                不外这里必需要提示的是,假如你的 Linux Router 有设定防火墙的话, 并且另有设定相似 NAT 主机的 IP 假装技能,那可得特殊注意,由于还能够会形成路由误判的题目~ 上述的 Linux Router 当中‘并没有运用就任何 NAT 的功用’喔!特殊给他注意到!


              6. 小标题的图示静态路由之路由器设定:zebra
                如前所述,零碎办理员可以应用 route 这个指令手动的将路由规矩参加中心当中,这个方法称为静态路由。 静态路由异样是将路由规矩参加中心当中,只是这个参加的举措交由软件效劳 (daemon) 主动来实行, 在 Linux 下面罕见的路由效劳便是 zebra 这个套件所提供的。

                静态路由通常是用在路由器与路由器之间的相同,以是要让您的路由用具有静态路由的功用, 你必需要理解到对方路由器下面所提供的静态路由协议才行,如许两部路由器才干够透过该协议来相同相互的路由规矩。 现在罕见的静态路由协议有:RIPv1, RIPv2, OSPF, BGP 等等, zebra 都有援助这些路由协议喔!

                在 CentOS 上头,我们运用 quagga 这个套件来提供 zebra ,由于 quagga 是更新 zebra 而来的, 现实上,你可以说, quagga 便是 zebra 啦!赶忙装置他先:
                [root@linux ~]# yum install quagga
                [root@linux ~]# ls -l /etc/quagga
                -rw-r--r--  1 root   root      410 Jun  2 02:38 ripd.conf.sample
                -rw-r-----  1 quagga quagga     30 Aug 29 10:50 zebra.conf
                -rw-r--r--  1 root   root      373 Jun  2 02:38 zebra.conf.sample
                .....其他省略.....
                
                这个套件所提供的各项静态路由协议都安排到 /etc/quagga/ 目次内,底下我们以较为复杂的 RIPv2 协议来处置静态路由, 不外你得要留意的是,不管你要启动什么静态路由协议,谁人 zebra 都必需要先启动才行! 这是由于:
                • zebra 这个 daemon 的功用在更新中心的路由规矩;
                • RIP 这个 daemon 则是在向左近的其他 Router 相同和谐路由规矩的传送与否。
                而各个路由效劳的设定档都必需要以 /etc/quagga/*.conf 的档名来贮存才行,如上表我们可以发明 zebra 这个效劳是有设定好了,不外 ripd 的档名却不是 .conf 开头。以是我们必需要额定作些设定才行。 而假定我们的网络保持如下图二所示:

                静态路由的浅易图示
                图二、静态路由的浅易图示

                这两部 Linux Router 辨别担任差别的网络,且可以透过 192.168.0.0/24 这个网络来相同。 在没有设定额定路由规矩的状况下,谁人 PC1 与 PC2 是无法相同的!别的, zebra 必需要同时装置在两部 Linux Router 上头才行, 并且我们只需设定好这两部主机的网络介面 (eth0, eth1) 后,不需求手动输出额定的路由设定喔!可以透过 RIP 这个路由协议来搞定的!


              7. 设定 zebra
                我们先设定图二右手边那一台 Linux Router,关于 zebra.conf 你可以如许设定的:
                1. 先设定 zebra 而且启动 zebra 
                [root@linux ~]# vi /etc/quagga/zebra.conf
                hostname linux.router1  <==赐与这个路由器一个主机称号,随意取!
                password linux1         <==赐与一个暗码!
                enable password iinux1  <==将这个暗码失效!
                log file zebra.log      <==将一切 zebra 发生的资讯存到登录档中
                
                [root@linux ~]# /etc/init.d/zebra start
                [root@linux ~]# netstat -tunlp
                Active Internet connections (only servers)
                Proto Recv-Q Send-Q Local Address   Foreign Address   State   PID/Program name
                tcp        0      0 127.0.0.1:2601  0.0.0.0:*         LISTEN  6422/zebra
                
                细心看,由于 zebra 这个效劳的义务次要是在修正 Linux 零碎中心内的路由, 以是他仅监听本机介面罢了,并不会监听内部的介面才对!别的,在 zebra.conf 这个文件当中, 我们所设定的谁人暗码是有作用的喔!可以让我们登入 zebra 这套软件呢! 好了,我们来查一查这个 2601 的 port 能否准确的启动的呢?
                [root@linux ~]# telnet localhost 2601
                Trying 127.0.0.1...
                Connected to localhost.
                Escape character is '^]'.
                
                Hello, this is Quagga (version 0.98.3).
                Copyright 1996-2005 Kunihiro Ishiguro, et al.
                
                User Access Verification
                
                Password: <==在这里输出方才你设定的暗码啊!
                linux.router1> <==在这边输出‘ ? ’就可以晓得有几多指令可运用
                  echo      Echo a message back to the vty
                  enable    Turn on privileged mode command
                  exit      Exit current mode and down to previous mode
                  help      Description of the interactive help system
                  list      Print command list
                  quit      Exit current mode and down to previous mode
                  show      Show running system information
                  terminal  Set terminal line parameters
                  who       Display who is on vty
                linux.router1> list
                  echo .MESSAGE
                  enable
                  exit
                  help
                  list
                  quit
                  show debugging zebra
                  show history
                  show interface [IFNAME]
                  show ip forwarding
                  show ip route
                ....其他省略....
                linux.router1> show ip route
                Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
                       I - ISIS, B - BGP, > - selected route, * - FIB route
                
                K>* 0.0.0.0/0 via 192.168.0.254, eth0
                C>* 127.0.0.0/8 is directly connected, lo
                C>* 192.168.0.0/24 is directly connected, eth0
                C>* 192.168.10.0/24 is directly connected, eth1
                linux.router1> exit
                Connection closed by foreign host.
                
                细心看到,我们登入这个 zebra 的软件之后,可以输出‘help’或问号‘?’, zebra 就会表现出你可以实行的指令有哪些,比拟常用确当然是盘问路由规矩啰! 以‘ show ip route ’来查阅,后果可以发明现在的介面与预设路由都被表现出来了, 表现的后果当中,K 代表以 router 这个指令间接参加中心的路由规矩,C 则代表你的网络介面相干的路由规矩

                现实上,假如你还想要添加额定的静态路由的话,也可以透过 zebra 而不用运用 route 指令呢! 比方想要添加 10.0.0.0/24 给 eth0 来处置的话,可以如许做:
                [root@linux ~]# vi /etc/quagga/zebra.conf
                # 新增底下这一行喔!
                ip route 10.0.0.0/24 eth0
                
                [root@linux ~]# /etc/init.d/zebra restart
                [root@linux ~]# telnet localhost 2601
                User Access Verification
                
                Password: <==这里输出暗码
                linux.router1> show ip route
                Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
                       I - ISIS, B - BGP, > - selected route, * - FIB route
                
                K>* 0.0.0.0/0 via 192.168.0.254, eth0
                S>* 10.0.0.0/24 [1/0] is directly connected, eth0
                C>* 127.0.0.0/8 is directly connected, lo
                C>* 192.168.0.0/24 is directly connected, eth0
                C>* 192.168.10.0/24 is directly connected, eth1
                
                嘿嘿!立即就会多出一笔路由的规矩,并且最左边会表现 S,亦便是静态路由 (Static route) 的意思。 云云一来,我们零碎办理员可就轻松多了! 设定完 zebra 之后,接上去我们可以开端看看 ripd 这个效劳啰!


              8. 设定 ripd 效劳
                ripd 这个效劳可以在两部 Router 之间停止路由规矩的交流与相同, 固然啦,假如你的情况外面有相似 Cisco 或许是其他有提供 RIP 协议的路由器的话, 那么你固然也是可以透过这个 RIP 让您的 Linux Router 与其他硬体路由器相互相同的呐! 闲话少说,来设定 ripd 吧!
                [root@linux ~]# vi /etc/quagga/ripd.conf
                hostname linux.router1  <==这里是设定 Router 的主机称号罢了
                password linux1         <==设定好你本人的暗码喔!
                router rip              <==启动 Router 的 rip 功用
                network 192.168.0.0/24  <==针对这个网络来停止监听的举措!
                network eth0            <==针对这个介面来停止监听的举措
                network 192.168.10.0/24 <==针对这个网络来停止监听的举措!
                network eth1            <==针对这个介面来停止监听的举措
                version 2               <==启动的是 RIPv2 的效劳
                log stdout              <==间接在荧幕输入规范输入的材料
                
                [root@linux ~]# /etc/init.d/ripd start
                
                [root@linux ~]# netstat -tulnp
                Active Internet connections (only servers)
                Proto Recv-Q Send-Q Local Address  Foreign Address State  PID/Program name
                tcp        0      0 0.0.0.0:2602   0.0.0.0:*       LISTEN 21373/ripd
                
                根本上,如许就设定完成一台路由器的 RIP 静态路由协议了!在上头 ripd.conf 的设定当中, 他会自动以 eth0 及 192.168.0.0/24 这个网络的功用来停止搜刮,云云一来,将来你停止任何路由规矩的变化, 或许是整个网络的主机 IP 停止变动,你将不需求重新到每部 Router 上变动! 由于这些路由器会主动的更新他们本人的规矩喔!嘿嘿!接上去,异样的举措请你到 图二右边那部 Linux Router 下面设定一下! 由于整个设定的流程都一样,以是这里鸟哥就省略啦!


              9. 反省 RIP 协议的相同后果
                在两部 Linux Router 都设定妥当之后,你可以登入 zebra 去看这两部主机的路由更新后果喔! 举例来说,鸟哥登入图二左边那部 Linux Router 后,而且登入 zebra , 察看路由会是如许的状况:
                [root@linux ~]# telnet localhost 2601
                User Access Verification
                
                Password: <==不要遗忘了暗码啊!
                linux.router1> show ip route
                Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
                       B - BGP, > - selected route, * - FIB route
                
                K>* 0.0.0.0/0 via 192.168.0.254, eth0
                C>* 127.0.0.0/8 is directly connected, lo
                C>* 192.168.0.0/24 is directly connected, eth0
                R>* 192.168.5.0/24 [120/2] via 192.168.0.200, eth0, 00:06:48
                C>* 192.168.10.0/24 is directly connected, eth1
                
                假如你有看到上述的字体,嘿嘿!那便是乐成啦!谁人最右边的 R 代表的是透过 RIP 通讯协议所设定的路由规矩啦! 云云一来,我们的路由器设定就搞定啰~

                透过这个 zebra 以及 RIPv2 的路由协议的辅佐,我们可以轻松的就将路由规矩分享到左近区网的其他路由器上头, 比起单纯运用 route 去修正 Linux 的中心路由表,这个举措固然要疾速许多! 不外,假如是很小型的网络情况,那么不要运用这个 zebra 啊!由于有点节外生枝的觉得。 假如您的企业情况真的有够大,那么玩一玩这个 zebra 共同一些静态路由协议,嘿嘿!也是可行的啦!

              10. 大标题的图示ARP Proxy 让路由器两头在统一网络
                假如你一开端设计的网络情况便是统一个 C class 的网络,比方 192.168.10.0/24 , 厥后由于某些要素必需要将某些主机搬到比拟外部的情况中,比方图一的 PC2 ~ PC4 。 然后又由于某些要素,以是你不克不及变卦 PC2 ~ PC4 的 IP ,也便是说,有点像底下如许的图示:

                路由器双方是统一网络的特别情况
                图三、路由器双方是统一网络的特别情况

                首次晤面~看到眼睛将近失上去哩!怎样会双方的主机都在统一个网络内?并且还被规则不克不及够变动原先的 IP 设定, .....真是一个头两个大啊~云云一来,在 Linux Router 双方要怎样制造路由啊?好题目!真是好题目~ 由于 OSI 第三层网络层的路由是一条一条去设定比对的,以是假如两块网卡下面都是统一个网络的 IP 时, 就会发作错误。那怎样处置啊?

                既然 OSI 第三层无法处理,那么能否以第二层的材料衔接层来处置?看倌应该还记得 OSI 第二层最紧张的便是谁人 ARP 协议, 他可以用来停止 IP 与 MAC 的对应。那么由图三我们晓得 PC1 要与 PC2 等主机相同时,都需求透过 Linux Router , 那有没有方法透过 ARP 见告整个网络内的电脑,要传送到 PC2~PC4 的封包都需求颠末 Linux Router 呢? 呵呵!好想法。你可以如许想:

                路由器双方是统一网络的特别情况
                图四、路由器双方是统一网络的特别情况

                也便是说:
                1. 当 Linux Router 的 eth1 谁人网络主机想要衔接到 PC2~PC4 的主机时,由 Linux Router 担任接纳;
                2. 当 Linux Router 要传送材料到 PC2~PC4 时,务须要由 eth0 来传送;
                3. 当 Linux Router 要传送的材料为 192.168.10.0/24 ,但并非 PC2~PC4 时,需由 eth1 传送;
                4. 当 Linux Router 的 eth0 谁人网络主机想要衔接到 PC1 时,由 Lniux Router 担任接纳。
                要到达 (1) 与 (4) 的要求并不难,我们可以透过 ARP Proxy 这玩意儿,啥是 ARP Proxy 呢?便是在 Linux Router 下面事后规则‘将 192.168.10.20, 192.168.10.30, 192.168.10.40 这三个 IP 的 MAC 都对应到 Linux Router 上!’由于是地区网络内,因而都是透过播送的方法到达 ARP 协议所需求的 IP 与 MAC 的对应,以是啦,每一台在 eth1 那真个主机都市‘误判’那三个 IP 是 Linux Router 所拥有, 如许就可以让封包传给 Linux Router 啦!

                再接上去,我们的 Linux Router 必需要额定指定路由,设定:
                • 若目的是 PC2 ~ PC4 时,该路由必需要由 eth0 发送出去才行,
                • 若目的不为 PC2 ~ PC4 ,且目的在 192.168.10.0/24 的网络时,需由 eth0 发送出去才行。
                也便是说,你必需要指定路由规矩当中,谁人 PC2~PC4 具有优先选择权,然后其他的同网络封包才由 eth1 来传送。 如许就可以告竣我们所想要的了局啦!^_^!看样子好像很难,实在设定方面还挺复杂的,你可以透过 arp 以及 route 这两个指令来告竣喔!
                1. 先设定 ARP Proxy ,见告 eth1 地点网络 IP 与 MAC 的对应
                [root@linux ~]# arp -i eth1 -s 192.168.10.20 00:11:12:13:14:15 pub
                [root@linux ~]# arp -i eth1 -s 192.168.10.30 00:11:12:13:14:15 pub
                [root@linux ~]# arp -i eth1 -s 192.168.10.40 00:11:12:13:14:15 pub
                # 看图四的阐明,我这里假定 eth1 的 MAC 是 00:11:12:13:14:15 啦!
                [root@linux ~]# arp -i eth0 -s 192.168.10.50 00:01:02:03:04:05 pub
                # 看图四的阐明,我这里假定 eth0 的 MAC 是 00:01:02:03:04:05 啦!
                
                [root@linux ~]# arp -n
                Address             HWtype  HWaddress      Flags Mask       Iface
                192.168.10.20       *       *              MP               eth1
                192.168.10.30       *       *              MP               eth1
                192.168.10.40       *       *              MP               eth1
                192.168.10.50       *       *              MP               eth0
                # 瞧!有三个 IP 都酿成属于俺的 eth1 的啦!然后一个属于 eth0
                
                2. 开端处置路由,需求肃清失 eth0 的路由,而且添加 PC2~PC4 的单机路由
                [root@linux ~]# route del -net 192.168.10.0 netmask 255.255.255.0 eth0
                [root@linux ~]# route add -host 192.168.10.20 eth0
                [root@linux ~]# route add -host 192.168.10.30 eth0
                [root@linux ~]# route add -host 192.168.10.40 eth0
                # 如许就设定妥当啦!将你的路由计划好啰!
                
                [root@linux ~]# route -n
                Kernel IP routing table
                Destination     Gateway  Genmask         Flags Metric Ref    Use Iface
                192.168.10.20   0.0.0.0  255.255.255.255 UH    0      0        0 eth0
                192.168.10.30   0.0.0.0  255.255.255.255 UH    0      0        0 eth0
                192.168.10.40   0.0.0.0  255.255.255.255 UH    0      0        0 eth0
                192.168.10.0    0.0.0.0  255.255.255.0   U     0      0        0 eth1
                # 看到下面这一行,固然我的两块网卡都是在 192.168.10.0/24 ,
                # 不外真正针对整个网络传送的,仅有 eth1 那一块的意思!
                
                瞧!如许一来,你的 PC1 就可以 ping 到 PC2~PC4 的主机了!材料的传输下面也没有题目。 这个作法是相称有协助的呐!关于预设架构不想变动的情况来说。 ^_^! 不外,由这个案例你也可以清晰的晓得,能不克不及连线实在与路由的干系才大哩! 而路由是双向的,你必需要考量到这个封包怎样返来的题目喔!

                大标题的图示重点回忆
                • 网络卡的代号为 eth0, eth1, eth2...,而第一张网络卡的第一个假造介面为 eth0:0 ...
                • 网络卡的参数可运用 ifconfig 间接设定,亦可运用设定档如 /etc/sysconfig/network-scripts/ifcfg-ethn 来设定;
                • 路由是双向的,以是由网络封包发送处发送到目的的路由计划,必需要思索回程时能否具有绝对的路由, 不然该封包能够会‘遗失’;
                • 每部主机都有本人的路由表,此路由表 (routing table) 是作为封包传送时的途径根据;
                • 每部可对外 Internet 传送封包的主机,其路由资讯中应有一个预设路由 (default gateway);
                • 要让 Linux 作为 Router 最紧张的是启动中心的 IP Forward 功用;
                • 反复路由能够会让你的网络封包通报到错误的偏向;
                • 静态路由通常是用在两个 Router 之间相同相互的路由规矩用的,罕见的 Linux 上的静态路由套件为 zebra ;
                • arp proxy 可以透过 arp 与 route 的功用,让路由器两头都在统一个网段内;
                • 普通来说,路由器上都市有两个以上的网络介面
                • 现实上,Router 除了作为路由转换之外,在 Router 下面搭建防火墙,亦可在企业外部再分开出多个需求平安 (Security) 的单元材料的区隔!

                大标题的图示课后训练
                • 叨教您怎样将您的 eth0 这个介面修正成为 192.168.100.2 在网络 192.168.100.0/25 之内的网络参数内容?
                • 由于 192.168.100.0/25 的 netmask 为 255.255.255.128 ,以是可以如许做:
                  ifconfig eth0 192.168.100.2 netmask 255.255.255.128 up
                  如许即可!假如尚须其他的参数,则需求以文件方式来下达,如 vi /etc/sysconfig/network-scripts/ifcfg-eth0,并修正为:
                  DEVICE=eth0
                  ONBOOT=yes
                  BOOTPROTO=static
                  IPADDR=192.168.100.2
                  NETMASK=255.255.255.128
                  NETWORK=192.168.100.0
                  BROADCAST=192.168.100.127
                • 请手动设定 eth0:1 这个假造介面,使成为网络参数: 192.168.200.2, 网络在 192.168.200.0/24。
                • ifconfig eth0:1 192.168.200.2 up
                • 怎样察看路由表?
                • route -n 即可查阅!留意到 0.0.0.0 谁人目的(default gateway)。
                • 怎样启动 Linux 的 IP Forward 功用?
                • 间接以‘echo "1" > /proc/sys/net/ipv4/ip_forward ’即可!
                • 假定您是一个学校单元的资讯办理员,学校内有 200 部电脑,送上面大头的旨意,必需要将 200 部电脑分为 4 个 Subnet ,叨教您应该怎样布线(请画出表示图)?而这 4 个 Subnet 的网络参数怎样选择(请自行选择)?而能否需求 Router ?假如需求的话,假定每个 Router 仅能有两个网络实体介面,那么该怎样布线?(注:不要运用假造介面)
                • 假定你想要衔接到 168.95.1.1 ,那么你该怎样判别你颠末‘几多个’节点?
                • 可以运用 traceroute 168.95.1.1 来剖析每个节点的传送资讯,也可以透过 ping 168.95.1.1 所回传的谁人 ttl 值判别节点数目。
                • 万一您的网络有点进展,发明能够是网络上某个节点呈现题目,您应该怎样确认是哪一台 Router 出题目?
                • 就应用 traceroute 吧!

                大标题的图示参考材料

                2002/08/09:第一次完成日期!
                2003/08/22:重新编辑文章,并添加重点回忆与课后训练
                2006/08/21:将旧的文章挪动到 此处
                2006/08/30:参加了 zebra 以及 ARP Proxy 等与 Router 比拟相干的议题!
                 
                     
                中国存储网 ChinaStor.com排版整理
                原文作者鸟哥,主页,更多Linux学习材料在线看:Linux零碎办理员手册 - Linux下令大全 - Linux挪用大全- Linux专栏 - 国产Linux