03 iproute2简介

iproute2简介

这章本质上没有太大的意义,它与 tc 基本上毫无关系,如果你只关心 tc 的话,请跳过此章节,此章节出现东西在以后的章节也并不会出现。此章的意义是在于让你了解一下 iproute2 以及它的工具,为未来提供基础,因为安装的时候我们可不止安装了tc,其他工具是否对你有用,这里不得而知,所以特地写了一章,让你知道一下 iproute2 的其他功能。其实也就是 ip 指令了。

为什么使用 iproute2?

现在,绝大多数 Linux 发行版和绝大多数 UNIX 都使用古老的 arp, ifconfig 和route 命令。虽然这些工具能够工作,但它们在 Linux2.2 和更高版本的内核上显得有一些落伍。比如,现在 GRE 隧道已经成为了路由的一个主要概念,但却不能通过上述工具来配置。

使用了 iproute2,隧道的配置与其他部分完全集成了。

2.2 和更高版本的 Linux 内核包含了一个经过彻底重新设计的网络子系统。 这些新的代码让 Linux 在操作系统的竞争中取得了功能和性能上的优势。实际上,Linux 新的路由、过滤和分类代码,从功能和性能上都不弱于现有的那些专业的路由器、防火墙和流量整形产品。

随着新的网络概念的提出, 人们在现有操作系统的现有体系上修修补补来实现他们。这种固执的行为导致了网络代码中充斥着怪异的行为, 这有点像人类的语言。过去, Linux 模仿了 SunOS 的许多处理方式,并不理想。

这个新的体系则有可能比以往任何一个版本的 Linux 都更善于清晰地进行功能表达

iproute2 概览

Linux 有一个成熟的带宽供给系统,称为 Traffic Control(流量控制)。这个系统支持各种方式进行分类、排序、共享和限制出入流量。

我们将从 iproute2 各种可能性的一个简要概览开始。

先决条件

你应该确认已经安装了用户级配置工具。 这个包的名字在 RedHat 和 Debian 中都叫作“ iproute”,也可以在这个地方找到: https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/

iproute 的某些部分需要你打开一些特定的内核选项。应该指出的是, RedHat6.2及其以前的所有发行版中所带的缺省内核都不带有流量控制所需要的绝大多数功能。

而 RedHat 7.2 在缺省情况下能满足所有要求。

另外,确认一下你的内核支持 netlink , Iproute2 需要它。

浏览你的当前配置

这听上去确实让人惊喜: iproute2 已经配置好了! 当前的 ifconfig 和 route 命令已经正在使用新的系统调用,但通常使用了缺省参数(真无聊)。

让 ip 显示我们的链路

ip link list
1: lo: <LOOPBACK,UP> mtu 3924 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: dummy: <BROADCAST,NOARP> mtu 1500 qdisc noop
link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
3: eth0: <BROADCAST,MULTICAST,PROMISC,UP> mtu 1400 qdisc pfifo_fast qlen 100
link/ether 48:54:e8:2a:47:16 brd ff:ff:ff:ff:ff:ff
4: eth1: <BROADCAST,MULTICAST,PROMISC,UP> mtu 1500 qdisc pfifo_fast qlen 100
link/ether 00:e0:4c:39:24:78 brd ff:ff:ff:ff:ff:ff
3764: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP> mtu 1492 qdisc pfifo_fast qlen 10
link/ppp

你的结果可能有所区别,但上述显示了我家里 NAT 路由器的情况。我将只解释输出中并非全部直接相关的部分。 因为并不是所有部分都与我们的话题有关, 所以我只会解释输出的一部分。

我们首先看到了 loopback 接口。 While your computer may function somewhatwithout one, I’d advise against it. MTU (最大传输单元)尺寸为 3924 字节,并且不应该参与队列。 这是因为 loopback 接口完全是内核想象出来的、 并不存在的接口。

现在我们跳过这个无关的接口, 它应该并不实际存在于你的机器上。 然后就是两个物理网络接口,一个接在我的 cable modem 上,另一个接到我家里的以太网端上。再下面,我们看见了一个 ppp0 接口。

应该指出,我们没有看到 IP 地址。 iproute 切断了“链路”和“ IP 地址”两个概念的直接联系。当使用 IP 别名的时候, IP 地址的概念显得更加不相关了。

尽管如此,还是显示出了标识以太网卡硬件的 MAC 地址。

让 ip 显示我们的 IP 地址

ip address show
1: lo: <LOOPBACK,UP> mtu 3924 qdisc noqueue
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 brd 127.255.255.255 scope host lo
2: dummy: <BROADCAST,NOARP> mtu 1500 qdisc noop
    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
3: eth0: <BROADCAST,MULTICAST,PROMISC,UP> mtu 1400 qdisc pfifo_fast qlen 100
    link/ether 48:54:e8:2a:47:16 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.1/8 brd 10.255.255.255 scope global eth0
4: eth1: <BROADCAST,MULTICAST,PROMISC,UP> mtu 1500 qdisc pfifo_fast qlen 100
    link/ether 00:e0:4c:39:24:78 brd ff:ff:ff:ff:ff:ff
    3764: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP> mtu 1492 qdisc pfifo_fast qlen 10
    link/ppp
    inet 212.64.94.251 peer 212.64.94.1/32 scope global ppp0

这里包含了更多信息。显示了我们所有的地址,以及这些地址属于哪些网卡。“ inet”表示 Internet (IPv4)。还有很多其它的地址类型,但现在还没有涉及到。

让我们先就近看看 eth0。上面说它与 IP 地址 10.0.0.1/8 相关联。这是什么意思呢?“ /8”表示 IP 地址表示网络地址的位数。 因为一共是 32 个 bit, 所以我们的这个网络有了 24 bit 的主机空间。 10.0.0.1 的开始 8bit 是 10.0.0.0,也就是我们的网络地址,我们的子网掩码是 255.0.0.0。

其它的 bit 直接连接在这个网卡上,所以 10.250.3.13 可以直接通过 eth0 联络到,就象 10.0.0.1 一样。

对于 ppp0,仍是相同的概念,虽然数字看上去有所不同。它的地址是212.64.94.251,不带子网掩码。这意味着这是一个点到点的连接,而且除了212.64.94.251 之外的地址是对端的。 当然, 还有很多信息。 它还告诉我们这个链路的另一端只有一个地址: 212.64.94.1。 /32 意思是说没有表示网络的 bit。

掌握这些概念是绝对重要的。如果有问题,不妨先参考以下这个 HOWTO 文件开头曾经提到的那些文档。

你应该注意到了“ qdisc”,它是基于对列规范的一个概念。它在后面会变得很重要。

让 ip 显示路由

好的, 现在我们已经知道如何找到 10.x.y.z 了, 然后我们就可以到达 212.64.94.1。但这还不够,我们还得说明如何找到全世界。可以通过我们的 ppp 连接找到Internet, 212.64.94.1 愿意把我们的数据包发给全世界, 并把回应的数据包传回给我们。

ip route show
212.64.94.1 dev ppp0 proto kernel scope link src 212.64.94.251
10.0.0.0/8 dev eth0 proto kernel scope link src 10.0.0.1
127.0.0.0/8 dev lo scope link
default via 212.64.94.1 dev ppp0

字面的意思相当清楚。前 4 行的输出明确地说明了 ip address show 的意思,最后一行说明了世界的其它部分可以通过我们的缺省网关 212.64.94.1 找到。我们通过“ via”这个词断定这是一个网关,我们要把数据包交给它。这就是我们要留心的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值