您的位置:首页 > 运维架构 > Linux

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

2014-02-21 16:04 225 查看
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 ----是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的测试功能
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: