崇明做网站,免费无网络游戏大全,免费cms建站系统有哪些,奖状制作app1.基础知识 1.1 路由 #xff08;Routing#xff09; 1.1.1 路由策略 #xff08;使用 ip rule 命令操作路由策略数据库#xff09; 基于策略的路由比传统路由在功能上更强大#xff0c;使用更灵活#xff0c;它使网络管理员不仅能够根据目的地址而且能够根据报文大小、应… 1.基础知识 1.1 路由 Routing 1.1.1 路由策略 使用 ip rule 命令操作路由策略数据库 基于策略的路由比传统路由在功能上更强大使用更灵活它使网络管理员不仅能够根据目的地址而且能够根据报文大小、应用或IP源地址等属性来选择转发路径。 ip rule 命令Usage: ip rule [ list | add | del ] SELECTOR ACTION add 添加del 删除 llist 列表SELECTOR : [ from PREFIX 数据包源地址] [ to PREFIX 数据包目的地址] [ tos TOS 服务类型][ dev STRING 物理接口] [ pref NUMBER ] [fwmark MARK iptables 标签]ACTION : [ table TABLE_ID 指定所使用的路由表] [ nat ADDRESS 网络地址转换][ prohibit 丢弃该表| reject 拒绝该包| unreachable 丢弃该包][ flowid CLASSID ]TABLE_ID : [ local | main | default | new | NUMBER ] 例子
ip rule add from 192.203.80/24 table inr.ruhep prio 220 通过路由表 inr.ruhep 路由来自源地址为192.203.80/24的数据包 ip rule add from 193.233.7.83 nat 192.203.80.144 table 1 prio 320 把源地址为193.233.7.83的数据报的源地址转换为192.203.80.144并通过表1进行路由 在 Linux 系统启动时内核会为路由策略数据库配置三条缺省的规则
0 匹配任何条件 查询路由表local(ID 255) 路由表local是一个特殊的路由表包含对于本地和广播地址的高优先级控制路由。rule 0非常特殊不能被删除或者覆盖。 32766 匹配任何条件 查询路由表main(ID 254) 路由表main(ID 254)是一个通常的表包含所有的无策略路由。系统管理员可以删除或者使用另外的规则覆盖这条规则。32767 匹配任何条件 查询路由表default(ID 253) 路由表default(ID 253)是一个空表它是为一些后续处理保留的。对于前面的缺省策略没有匹配到的数据包系统使用这个策略进行处理。这个规则也可以删除。 不要混淆路由表和策略规则指向路由表多个规则可以引用一个路由表而且某些路由表可以没有策略指向它。如果系统管理员删除了指向某个路由表的所有规则这个表就没有用了但是仍然存在直到里面的所有路由都被删除它才会消失。 资料来源 1.1.2 路由表 使用 ip route 命令操作静态路由表 所谓路由表指的是路由器或者其他互联网网络设备上存储的表该表中存有到达特定网络终端的路径在某些情况下还有一些与这些路径相关的度量。路由器的主要工作就是为经过路由器的每个数据包寻找一条最佳的传输路径并将该数据有效地传送到目的站点。由此可见选择最佳路径的策略即路由算法是路由器的关键所在。为了完成这项工作在路由器中保存着各种传输路径的相关数据——路由表Routing Table供路由选择时使用表中包含的信息决定了数据转发的策略。打个比方路由表就像我们平时使用的地图一样标识着各种路线路由表中保存着子网的标志信息、网上路由器的个数和下一个路由器的名字等内容。路由表根据其建立的方法可以分为动态路由表和静态路由表。 linux 系统中可以自定义从 1252个路由表其中linux系统维护了4个路由表
0#表 系统保留表253#表 defulte table 没特别指定的默认路由都放在改表254#表 main table 没指明路由表的所有路由放在该表255#表 locale table 保存本地接口地址广播地址、NAT地址 由系统维护用户不得更改 路由表的查看可有以下二种方法
ip route list table table_numberip route list table table_name 路由表序号和表名的对应关系在 /etc/iproute2/rt_tables 文件中可手动编辑。路由表添加完毕即时生效下面为实例
ip route add default via 192.168.1.1 table 1 在一号表中添加默认路由为192.168.1.1ip route add 192.168.0.0/24 via 192.168.1.2 table 1 在一号表中添加一条到192.168.0.0网段的路由为192.168.1.2 以下面的路由表为例 Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 192.168.123.254 192.168.123.88 1 #缺省路由目的地址不在本路由表中的数据包经过本机的 192.168.123.88 接口发到下一个路由器 192.168.123.254
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1 #发给本机的网络包
192.168.123.0 255.255.255.0 192.168.123.68 192.168.123.68 1 #直连路由。目的地址为 192.168.123.0/24 的包发到本机 192.168.123.88 接口
192.168.123.88 255.255.255.255 127.0.0.1 127.0.0.1 1 #目的地址为 192.168.123.88的包是发给本机的包
192.168.123.255 255.255.255.255 192.168.123.88 192.168.123.88 1 #广播包的网段是 192.168.123.0/24经过 192.168.123.88 接口发出去
224.0.0.0 224.0.0.0 192.168.123.88 192.168.123.88 1 #多播包经过 192.168.123.88 接口发出去
255.255.255.255 255.255.255.255 192.168.123.68 192.168.123.68 1 #全网广播包
Default Gateway: 192.168.123.254 各字段说明
destination目的网段mask与网络目标地址相关联的网掩码又称之为子网掩码。子网掩码对于 IP 网络地址可以是一适当的子网掩码对于主机路由是 255.255.255.255 对于默认路由是 0.0.0.0。如果忽略则使用子网掩码 255.255.255.255。定义路由时由于目标地址和子网掩码之间的关系目标地址不能比它对应的子网掩码更为详细。换句话说如果子网掩码的一位是 0则目标地址中的对应位就不能设置为 1。interface到达该目的地的本路由器的出口ipgateway 下一跳路由器入口的 ip路由器通过 interface 和 gateway 定义一调到下一个路由器的链路。通常情况下interface 和 gateway 是同一网段的metric 跳数该条路由记录的质量一般情况下如果有多条到达相同目的地的路由记录路由器会采用metric值小的那条路由 根据子网掩码可以将路由分为三种类型
主机路由机路由是路由选择表中指向单个IP地址或主机名的路由记录。主机路由的Flags字段为H。 Destination Gateway Genmask Flags Metric Ref Use Iface
----------- ------- ------- ----- ------ --- --- -----
10.0.0.10 192.168.1.1 255.255.255.255 UH 0 0 0 eth0 网络路由网络路由是代表主机可以到达的网络。网络路由的Flags字段为N。例如在下面的示例中本地主机将发送到网络192.19.12的数据包转发到IP地址为192.168.1.1的路由器。 Destination Gateway Genmask Flags Metric Ref Use Iface
----------- ------- ------- ----- ----- --- --- -----
192.19.12 192.168.1.1 255.255.255.0 UN 0 0 0 eth0 默认路由当主机不能在路由表中查找到目标主机的IP地址或网络路由时数据包就被发送到默认路由默认网关上。默认路由的Flags字段为G。 Destination Gateway Genmask Flags Metric Ref Use Iface
----------- ------- ------- ----- ------ --- --- -----
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0 设置和查看路由表都可以用 route 命令设置内核路由表的命令格式是route [add|del] [-net|-host] target [netmask Nm] [gw Gw] [[dev] If] 其中
add : 添加一条路由规则del : 删除一条路由规则-net : 目的地址是一个网络-host : 目的地址是一个主机target : 目的网络或主机netmask : 目的地址的网络掩码gw : 路由数据包通过的网关dev : 为路由指定的网络接口 比如
route add 0.0.0.0 mask 0.0.0.0 192.168.12.1route add 10.41.0.0 mask 255.255.0.0 10.27.0.1 metric 7 数据来源123 关于 src 属性 当一个主机有多个网卡配置了多个 IP 的时候对于它产生的网络包可以在路由选择时设置源 IP 地址。比如 ip route add 78.22.45.0/24 via 10.45.22.1 src 10.45.22.12 发到 78.22.45.0/24 网段的网络包下一跳的路由器 IP 是 10.45.22.1包的源IP地址设为10.45.22.12。 要注意的是src 选项只会影响该 host 上产生的网络包。如果是一个被路由的外来包明显地它已经带有了一个源 IP 地址这时候src 参数的配置对它没有任何影响除非你使用 NAT 来改变它。对 Neutron 来说qrouter 和 qif namespace 中的路由表中的 src 都没有实际意义因为它们只会处理外来的网络包。 1.1.3 路由分类之静态路由 静态路由是指由用户或网络管理员手工配置的路由信息。当网络的拓扑结构或链路的状态发生变化时网络管理员需要手工去修改路由表中相关的静态路由信息。静态路由信息在缺省情况下是私有的不会传递给其他的路由器。当然网管员也可以通过对路由器进行设置使之成为共享的。静态路由一般适用于比较简单的网络环境在这样的环境中网络管理员易于清楚地了解网络的拓扑结构便于设置正确的路由信息。 以上面的拓扑结构为例在没有配置路由的情况下计算机1 和 2 无法互相通信因为 1 发给 2 的包在到达路由器 A 后它不知道怎么转发它。B 也同样。管理员可以配置如下的静态路由来实现 1 和 2 之间的通信 计算机配置默认网关
计算机1 上route add default gw 192.168.1.1计算机2 上route add default gw 192.168.3.1 路由器配置
R1 上ip route 192.168.3.0 255.255.255.0 f0/1 意思为目标网络地址为 192.168.3.0/24 的数据包经过 f0/1 端口发出R2 上ip route 192.168.1.0 255.255.255.0 f0/1 意思为目标网络地址为 192.168.1.0/24 的数据包经过 f0/1 端口发出 或者
R1 上ip route 192.168.3.0 255.255.255.0 192.168.2.2 意思为要去 192.168.3.0/24 的数据包下一路由器 IP 地址为 192.168.2.2R2 上ip route 192.168.1.0 255.255.255.0 192.168.2.1 来源http://baike.baidu.com/view/911.htm 1.1.4 路由分类之动态路由 动态路由是指路由器能够自动地建立自己的路由表并且能够根据实际情况的变化适时地进行调整。它是与静态路由相对的一个概念指路由器能够根据路由器之间的交换的特定路由信息自动地建立自己的路由表并且能够根据链路和节点的变化适时地进行自动调整。当网络中节点或节点间的链路发生故障或存在其它可用路由时动态路由可以自行选择最佳的可用路由并继续转发报文。 常见的动态路由协议有以下几个路由信息协议RIP、OSPF(Open Shortest Path First开放式最短路径优先、IS-ISIntermediate System-to-Intermediate System中间系统到中间系统、边界网关协议BGP是运行于 TCP 上的一种自治系统的路由协议。 来源http://baike.baidu.com/view/897.htm 1.1.5 ip ruleip routeiptables 三者之间的关系 以一例子来说明公司内网要求192.168.0.100 以内的使用 10.0.0.1 网关上网 电信其他IP使用 20.0.0.1 网通上网。
首先要在网关服务器上添加一个默认路由当然这个指向是绝大多数的IP的出口网关ip route add default gw 20.0.0.1之后通过 ip route 添加一个路由表ip route add table 3 via 10.0.0.1 dev ethX (ethx 是 10.0.0.1 所在的网卡, 3 是路由表的编号)之后添加 ip rule 规则ip rule add fwmark 3 table 3 fwmark 3 是标记table 3 是路由表3 上边。 意思就是凡事标记了 3 的数据使用 table3 路由表之后使用 iptables 给相应的数据打上标记iptables -A PREROUTING -t mangle -i eth0 -s 192.168.0.1 - 192.168.0.100 -j MARK --set-mark 3 因为 mangle 的处理是优先于 nat 和 fiter 表的所以在数据包到达之后先打上标记之后再通过 ip rule 规则对应的数据包使用相应的路由表进行路由最后读取路由表信息将数据包送出网关。 这里可以看出 Netfilter 处理网络包的先后顺序接收网络包先 DNAT然后查路由策略查路由策略指定的路由表做路由然后 SNAT再发出网络包。 1.1.6 Traceroute 工具 我们在 linux 机器上使用 traceroute 来获知从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点source到达某一同样的目的地(destination)走的路径可能会不一样但基本上来说大部分时候所走的路由是相同的。在 MS Windows 中该工具为 tracert。 在大多数情况下我们会在linux主机系统下直接执行命令行traceroute hostname而在Windows系统下是执行tracert的命令 tracert hostname。
命令格式traceroute [参数] [主机]命令功能traceroute 指令让你追踪网络数据包的路由途径预设数据包大小是 40Bytes用户可另行设置。具体参数格式traceroute [-dFlnrvx][-f存活数值][-g网关...][-i网络界面][-m存活数值][-p通信端口][-s来源地址][-t服务类型][-w超时秒数][主机名称或IP地址][数据包大小]命令参数 -d 使用Socket层级的排错功能-f 设置第一个检测数据包的存活数值TTL的大小-F 设置勿离断位-g 设置来源路由网关最多可设置8个-i 使用指定的网络界面送出数据包-I 使用ICMP回应取代UDP资料信息-m 设置检测数据包的最大存活数值TTL的大小-n 直接使用IP地址而非主机名称。-p 设置UDP传输协议的通信端口-r 忽略普通的Routing Table直接将数据包送到远端主机上-s 设置本地主机送出数据包的IP地址-t 设置检测数据包的TOS数值。-v 详细显示指令的执行过程-w 设置等待远端主机回报的时间-x 开启或关闭数据包的正确性检验。 1例子 [rootlocalhost ~]# traceroute www.baidu.com
traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets
1 192.168.74.2 (192.168.74.2) 2.606 ms 2.771 ms 2.950 ms
2 211.151.56.57 (211.151.56.57) 0.596 ms 0.598 ms 0.591 ms
3 211.151.227.206 (211.151.227.206) 0.546 ms 0.544 ms 0.538 ms
4 210.77.139.145 (210.77.139.145) 0.710 ms 0.748 ms 0.801 ms
5 202.106.42.101 (202.106.42.101) 6.759 ms 6.945 ms 7.107 ms
6 61.148.154.97 (61.148.154.97) 718.908 ms * bt-228-025.bta.net.cn (202.106.228.25) 5.177 ms
7 124.65.58.213 (124.65.58.213) 4.343 ms 4.336 ms 4.367 ms
8 202.106.35.190 (202.106.35.190) 1.795 ms 61.148.156.138 (61.148.156.138) 1.899 ms 1.951 ms
9 * * *
30 * * * 说明
记录按序列号从1开始每个纪录就是一跳 每跳表示一个网关我们看到每行有三个时间单位是 ms其实就是 -q 的默认参数。探测数据包向每个网关发送三个数据包后网关响应后返回的时间如果您用 traceroute -q 4 www.58.com 表示向每个网关发送4个数据包。有时我们 traceroute 一台主机时会看到有一些行是以星号表示的。出现这样的情况可能是防火墙封掉了ICMP 的返回信息所以我们得不到什么相关的数据包返回数据。有时我们在某一网关处延时比较长有可能是某台网关比较阻塞也可能是物理设备本身的原因。当然如果某台 DNS 出现问题时不能解析主机名、域名时也会 有延时长的现象您可以加-n 参数来避免DNS解析以IP格式输出数据。如果在局域网中的不同网段之间我们可以通过 traceroute 来排查问题所在是主机的问题还是网关的问题。如果我们通过远程来访问某台服务器遇到问题时我们用到traceroute 追踪数据包所经过的网关提交IDC服务商也有助于解决问题但目前看来在国内解决这样的问题是比较困难的就是我们发现问题所在IDC服务商也不可能帮助我们解决。 2原理 Traceroute 程序的设计是利用 ICMP 及 IP header 的 TTLTime To Live栏位field。
首先traceroute 送出一个 TTL 是 1 的 IP datagram其实每次送出的为3个40字节的包包括源地址目的地址和包发出的时间标签到目的地当路径上的第一个路由器router收到这个datagram 时它将TTL减1。此时TTL变为0了所以该路由器会将此 datagram 丢掉并送回一个「ICMP time exceeded」消息包括发IP包的源地址IP包的所有内容及路由器的IP地址traceroute 收到这个消息后便知道这个路由器存在于这个路径上。接着traceroute 再送出另一个TTL 是 2 的datagram发现第2 个路由器...... 然后traceroute 每次将送出的 datagram 的 TTL 加1来发现另一个路由器这个重复的动作一直持续到某个datagram 抵达目的地。当datagram到达目的地后该主机并不会送回ICMP time exceeded消息因为它已是目的地了那么traceroute如何得知目的地到达了呢 Traceroute 在送出 UDP datagrams 到目的地时它所选择送达的 port number 是一个一般应用程序都不会用的号码30000 以上所以当此 UDP datagram 到达目的地后该主机会送回一个「ICMP port unreachable」的消息而当traceroute 收到这个消息时便知道目的地已经到达了。所以traceroute 在Server端也是没有所谓的Daemon 程式。Traceroute提取发 ICMP TTL 到期消息设备的 IP 地址并作域名解析。每次 Traceroute 都打印出一系列数据,包括所经过的路由设备的域名及 IP地址,三个包每次来回所花时间。