路由观念与路由器设定-linux鸟哥的私房菜服务器篇08(阅读笔记)

8.1    路由
    8.1.1 路由表产生的类型
1. 依据网络接口产生的IP二存在的路由
2. 手动或预设路由(default route)  
    注意:你所规划的路由必须是你的装置(如eth0)可以直接沟通的情况(反过来说,如果想连接到一个和当前主机直接相连的路由,那么主机的路由表中必须有那个路由的信息)
    # route add -net 192.168.5.0 netmask 255.255.255.0 dev eth0        ----假设与eth0连接的路由的IP为192.168.5.254
3. 动态路由的学习
             注意:需要额外软件的支持,比如zebra、quaggaa
        8.1.2.1 IP Alias几个常见的用途
1. 建立虚拟的网络接口来连接一个虚拟的网络接口
    ifconfig [device] [IP] netmask [netmask IP] [up|down]
    # ifconfig eth0:0 192.168.0.100 netmask 255.255.255.0 up        ----在eth0上启动一个新的接口(不需要更动原来的网络参数)
2. 在一个实体网域中含有多个IP网域
3. 既有设备无法提供更多实体网卡
    8.1.3 如何在开机时启动IP Alias
        注意:如果是DHCP获得IP的方式要使用实体网卡才可以(也不一定)
方式一:. 将ifconfig指令写入/etc/rc.d/rc.local,当然因为没有写入network的配置文件,因此重启网络无法重启IP Alias
    # vim /rc.d/rc.local
        ifconfig eth0:0 192.168.0.100 netmask 255.255.255.0 up
方式二:透过建立虚拟设备的配置文件
    # cd /etc/sysconfig/network-scripts
    # vim ifcfg-eht0:0        ----编写独立的配置文件
DEVICE=eth0:0        ----与文件名对应
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.0.100
NETMASK=255.255.255.0
    # ifup eth0:0    ----启动这个虚拟设备
    # ifdown eth0:0        ----关闭这个虚拟网卡
    # /etc/init.d/network            ----重启整个网络可以启动这个虚拟设备
    8.1.3 重复路由的问题
        注意:多个IP不要设在同一个网域,根据路由规则来自多个接口的封包有可能只会从一个接口给与响应,无法均衡带宽
8.2    路由器架设
    8.2.1 什么是路由器与IP分享器:sysctl.conf
        8.2.1.1 路由功能实现方式
1. 硬件功能:路由器内有嵌入式操作系统
2. 软件功能:例如Linux操作系统的核心就提供封包转递的能力
    # cat /proc/sys/net/ipv4/ip_forward        ----Linux核心转递封包配置文件
1. 启动封包转递方式一
    # echo 1 > /proc/sys/net/ipv4/ip_forward        ----启动档案中的设定,不过重启后会失效
2. 启动封包转递方式二
    # vim /etc/sysctl.conf        ----修改系统配置文件达成封包转递的功能
        net.ipv4.ip_forward=1        ----本来为0
    # sysctl -p        ----立即让该设定生效
        8.2.1.2 路由设备规划路由的两种方式
1. 静态路由:直接以类似route的指令直接设定路由表到核心功能当中,设定值只要与网域环境相符即可。(当网域有变化时,需要手动重新设定)
2. 动态路由:透过类似quagga或zebra软件的功能(动态侦测网域的变化)
        8.2.1.3 IP分享器(NAT服务器,Network Address Translatiuon,网络地址转换)
            注意:NAT本身就是一个路由器,只是多了一个IP转换的功能。只有路由器两端的网域分别是公有IP和私有IP时才需要NAT功能。
1. 如果路由器的两个接口一个是public IP,一个是private IP,因为私有IP不能直接与公共IP沟通其路由信息,此时就需要额外的NAT服务;
2. Linux的NAT服务器透过修改封包的IP表头数据之来源或目标IP,让来自私有IP的封包转成NAT服务器的公有IP,就可以连上Internet
    8.2.2 何时需要路由器
1.  实体线路之布线及效能的考虑
2. 独立部门与保护数据的考虑
    8.2.3 静态路由之路由器实作
        1. 网络结构
                                     Internet
----------------------------|------------------------------------
                               Router A(NAT)
                                          |
workstation——    Hub/Switch—— Linux Router
                                                                    |
                              -------------------------------------------------------
                               client Linux ——   Hub/Switch——winxp
                                                                    |
                                                                win7
                               -------------------------------------------------------
            2. 节点信息
Router A:
IP外(public IP)
IP内(192.168.1.254/24)
Routing(192.168.100.0/24->Linux Router)
Default gateway(外部ISP提供)
-------------------------------------------------
Linux Router:
IP外(192.168.1.100/24)
IP内(192.168.100.254/24)
Default gateway(192.168.1.254)
workstationx:
IP:192.168.1.101
Default gateway:192.168.1.254
option(加入Linux Router)
-------------------------------------------------
client Linux:
IP:192.168.100.10
Default gateway:192.168.100.254
win7:
IP:192.168.100.20
Default gateway:192.168.100.254
winxp:
IP:192.168.100.20
Default gateway:192.168.100.254
-----------------------------------------------------
            3.  设置Linux Router
