分享

Openwrt系列WIKI中文原创翻译——理解网络接口

 coolbee 2009-08-25

http://nuwiki./oldwiki/OpenWrtDocs/NetworkInterfaces
目录
  1. VLAN和桥接的概念
    1. 基础
    2. VLAN TRUNK
    3. 桥接
  1. Openwrt的接口
    1. 体系结构
    2. 接口配置
    3. DMZ(非军事安全区)的VLAN
    4. 单网卡的VLAN TRUNK

 

1. VLAN和桥接的概念

1.1. 基础

开始深入细节前,了解Vlan的工作原理很重要哦。虚拟局域网VLAN主要是让一组物理上的交换机表现起来像是一个单独的交换机。我们也可以把一个物理的交换机划分到多个VLAN里面,每个VLAN之间互相隔离。

当然这样的交换机必须支持VLAN配置,便宜的不支持,高端的可网管交换机才可以的,Openwrt内置的也可以。如果你就一个物理交换机,但是你又想分隔不同设备的流量,那么就用VLAN

例如,你先搞一个VLAN处于防火墙外面,提供外部的WEB/MAIL服务,另外一个VLAN给内网的机器。因为安全的原因,他们就不能放在一个局域网里面,你要用VLAN隔离他们的端口我们有一个10口的交换机。配置15口是VLAN1610口是VLAN2。设备插在1-5口,他们就像在自己的拥有的交换机,6-10口的像是在另外一个交换机。主要的规则是网口之间的通信被VLAN阻隔。当然你可以在任何时候重新配置你的VLAN

OpenwrtVLAN端口数量限制取决于本身的最多物理端口。

1.2. VLAN Trunking

如果你的交换机拥有多个VLAN,然后想和其他超过一个VLAN的交换机连上。另外一个交换机也有相同的两个VLAN。为了维护他们之间的分隔,它们之间互相可以交换数据包。

如果每个VLAN都要单独用一个端口级联,那将会相当浪费,所以我们使用trunking技术。交换机上某一个端口被配置成trunk口,那么这个口与交换机的所有VLAN口连通着。例如你有一个交换机有3VLAN,那么你配置一个或更多的trunk口连接所有的VLAN或者VLAN的子网。

那交换机如何保持端口的隔离呢?这里使用标记的方法。每一个来至于trunk口的数据包附加上一个小标记,指明它是来至于哪个VLAN的。所以一个设备看一下接收到的包的标记,就知道这个包是从哪一个VLAN来的了。当设备发送一个包到交换机的时候,它自己也会打上一个标记,交换机也会做类似的判断。

一个附加防火墙的例子,一个数据包来至于内部的VLAN,通过trunk口发送到防火墙,并且打上标记VLAN ID。防火墙处理了这个数据包,然后返回到交换机同事带上了外部VLAN的标记,交换机将看到这个标记以后,把包发送到外部设备上。

你可以在类似防火墙的设备上看到每一个单独的VLAN仿佛是不同的网络接口。内部的VLAN好像是一个网卡在内网上,外部的接口也表现的像一个在外部的网卡。

因此,大多数的主机与防火墙支持VLAN标记设置,以区分不同的网络接口,哪怕数据包走在同一根物理网线上也可以。

1.3. 桥接

网络中,桥接就是把两个网卡连接到一个LAN里面。

如果你把两个被桥接的网卡分别连在两个交换机上,这两个交换机等效于用线缆连接了。

当然你一可以把有线网卡和无线网卡桥接,这样看起来想无线AP或者AP

桥接还有一个有用的功能是使得linux主机可以监听和发送自己的流量。

它为了完成这个功能,而创建了一个网卡。如果你连接了一个eth0eth1两个网卡,那么他们会绑定br0(或br1等)接口。

你可以给br0分配一个IP地址,使他看起来像一个正常的网卡。你只能给敲击的 网卡分配IP,但是你不能给桥接的成员(eht0 eth1)分配IP地址

以上是桥接知识的要点

2. Openwrt的接口

2.1. 体系结构

Openwrt主机实际上有三个设备在里面。一个可配置VLAN的交换机,一个无线端口,一个linux主机。

交换机和linux主机被内部的电路所连接,通过VLAN标记的包进行数据交换。

主机上所有的物理端口都在单一的交换机上。VLAN分隔这些端口到不同的组。

下面的图表显示了架构。



0 && image.height>0){if(image.width>=700){this.width=700;this.height=image.height*700/image.width;}}" alt="" src="http://wiki./OpenWrtDocs/NetworkInterfaces?action=AttachFile&do=get&target=ASUS-Internals-default-sm.png">

 

端口1-4被配置为VLAN0,标记成LAN1-4。如果你愿意,你实际上也可以把WAN口、LAN口配置。

