jinhucheung / blog

学习笔记
6 stars 3 forks source link

Linux 学习之服务器篇 路由概念与路由器协议 #40

Open jinhucheung opened 8 years ago

jinhucheung commented 8 years ago

Index

jinhucheung commented 8 years ago

1. 路由

路由是规划我们数据包在网络上的传输路径以及方式

1.1 路由表产生的类型

我们每台主机都有自己的路由表,我们可以使用route来查看,那设置路由表有以下方式:

1.2 网卡虚拟网络接口:IP Alias的测试用途

让一个网卡虚拟出多个网络接口,其形式如eth0:0,这可以供我们设置IP参数,方便我们测试 但要注意的是实体网卡需要启动,虚拟出来网络接口才能使用

同样的,我们也可以通过建议其配置文件来开机启动该网络接口,比如/etc/sysconfig/network-scripts/ifcfg-eth0:0

1.3 重复路由的问题

这里有个问题,就是如果我用两张网卡都设置成同一个目标网域的路由,比如像下面

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没作用

jinhucheung commented 8 years ago

2. 路由器架设

我们知道,同一个网段内主机可以通过广播来传递数据包,而不同网段内数据包的传递就需要通过路由器来转交了

2.1 什么是路由器与IP分享器

1) 什么是路由器?

上面我们了解到,路由器主要是转递数据包,它通过分享数据包IP表头,获取目标IP,通过其本身的路由表来转递,所以路由器要有两个网络接口以上.

要达成路由器功能,有以下两种方式:

Linux要作为路由器,首先需要启动其数据包转递的功能(IP forward),启动方式有以下两种

然后就是修改Linux路由器的路由表了,同样分为两种方式

2) 什么是IP分享器?

其实IP分享器本身就是一个路由器,在数据包转递这个功能上加入了IP转译,这也就是NAT服务器

IP转译 通过修改数据包IP表头的来源或目标IP,可以让内部的私有IP转译成公共IP,连接上Internet

所以说NAT服务器可以沟通内部网段与公共网域

3) 何时需要路由器

通常需要架设路由器,都是拥有数百台主机的大型企业内部,通常会这么考虑

jinhucheung commented 8 years ago

2.2 静态路由架设

前面我们提到,静态路由就是我们手工设置路由表,这有以下步骤:

  1. 规划网段以及路由
    • 规划好网段以及相应路由/主机等
    • 注意:网络传输是双向的,所以路由传递数据包也要双向
    • 比如,192.168.1.0这个网段的数据包,route B会传给route A
    • 192.168.100.0由route A 也传给route B
    • 总之多考虑下
  2. 设置各主机/路由的IP参数以及路由表
    • IP参数直接修改网络接口配置文件
    • 路由表也修改配置文件
    • 主机们就将默认网关设到其直接到达的路由器上
    • 路由器要设置2个以上的网络接口
  3. 路由器启动数据包转递功能
    • 修改/etc/sysctl.conf配置文件,具体查看上2.1部分
    • sysctl -p重新加载内核参数
  4. 重启网络服务,并进行测试连通性
    • service network restart 重启网络服务
    • 通过ping来测试各主机的连通

具体例子,请查看鸟哥私房菜的静态路由部分

jinhucheung commented 8 years ago

2.3 动态路由架设:quagga(zebar+ripd)

静态路由设置上较麻烦,而且需要重新规划时十分痛苦,聪明的人类想到让路由器自己学习路由表的方法(算法),然后就有了动态路由

动态路由架设过程:

1)路由器们要安装quagga软件包

2)设置所有主机/路由器的网络参数

这个没得说的,注意路由器要启动数据包转递

3)路由器们设置zebra

修改路由器上的zebra配置文件/etc/quagga/zebra.conf,比如下面

hostname www.centos.vbird           <==给予这路由器一个主机名称,随便取!
password linuxz1                    <==给予一个密码!
enable password linuxz1             <==将这个密码生效!
log file /var/log/quagga/zebra.log  <==保存zebar的信息至日志文件

之后重启zebra以及设置开机启动zebra

最后就可以netstat -ntulp | grep zebra查看zebra端口,通过telnet连接测试

注意:zebra也可以设置/查看路由表,通过telnet连接上服务即可进行

3)路由器们设置ripd

首先还是要修改ripd配置文件/etc/quagga/ripd.conf,如下

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  <==记录日志信息

之后重启guagga以及设置开机启动guagga

最后就是查看路由表啦!!! route或者连接上zebra

jinhucheung commented 8 years ago

2.4 路由器连接同个网段:ARP Proxy

如果我们要强行对同一个网段的主机进行划分出子网(在不改动IP参数等前提下),我们应该怎么做? 我们知道路由器是可以沟通不同网段上的主机,如果让它来分隔同个网段的主机要怎么做?

这就是ARP Proxy,我对其的理解是:

我们可以通过arproute实现,具体请看鸟哥关于ARP Proxy部分