第一步:设置对外的eth0接口
    # vim /etc/sysconfig/network-scrips/ifcfg-eth0
DEVICE="eth0"
HWADDR="08:00:27:71:85:BD"
NM_CONTROLLED="no"
ONBOOT="yes"
BOOTPROTO=none
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.254        ----透过Router A连接出去
第二步:再处理eth1这张之前你一直没有驱动的网络卡(内网),对内不需要网关
    # vim /etc/sysconfig/network-scrips/ifcfg-eth1
DEVICE="eth1"
HWADDR="08:00:27:2A:30:14"
NM_CONTROLLED="no"
ONBOOT="yes"
BOOTPROTO=none
IPADDR=192.168.100.254
NETMASK=255.255.255.0
第三步:启动IP转递
    # vim /etc/sysctl.conf
        net.ipv4.ip_forword=1         ----启动转递封包功能
    # sysctl -p    ----立即启动封包转递功能
    # cat /proc/sys/net/ipv4/ip_forword
                               ----是1就对了
                    第四步:重新启动网络,并且观察路由与ping Router A
                        # /etc/init.d/network restart        ----重启网络
                        # route -n         ----查看路由表,看看默认网关设置是否正确
                        # ping -c 2 192.168.1.254        ----ping一下网关(Router A)
                    第五步:暂时关闭防火墙!这一步也很重要
                        # /etc/init.d/iptables stop  
                4. 设置受保护的网域内的主机(以clientlinux为例)
                    # vim /etc/sysconfig/network-scripts/ifcfg-eth0        ----eht0是仅有的一张网卡
DEVICE="eth0"
HWADDR="08:00:27:2A:30:14"
NM_CONTROLLED="no"
ONBOOT="yes"
BOOTPROTO=none
IPADDR=192.168.100.10
NETMASK=255.255.255.0
                    GATEWAY=192.168.100.254        ----Linux Router 
                    DNS1=168.95.1.1        ----有这个就不需要修改/etc/resolv.conf
                    # /etc/init.d/network restart        ----重启网络
                    # route -n        ----查看下路由表信息
                    # ping -c 2 192.168.100.254        ----ping Linux  Router试试
                    # ping -c 2 192.168.1.254        ----ping Router A 会失败,发起联机的封包发到Router A,Router A知道封包的来源IP,但路由表中没有下层网域的记录,因此就走默认网关,发到外网去了,回不来了
                    # route add -net 192.168.100.0 netmask 255.255.255.0 gw 192.168.1.100             ----这样那个ICMP封包就能找回去了,但下次重启后设个设定就无效了
                    # vim /etc/sysconfig/network-scripts/route-eth0        ----建立路由配置文件
                        192.168.100.0/24 via 192.168.1.100 dev eth0    ----【目标网域 via 透过的网关 dev 装置】
                5. 设置让workstation与clientlinux不透过Router A的沟通方式
                    # vim /etc/sysconfig/network-scripts/route-eth0        ----workstation的eth0网卡
                        192.168.100.0/24 via 192.168.1.100 dev eth0        ----这个路由器和workstation连在同一个集线器上     