See http://en./wiki/IEEE_802.1Q#Native_VLAN The native vlan is not tagged. Only the second VLAN needs to be tagged to separate the two data streams.

有一个内部端口,5(Port 5),打上VLAN标记,连接到linux内部主机。在Asus WL-500gP5口连到网卡eth0eth0不配置IP地址,内核会使用VLAN标记从eth0取来原始的包,并整理出来至VLAN0还是VLAN1。收发至VLAN1的数据包被映射到一个逻辑网卡vlan1,同理可得逻辑网卡vlan0

这里有另外一个链路通道没有显示出来,它用来配置交换机自身,它在linux下有一个单独的逻辑设备。

Openwrt下,vlan1网卡常常用来配置WANIP地址,并且应用给WAN口的所有配置(如iptables规则和路由)都应用于vlan1网卡。

vlan0网卡有点不同。默认情况下,无线网卡(eth2)被桥接到到LAN口,任何一个接到无线口的主机都和在LAN口的主机拥有一样的VLAN和子网。如上所述,当一个网桥被创建

0 && image.height>0){if(image.width>=700){this.width=700;this.height=image.height*700/image.width;}}" alt="" height="15" width="15">

This is the case on the Asus WL-500gP, it may differ on other models

2.2. Interface configuration

拥有了如果区分接口的知识,现在很容易理解如何在Openwrt下面配置接口了。

下面的代码块将物理端口配置到VLAN

vlan0hwname=et0
vlan0ports="1 2 3 4 5*"
vlan1hwname=et0
vlan1ports="0 5*"

"hwname"参数部分总是"et0""et0"设备(Linux下面的)就是交换机自身,并且这样写同时告诉系统哪一个交换机被配置。因为路由器里面只有一个交换机,所以它必须总是被设置为"et0"。如果你在VLAN里面不含5口,那么数据流总是留在交换机里面,永远不会被送到CPU

端口被如上配置。VLAN0LAN)有四个端口另加一个内部标记口,VLAN1WAN)只有一个端口,另外也加一个Trunk

 

这个配置把VLAN1连接到WAN口,VLAN0连接到另外的口。如之前提及的,LANWAN口的地址可以互换。

VLAN1WAN口连接到CPU,它被映射到一个WAN接口的,并且配置了IP

wan_ifname=vlan1
wan_ipaddr=a.b.c.d
wan_netmask=255.255.255.0
wan_proto=static

下面的LAN被配置,必须建立一个桥接,然后给桥接的接口分配IP而不是VLAN

lan_ifname=br0
lan_ifnames="vlan0 eth2"
lan_proto=static
lan_ipaddr=w.x.y.z
lan_netmask=255.255.255.0

"lan_ifname"变量是实际配置IP参数的接口,当然必须是br0的桥接接口。那么这个变量就是设置哪些接口一定要桥接上,既然如此,那么就应该配置为VLAN0和无线接口。VLAN0端口之前被定义为网线口14,所以增加的无线接口现在是单个逻辑LAN

这是路由器里整个网络的基本结构。下面的例子是增加另外一个VLAN

2.3. DMZ Vlan

参见DemilitarizedZoneHowto

如果你要运行一些提供给公众的服务器并且是安全的,你可能要用到DMZ(非军事区)。这是网络里面的第三个VLAN,它被配置了不同的规则到内部的安全网络。通常,DMZ被配置运行确定的端口来至于互联网,同时不允许内网的主机访问它。

Openwrt下面的DMZ很容易配置的。创建第三个VLAN,含有一个以上的物理端口。合适的防火墙规则应用于VLAN。以下的图片显示了DMZ在设备里面的配置

0 && image.height>0){if(image.width>=700){this.width=700;this.height=image.height*700/image.width;}}" alt="" src="http://wiki./OpenWrtDocs/NetworkInterfaces?action=AttachFile&do=get&target=ASUS-Internals-dmz.png">

 

The configuration lines that would be changed for this are:

配置改成下面这样

vlan0ports="2 3 4 5*"
vlan2hwname=et0
vlan2ports="1 5*"
dmz_ifname=vlan2
dmz_proto=static
dmz_ipaddr=192.168.1.22
dmz_netmask=255.255.255.0

配置文件首先更改VLAN0不包含将会用于DMZ的端口1。然后DMZVLAN被建立,含有端口15(记住端口5是内部的标记口)。然后逻辑接口"DMZ"被配置并附加到VLAN2上。启动新接口,运行"ifup dmz"。当然,你的防火墙还需要做配置。

你甚至可以添加更多的DMZ接口,你总共有6个接口(包括无线端口)。路由器拥有的功能超出了你的想象。

2.4. VLan Trunking on one NIC 以下和服务器联合配置,暂且不翻译

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多