原文链接:http://www.freezhongzi.info/?p=104

OpenWrt网络结构

  OpenWrt的网络配置很丰富,在我看来几乎可以完成任何网络结构。下图为一个支持OpenWrt的路由器网络结构:这个路由器内部交换机有6个口,其中1个WAN口、4个LAN口、Port5默认连接内部网卡eth0,还有连接Wifi的无线网卡接eth2,eth3保留。

最让我惊奇的是OpenWrt网络的灵活性,它主要靠VLAN和(Bridging)网桥等实现。

VLAN

一般路由器为节约成本只有一张网卡(我的理解是以太网控制芯片),但如何接入多个网络呢?(路由器按常理至少要两张网卡吧),这就是VLAN的功劳啦。

VLAN(Virtual Local Area Network)是虚拟局域网缩写,是把局域网中的同一工作组的主机连在一起,隔绝不同的子网(在一个或多个交换机上),这种局限增强了工作组间的保密性,也减少了全面广播的副作用。用了VLAN也就把连接子网用的路由器给省了,省钱而且效率还很高。

VLAN需要路由器内置的交换机支持(一般都支持啦),最多可以划分4096个VLAN。一般使用只划分两个VLAN:WAN和LAN,分别对应外网和内网。如果是纯粹的VLAN,则WAN和LAN之间是隔离的,互相不能通信,但在自己的VLAN里可以自由通信。

Trunking

用一张网卡怎么连接两个网络呢?不知你是否留意到上图中的 Port5,Port5一边连接路由器,一边连接网卡eth0,它的作用就是连接vlan0和vlan1。这就是采用VLAN的Trunking技术,在Trunk Port(port5)经过的以太网帧上打标签(Tagging)用以区分来自那个VLAN,然后路由器用网卡eth0接收并处理标签从而处理(在CPU中处理),这就是所谓的单臂路由器,很形象啊:)。

Bridging

网桥说穿了就是交换机,它就是用软件模拟以太网交换机,连接多个以太网网卡(虚拟的或物理的)分享同一个IP子网。在OpenWrt中,网桥主要用来连接无线WIFI网络和LAN,组成一个统一的内部局域网

最后为了方便理解,我画了一张示意图用普通的交换机和路由器解释上面提到的VLAN、Trunking和Bridging:

参考

VLAN动画详解

OpenWrt network interface

Linux下的网桥

OpenWrt网络结构的更多相关文章

  1. 使用Esxi虚拟化部署OpenWrt/HomeLede+扩容硬盘 保姆级教程

    本文介绍使用VMware虚拟化平台部署OpenWrt/HomeLede,并扩容固件硬盘的方法. 推荐使用虚拟化方式部署软路由,理由如下: 部署.升级.回退.扩容等操作非常方便,特别适合折腾 可以方便的 ...

  2. OpenWrt中开启usb存储和samba服务

    在从官网安装的WNDR3800 15.05.1版本OpenWrt中, 不带usb存储支持以及samba, 需要另外安装 1. 启用usb支持 USB Basic Support https://wik ...

  3. (转)利用libcurl和国内著名的两个物联网云端通讯的例程, ubuntu和openwrt下调试成功(四)

    1. libcurl 的参考文档如下 CURLOPT_HEADERFUNCTION Pass a pointer to a function that matches the following pr ...

  4. (转)利用libcurl获取新浪股票接口, ubuntu和openwrt实验成功(三)

    1.  利用 CURLOPT_WRITEFUNCTION 设置回调函数, 利用 CURLOPT_WRITEDATA 获取数据指针 官网文档如下 CALLBACK OPTIONS CURLOPT_WRI ...

  5. (转)linux下和云端通讯的例程, ubuntu和openwrt下实验成功(二)

    前言: 上节用纯linux的函数实现了和云端通讯, 本节开始利用传说中的神器libcurl 话说一个网络程序员对书法十分感兴趣,退休后决定在这方面有所建树. 于是花重金购买了上等的文房四宝.    一 ...

  6. (转)linux下和云端通讯的例程, ubuntu和openwrt实验成功(一)

    一.  HTTP请求的数据流总结#上传数据, yeelink的数据流如下POST /v1.0/device/4420/sensor/9089/datapoints HTTP/1.1Host: api. ...

  7. OpenWRT镜像爬虫搭建本地源

    网上的爬虫不能用,还是先表达谢意,不过我比较懒不喜欢重复写别人写的教程,只贴出修改,怎么用自己看教程吧. 我自己改了一版可以正常爬: #!/usr/bin/env python #coding=utf ...

  8. 安卓Socket连接实现连接实现发送接收数据,openwrt wifi转串口连接单片机实现控制

    安卓Socket连接实现连接实现发送接收数据,openwrt wifi转串口连接单片机实现控制 socket 连接采用流的方式进行发送接收数据,采用thread线程的方式. 什么是线程?  详细代码介 ...

  9. 极路由2(极贰)在OpenWrt下定制自己的ss服务

    默认刷入的OpenWrt带的ss, 只有ss-redir服务, 但是在实际使用中, 很多时候还是希望访问直接通过正常网关, 只有少部分访问需要通过ss, 所以希望能配置成为ss-local服务. 在保 ...

随机推荐

  1. android5.x以上 状态栏透明的问题

    1.先在style中把 statusBarColor 设置为透明  如下 <item name="android:statusBarColor">@android:co ...

  2. ACM题目————食物链

    题目描述 Description 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形.A吃B,B吃C,C吃A. 现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并 ...

  3. xcode4.3 完成输入后 点击背景关闭键盘

    -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ [self.view endEditing:YES];} 把这个复制到 ...

  4. jQuery 禁用退格键

    在只读区域按退格键会造成页面后退,禁用退格键可以这样做: $(document).bind("keydown", function(e){ if(e.keyCode == 8){/ ...

  5. java静态块

    一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的 静态代码块的初始化顺序  class Parent{ static String name = &q ...

  6. 链接注入(便于跨站请求伪造)(AppScan扫描结果)

    最近工作要求解决下web的项目的漏洞问题,扫描漏洞是用的AppScan工具,其中此篇文章是关于链接注入问题的.下面就把这块东西分享出来. 原创文章,转载请注明 -------------------- ...

  7. Optimal Milking 分类: 图论 POJ 最短路 查找 2015-08-10 10:38 3人阅读 评论(0) 收藏

    Optimal Milking Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 13968 Accepted: 5044 Case ...

  8. Linux(centOS6.5)下SVN的安装、配置及开机启动

    http://www.blogjava.net/rockblue1988/archive/2014/11/19/420246.aspx

  9. Objective之ARC

    http://blog.csdn.net/siemenliu/article/details/7891345

  10. #查找列表中元素,移除每个元素的空格,并查找以 a或A开头 并且以 c 结尾的所有元素

    #!/usr/bin/env python #查找列表中元素,移除每个元素的空格,并查找以 a或A开头 并且以 c 结尾的所有元素. #    li = ["alec", &quo ...