8.3    动态路由架设:quagga(zebra+ripd)
       8.3.1  准备工作
            1. 常见的动态路由协议
                RIPv1, RIPv2, OSPF, BGP等
            2. zebra与RIP
                zebra:    这个daemon负责更新核心的路由规则。
                RIP:    这个daemon则是想附近的其它Router沟通协调路由规则的传送与否。
            3. 安装quagga
                注意:各个路由服务的配置文件都必须以/etc/quagga/*.conf的档名来存储
            # yum install quagga        ----zebra的延伸,这个软件提供的动态路由协议放置在/etc/quagga/
        8.3.2 练习quagga
           -----------------------------------------------------------------------
                            Router Z1——   Switch   ——Router Z2
                                |                                                     |
          PC Z1—— Switch ——PC Z2        PC Z3——Switch——PC Z4
          -----------------------------------------------------------------------
        
        节点信息:
        ----------------------------------
          Router Z1:
            IP1:    192.168.1.200/24
            IP2:    192.168.200.254/24
            Default getway:    192.168.1.254
          Router Z2:
            IP1:    192.168.1.100/24
            IP2:    192.168.100.254/24
        ----------------------------------------
          PC Z1:
            IP:    192.168.200.10
          PC Z1:
            IP:    192.168.200.10
        -----------------------------------------
        1. 将所有主机的IP设定妥当
                注意:路由器即Router Z1和Router Z2除了网络参数设定妥当外还需要加上ip_forword参数的设定  
        2. 在两部Router上面设定zebra   
            第一步:先设定会影响动态路由服务的zebra并启动zebra
                # vim /etc/quagga/zebra.conf        ----编辑quagga的配置文件
                    hostname www.centos.vbird        ----给与这个路由器一个主机名,随便去
                    password linuxz1        ----给与一个密码
                    enable passwd linuz1        ----将这个密码生效
                    logfile /var/log/quagga/zebra.log        ----将所有的zebra产生的信息存到登录文件中
                # /etc/init.d/zebra start        ----启动zebra服务    
                # chkconfig zebra on        ----设定开机自动启动
                # netstat -tunlp | grep zebra        ----看看这个服务是否启动顺便看看开启了那个端口(2601)
                # telnet localhost 2601        ----登陆zebra服务      
                 >show ip  route
                    -------------------------------------------------------------------
                    |    K:    代表以类似route指令加入核心的路由规则,包括route-ethN所产生的规则
                    |    C:    代表由你的网络接口所设定的IP而产生的路由规则
                    |    S:    以zebra功能所设定的静态路由信息
                    |    R:    就是透过RIP协议所增加的路由规则
                    -------------------------------------------------------------------
                # vim /etc/quagga/zebra.conf        
                    ip route 10.0.0.0/24 eth0        ----新增这一行(添加一条新的路由信息) 
        3. 在两部Router上面设定ripd
            # vim /etc/quagga/ripd.conf        ----设定Router Z1
                hostname www.centos.vbird        ----设定Router的主机名
                password linuxz1        ----设定好自己的密码
                debug rip events        ----可以记录较多的错误信息
                debug rip packet        
                router rip        ----启动Router的rip功能
                version 2        ----启动的是RIPv2的服务(默认)
                network 192.168.1.0/24        ----这就是我们管理的接口
                network 192.168.100.0/24    
                interface eth0        ----针对外部的那个接口,略过身份验证
                no ip rip authentication mode        ----略过身份验证
                log file /var/log/quagga/zebra.log        ----登录档设定与zebra相同即可
            # /etc/init.d/ripd start        ----重启ripd
            # chkconfig ripd on        ----设置开机启动
            # netstat -tulnp | grep ripd        ----查看启动状况
        4. 检查RIP协议的沟通结果
8.4    特殊状况:路由器两边界面是同一个IP网段:ARP Proxy
    1. 网络结构
                                     Internet
        ----------------------------|-----------------------------------------
                               Router A(NAT)
                                          |
            PC 1——    Hub/Switch—— Linux Router
                                                                    |
                              -------------------------------------------------------
                                       PC 2 ——   Hub/Switch——PC 4
                                                                    |
                                                                PC 3
                               -------------------------------------------------------
    2. 节点信息
        Router A:
            IP(外):public IP
            IP(内):192.168.1.254
        ---------------------------------
        Linux Router:
            IP(eht0 外):192.168.1.100/24
            IP(eth1 内):    192.168.1.200/24
        PC 1:
            IP:    192.168.1.101
        ---------------------------------
        PC 2:
            IP:    192.168.1.10
        PC 3:
            IP:    192.168.1.20
        PC 4:
            IP:    192.168.1.30
        ---------------------------------
    3. 设定Linux Router(以下命令可以制作成一个脚本设定每次开机自动执行)
        第一步:先设定外部eth0的ARP Proxy,让三个IP对应到自己的MAC,让外部接口拥有三个IP的操控权
            # arp -i eth0 -s 192.168.1.10 08:00:27:71:85:BD pub        ----设定PC 2的IP对应Linux Route rMAC
            # arp -i eth0 -s 192.168.1.10 08:00:27:71:85:BD pub        ----设定PC 3的IP对应Linux Router MAC
            # arp -i eth0 -s 192.168.1.10 08:00:27:71:85:BD pub        ----设定PC 4的IP对应Linux Router MAC
            # arp -n         ----查看一下ARP对应
        第二步:开始处理路由,增加PC2-PC4的单记录有经过内部的eth1来传递
            # route add -host 192.168.1.10 eth1        ----路由到PC2(如果路由到一个路由器,会是一个网域,而且经由一个网关,网关是路由器的IP)
            # route add -host 192.168.1.20 eth1
            # route add -host 192.168.1.20 eth1
            # route add -host 192.168.1.30 eth1
        第三步:设定一下内部的ARP Proxy工作(绑在eth1上头),这样PC2-PC4传递到PC1或Router A的封包就能够透过Linux Router传递出去
            # arp -i eth1 -s 192.168.1.101 08:00:27:2A:30:14 pub        ----PC1
            # arp -i eth1 -s 192.168.1.254 08:00:27:2A:30:14 pub        ----Router A
        第四步:清除掉eth1的192.168.1.0/24(因为上面我们已经建立了新的路由规则了)
            # route del -net 192.16.1.0 netmask 255.255.255.0 eth1
8.5    重点回顾
8.6    本章习题6
8.1.2 一个网卡绑定多个IP:IP Alias的测试功能
posted @ 2014-02-21 16:04  Neuromancer  阅读(540)  评论(0编辑  收藏  举报