同步操作将从 deepinwiki/wiki 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
本文介绍一个主流的路由器操作系统的网络配置。
概念清晰是很重要的,网络技术非常繁杂,因此应该明确概念,然后才能实施适当的组网方案。
openwrt 涉及的网络概念:
作为不是一个受过专业训练的普通用户,网络通信的相关概念纷繁复杂,如何才能快速且高效的完成组网目标?我这里有一个方法,就是从通信数据包出发,分层的理解网络,这样才不会出现去用两层设备完成三层设备的功能的无用功。
因为基础不扎实,所以很多人只能去模仿他人的方案,而不知道具体的原理,这在有些时候是可以的,但是有时候就容易被表面现象所误导。比如现在很多路由器 lan 口和 wan 口实际是可以设置的,如果你看到别人教程插 lan 口,却没有发现背后的原理实际是一个路由转发,实际是实现了 wan 口的功能,那你就容易被误导了。
因此,原理分析的作用,就是让你知道别人做了什么,你应该如何通过自己的设备通过同样的原理(或类似原理)组网。
而原理分析最有效的方法,是通过分析通信数据包。因为通信的原理实际上是不停的包裹各层处理的结果,添加本层需要的数据,它实际上就直接映射了工作原理。我们只要知道它需要怎样的数据,而我们的设备能不能提供这样的数据,然后才有可能进行配置。
当然我们也不需要像学习网络通信技术的科班生那样,对数据包的具体内容做过多的了解。毕竟我们只是为了完成家庭组网。
网络层次数据分析:
再高的分层结构属于软件层面的,不在我们研究范畴。既然路由器那么厉害,为什么不选用路由器作为组网设备?路由转发对路由性能要求比较高,家庭组网一般建议只用一个路由器,其余用交换机扩展端口。(不追求高性能,多个廉价路由级联是比较简单的,只要路由分配不同的子网段,用wan口连接上级路由的lan口即可)
常见的家庭组网方式:
光猫可以设置路由模式(它负责拨号上网),还是桥接模式,桥接模式下级就要解一个能拨号上网的路由器。
如果需要无线功能,就在 pc 的位置添加一级无线 ap(即wifi,普通廉价路由器关闭dhcp功能,连接到lan口即可代替专门的 ap)。当然示例中的路由器自身也可以提供 ap 功能,如果你家比较大,可能就要就近提供新的 ap 设备,才能保证良好的 wifi 信号。
添加 wifi 的方式:
旁路由本身也是路由,所以你也许有疑问,不是说好不要多个路由么?
旁路由的作用是将原本一个路由负责的业务,分散到多台路由设备上,这实际上也等于间接提升了性能,这和单纯的级联路由是不同的。而且旁路由服务崩溃了,也不影响使用主路由的设备的正常上网。
级联的路由概念相对比较清晰,每一个层级都可以单独理解为一个局域网。不建议这样组网的原因是它会增加路由链路,延迟会提高一点。同时多个路由设备增加出错的机率,如上级路由出问题,下面的路由也上不了网。很多用户没有理解路由的作用,只是为了增加接入端口就购置多个路由设备。实际上可以用交换机替代,同等成本下能得到更好的网络性能。
每一层级的路由都有wan口指向上级路由,lan口和 ap 连接下级设备,有固定的且不相同的子网。如果上级需要访问下级设备,需要在上级路由添加指向下级路由wan 口 ip的静态路由即可。而下级设备访问上级设备,默认即可访问上级设备。因为设备的默认网关是路由,而路由本身就是上级子网成员,且成员间能相互通信。
路由分lan口和wan口,lan口连接下级设备,wan口连接上级设备。从网络角度,即wan口是上级路由分配的ip,lan口是路由本身设定的子网。
一般转发:
当lan下任意接口收到一个ip包的目标地址不在本地子网,就转发到wan口。当wan下收到目标是子网段的任意ip,就接收。
之后,需要找到该数据包的mac地址。路由有下级所有直接设备的mac地址表,因此从wan口向上级发出去数据包的时候,需要将源mac改写为路由的mac,而源ip不变。当数据返回来的时候,通过路由的mac就能知道链路回到该路由,然后进到路由内部后再次解析内部ip的mac地址即可找到原点设备。
如果数据是从外部发起,想访问内部设备,这个路由就需要在上级路由设置一个静态路由表项,将内部网段的ip转到到该路由的wan口ip。
公网上不允许内网ip段。NAT转发就是将内网ip改写为路由的公网ip。但是改写了ip,数据怎么回来?这就引入了tcp/udp(第四层传输层)端口的概念。路由器虽然是第三层设备,但是它能处理第四层的一些概念。增加端口号后,通过NAT表就能区分不同的内部地址。
逆向操作也是建立一个相关的映射关系。
为啥不允许内网ip段,因为公网ip是唯一的,内网ip不是。公网ip间需要互联互通,而内网多是单向访问外部,只在内部互通。
双NAT问题:
ipv4公网ip稀缺,所以电信运营商可能不会提供一个公网ip给你,这时候你得到的ip实际上是一个内网ip,这ip通过电信的路由器nat到真正的外网,然后你的路由器拿到这个ip 又要经过一次nat,这就是所谓的双重nat问题。
问题在哪里?在于拥有真正的外网ip的路由器不由你控制,而是放在电信机房里面的,因此想从外部访问本地服务就会比较麻烦,需要采取内网穿透等复杂技术。
vlan(虚拟局域网) 是一个二层技术,二层负责隔离广播,制作子区域(端口分组),打tag,untag。但子区域转发互联由三层负责。
它的原理是,对端口做标记 tag,同tag是相同的区域,广播数据也只在该区域广播。tag 对下级设备是透明,只有交换机可以识别并过滤掉tag,然后将原本的数据包发给下级设备。
主干链路(trunk link):两个交换机,分别都存在vlan1,vlan2标记的端口,这时要把两个交换机连接起来,就需要两根网线,四个端口,分别标注vlan1,vlan2(因为不同标记的端口不能互通消息)。为了节省链路,就使用主干链路(或中继链接)这种技术。它对通过的数据包打上vlan1或vlan2标签,这样另一个交换机就可以识别到两种vlan数据包的不同,从而在一条链路上可以通过多个vlan数据,达到共享链路的作用。
因此交换机实际有两种端口模式:
在openwrt内部,使用vlan技术将lan口和wan口分配到不同的vlan,然后用中继链路连接到内部路由,这样就可以通过软件设定不同端口的工作模式,比如5个端口,可以4+1,也可以3+2,如果你家有两个宽带,就能通过一台openwrt路由同时接入。
单臂的意思是只有一条物理链路。路由的lan口和wan口的链路需要整合在一起。那究竟是怎样做的?
网络接口可以支持创建子接口。子接口是基于物理接口的虚拟接口,它可以拥有自己的ip配置。因此用两个子接口,一个设置lan ip,一个设置wan ip。并设置默认网关即可。
网关服务器也是一台路由,但使用场景比较特殊:
这里有个重点,就是openwrt它设计了让wan口负责转发数据,lan口处理局域网内部数据,而网关服务器一般不用wan口,一般就只插lan口。
也就是openwrt并没有为网关服务做默认配置,因此想要成为一个网关服务器,涉及修改防火墙转发规则。
修改方法:
实测,连接到lan口,然后防火墙页面,lan区域选中 "ip动态伪装”。然后设置lan ip在子网范围,并固定ip,设置默认网关是主路由ip即可。
有些上级路由,不设置这个 ip动态伪装(类似nat),它会禁止转发来自旁路由的转发请求。比如华为路由器就是如此。
旁路由上的服务虽然没有接wan口,它还是可以通过lan口的转发功能激活相关服务的,但是和作为主路由有些不一样。如果某些服务不正常,可能就是这个使用方式造成的,如果遇到问题,建议让其成为普通的二级路由,这样兼容性会好一些。
或者你可以研究一下防火墙的转发策略。
openwrt 的防火墙 fw3 是 netfilter/iptable 的高层界面。
路由和防火墙结合的非常紧密,防火墙控制数据是否可以:
配置文件:
# 更新后台服务的防火墙配置
/etc/init.d/firewall reload
# 使用fw3 工具
fw3 reload
这张是官网的原理图。结合之前的基础知识:
第一条线路是 wan口,它实际是内部交换机 switch et0 的零号端口。注意这个端口可以改变的,关键点是 vlan1。然后通过 tagging (打标签)通过port5端口的中继链路连接到真正的网卡 eth0 上面。
第二条线路是 lan口,它通过 vlan0 标注了 1~4 四个物理端口,中继链路到网卡 eth0 上。
br0 是一个虚拟桥接接口,通过vlan0将 lan口 和 eth2 连接起来。eth2是什么?就是wifi的网卡。
在典型的设备中,openwrt 是这样规划组件的:
openwrt中有两个概念:
一个控制器,可以有多个连接器,如eth0.2 有 WAN,WAN6。 但反过来不行。
网桥 br 可以让多个控制器组成一个虚拟交换机。但组合之后不能再对其一部分配置连接器。如 br-lan 和 eth0.1 不能有两个连接器配置。
vlan 可以让一个控制器,变成多个控制器。如 eth0 变成 eth0.1 和 eth0.2,但不能再对 eth0 配置连接器。
openwrt 的LAN、WAN在接口页面配置,wifi在无线页面配置,vlan在交换机页面配置。对应的配置文件:
路径:
例子:
config interface 'loopback'
option ifname 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
config interface 'lan'
option ifname 'eth0.1'
option proto 'static'
option netmask '255.255.255.0'
option ip6assign '60'
option ipaddr '192.168.3.2'
option gateway '192.168.3.1'
option broadcast '192.168.3.255'
option dns '192.168.3.1'
config interface 'wan'
option ifname 'eth0.2'
option proto 'dhcp'
config device 'wan_dev'
option name 'eth0.2'
option macaddr 'd4:7f:25:fe:18:25'
config interface 'wan6'
option ifname 'eth0.2'
option proto 'dhcpv6'
网络协议:
协议选项:
典型端口分配:
例子:
config switch
option name 'switch0'
option reset '1'
option enable_vlan '1'
config switch_vlan
option device 'switch0'
option vlan '1'
option ports '1 2 3 4 6t'
config switch_vlan
option device 'switch0'
option vlan '2'
option ports '0 6t'
端口转发配置:
config redirect
option enabled '1'
option target 'DNAT'
option src 'wan'
option dest 'lan'
option proto 'tcp udp'
option src_dport '53'
option dest_port '53'
option name 'force dns'
配置单独的vlan 和接口:
config switch
option device 'switch0'
option vlan '3'
option ports '1 6t'
config interface 'dmz'
option ifname 'eth0.3'
option proto 'static'
option ipaddr '192.168.30.1'
option netmask '255.255.255.0'
配置单独的dhcp:
config dhcp 'dmz'
option start '50'
option limit '70'
option leasetime '12h'
config host
option name 'STA-server2'
option dns '1'
option mac '24:B6:FD:24:59:B9'
option ip '192.168.30.20'
option leasetime '12h'
配置防火墙:
config zone
option name 'dmz'
option input 'REJECT'
option output 'REJECT'
option forward 'REJECT'
option network 'dmz'
config redirect
option target 'DNAT'
option src 'wan'
option src_dport '80 443'
option proto 'tcp'
option family 'ipv4'
option dest 'dmz'
option dest_ip '192.168.30.20'
option dest_port '80'
option name 'DNAT-HTTP-WAN-DNZ'
option enabled '1'
# 开启 dmz 到 wan 的 dns 访问
config 'rule'
option src 'dmz'
option proto 'tcpudp'
option dest 'wan'
option dest_port 53
option target 'ACCEPT'
option name 'ACCEPT-DNS-DMZ-WAN'
option enabled '1'
# 配置从lan到dmz 的 ssh 访问
config rule
option src 'lan'
option dest 'dmz'
option proto 'tcp'
option family 'ipv4'
option dest_port '22'
option target 'ACCEPT'
option name 'ACCEPT-SSH-LAN-DMZ'
option enabled '1'
# 将路由后台端口从 80 改为 8080
config redirect
option target 'DNAT'
option src 'wan'
option src_dport '8080'
option proto 'tcp'
option family 'ipv4'
option dest_port '80'
option name 'DNAT-HTTP-WAN-DEVICE'
option enabled '1'
# 搜索局域网内接口
nmap -sn 192.168.3.0/24
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。