小白学openwrt 网络 -第一篇

在上一篇博客里,我们记录了在虚拟机上运行openwrt中遇到TTL过期问题。今天我们继续前行。尝试着去了解和设置openwrt基础网络配。

首先快速学习了一下《B智能路由开发指南》的网络篇,然后就开始实操了。

运行openwrt虚拟机1:充当普通路由器,命名为router-001。

运行openwrt虚拟机2:充当普通pc,命名为pc-001。

实操目标:pc-001从router-001获取ip,并能访问外网,

一、openwrt 网络基础知识

1.1 openwrt网络接口名称

在openwrt上有各种名词名称,弄的我蒙头转向的,我已经方的不要不要的了。然后就瞎总结了一下。

接口名称 名称分类 说明
eth0,eth0.1,eth0.2,eth1,eth2, ra0,rai0 物理网络接口名称 这些都是网卡驱动产生的设备节点
lo,eth0:1,eth0.1 虚拟网络接口名称 不代表一个实际存在的硬件设备,同样是由驱动产生的设备节点
lan1 逻辑网络接口 将二层的网络接口名称组合在一起,提供某些逻辑操作。接口的类型决定了接口的逻辑操作
lan2 逻辑网络接口 同lan1,比设备节点高一层,定义在/etc/config/network
wan 逻辑网络接口 同lan1,比设备节点高一层,定义在/etc/config/network
 zone-lan1 安全域名称 具有相同防火墙规则的逻辑网络接口,组成的集合
zone-lan2 安全域名称 同zone-lan1,比逻辑网络接口高一层,定义在/etc/config/fireware
zone-wan 安全域名称 同zone-lan1,比逻辑网络接口高一层,定义在/etc/config/fireware

1.2  二层的网络接口

二层的网络接口包含物理网络接口和虚拟网络接口。他们直接由驱动产生的网络设备,是linux的3大设备类型之一。

lo是本地回环虚拟接口;eth0.1,eth0.2是vlan产生的虚拟的网络接口。网络设备驱动直接负责了数据收发的实现。

1.3 逻辑网络接口

逻辑网络接口,是openwrt抽象出来的接口,用于对二层的网络接口的统一管理和抽象。 它定义在/etc/config/network里面,定义如下。详情可以参考openert的wiki:https://oldwiki.archive.openwrt.org/zh-cn/doc/uci/network。

config interface 'loopback'
	option ifname 'lo'
	option proto 'static'
	option ipaddr '127.0.0.1'
	option netmask '255.0.0.0'

config interface 'lan1'
	option type 'bridge'
	list ifname 'eth0'
	option proto 'static'
	option netmask '255.255.255.0'
	option ip6assign '60'
	option ipaddr '192.168.33.1'

config interface 'wan'
	option proto 'dhcp'
	option ifname 'eth2'

在/etc/config/network的interface中配置了逻辑网络接口的类型和对应的二层的网络接口集合。值得注意的是当 接口类型选择为‘bridge’时,linux会模拟一个软件实现的交换机。这个模拟的交换机也是工作在数据链路层,通过mac地址进行透明转发的。这个模拟的交换机可以使用ifconfig或者brctl查看,关于linux的模拟详情参考:https://wiki.linuxfoundation.org/networking/bridge#Bridge_priority。

root@OpenWrt:/etc/config# ifconfig 
br-lan1   Link encap:Ethernet  HWaddr 00:0C:29:A4:B7:34  
          inet addr:192.168.33.1  Bcast:192.168.33.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fea4:b734/64 Scope:Link
          inet6 addr: fd42:5754:213e::1/60 Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:601 errors:0 dropped:0 overruns:0 frame:0
          TX packets:665 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:37656 (36.7 KiB)  TX bytes:83810 (81.8 KiB)

br-lan2   Link encap:Ethernet  HWaddr 00:0C:29:A4:B7:3E  
          inet addr:192.168.44.1  Bcast:192.168.44.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fea4:b73e/64 Scope:Link
          inet6 addr: fd42:5754:213e:10::1/60 Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1017 errors:0 dropped:0 overruns:0 frame:0
          TX packets:68 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:46782 (45.6 KiB)  TX bytes:11464 (11.1 KiB)

 

root@OpenWrt:/etc/config# brctl show
bridge name	bridge id		STP enabled	interfaces
br-lan1		7fff.000c29a4b734	no		eth0
br-lan2		7fff.000c29a4b73e	no		eth1
root@OpenWrt:/etc/config# 

1.4 安全域名称

  zone是具有相同防火墙规则的逻辑网络接口的集合,这样便于管理。细节参考https://openwrt.org/zh-cn/doc/uci/firewall。

以上的基础知识需要慢慢学习,我还没来的及学习,所以可能说的有错误。

二、配置VMware虚拟网络

在VMware虚拟网络编辑器中, 保证有2个仅主机模式VMnet1和VMnat2 ;和一个Nat模式VMnet8的网络。打开VMnet8 的dhcp服务,关闭VMnet1和VMnet2的dhcp服务。设置VMnat1,VMnet2和VMnat8的网段,并记录。

三、配置路由器router-001

3.1 增加网络适配器

因为我们将openwrt 配置成为路由器,所以只是需要两个物理接口(虚拟的)。我们打开虚拟机设置,增加2网络适配器。适配器1选择VMnet1(仅主机模式);适配器2选择VMnet2(仅主机模式);适配器3选择VMnet8(NAT模式)。

3.2 删除配置

将原来的/etc/config/network的内容全部删掉。/etc/init.d/network restart,然后ifconfig查看一下,发现空空如也。

3.3 基本网络配置

config interface 'loopback' 
	option ifname 'lo'
	option proto 'static'
	option ipaddr '127.0.0.1'
	option netmask '255.255.255.0'

config interface 'lan1_yp'
	option ifname 'eth0'
	option type  'bridge'
	option proto 'static'
	option ipaddr '192.168.33.1'
	option ipaddr '255.255.255.0'

config interface 'lan2_yp'
	option ifname 'eth1'
	option type  'bridge'
	option proto 'static'
	option ipaddr '192.168.44.1'
	option ipaddr '255.255.255.0'

config interface 'wan_yp'
	option ifname 'eth2'
	option proto 'dhcp'

这个是最简单的配置了。

interface:就是逻辑接口的名称。可以随便取名字,但是不能有‘-’这个字符。

ifname:标识 二层的网络接口名称,这个名称由驱动决定,不能随便写。

type:'none' 和 'bridge','bridge'标识是桥设备,系统会自动产生一个br-xxx的网络接口,可以使用ifconfig和brctl show查看。

proto:dhcp为动态获取ip配置,static 表示使用静态的ip配置。

具体的说明参看 1.3 逻辑网络接口中的链接。

到这里我们就可以ping qq 成功了。

root@OpenWrt:/etc/config# ping qq.com
PING qq.com (61.129.7.47): 56 data bytes
64 bytes from 61.129.7.47: seq=0 ttl=128 time=29.376 ms
^C
--- qq.com ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 29.376/29.376/29.376 ms

3.4 配置dhcp

路由器需要运行dhcp服务,给连接在路由器上的主机(下行接口)自动分配ip地址。基本配置如下:

root@OpenWrt:/etc/config# cat dhcp 

config dnsmasq
	option domainneeded '1'
	option boguspriv '1'
	option filterwin2k '0'
	option localise_queries '1'
	option rebind_protection '1'
	option rebind_localhost '1'
	option local '/lan/'
	option domain 'lan'
	option expandhosts '1'
	option nonegcache '0'
	option authoritative '1'
	option readethers '1'
	option leasefile '/tmp/dhcp.leases'
	option resolvfile '/tmp/resolv.conf.auto'
	option nonwildcard '1'
	option localservice '1'

config dhcp 'dhcp_lan1'
	option interface 'lan1_yp'
	option start '100'
	option limit '150'
	option leasetime '12h'
	option dhcpv6 'server'
	option ra 'server'
	option ra_management '1'

config dhcp 'dhcp_lan2'
	option interface 'lan2_yp'
	option start '100'
	option limit '150'
	option leasetime '12h'
	option dhcpv6 'server'
	option ra 'server'
	option ra_management '1'

config dhcp 'dhcp_wan'
	option interface 'wan_yp'
	option ignore '1'

config odhcpd 'odhcpd'
	option maindhcp '0'
	option leasefile '/tmp/hosts/odhcpd'
	option leasetrigger '/usr/sbin/odhcpd-update'
	option loglevel '4'

我们可以看到我们的逻辑接口lan!_yp,lan2_yp,wan_yp。其他选项可以参考https://oldwiki.archive.openwrt.org/doc/uci/dhcp。

3.5 防火墙配置(转发配置)

在/etc/config/firewall 配置1:

root@OpenWrt:/etc/config# cat firewall 
config defaults
	option input ACCEPT  
	option output ACCEPT
	option forward ACCEPT
	option syn_flood true
	option disable_ipv6 true

config zone
	option name 'zone_lan1'
	list network 'lan1_yp'
	option input ACCEPT
	option forward REJECT
	option output ACCEPT
	option masq false
	option mtu_fix true

config zone
	option name 'zone_wan'
	list network 'wan_yp'
	option input ACCEPT
	option forward REJECT
	option output ACCEPT
	option masq true
	option mtu_fix true

#config forwarding
#	option src 'zone_lan1'
#	option dest 'zone#_wan'
#	option family 'any'

配置1,已经可以让pc-001 ping 通qq了。不过默认接收所有转发不太好,一般都是默认设置拒绝的。配置2如下:

在/etc/config/firewall  配置2,具体参数可参考

https://openwrt.org/zh-cn/doc/uci/firewall

root@OpenWrt:/etc/config# cat firewall 
config defaults
	option input REJECT 
	option output REJECT
	option forward REJECT 
	option syn_flood true
	option disable_ipv6 true

config zone
	option name 'zone_lan1'
	list network 'lan1_yp'
	option input ACCEPT
	option forward REJECT
	option output ACCEPT
	option masq false
	option mtu_fix true

config zone
	option name 'zone_wan'
	list network 'wan_yp'
	option input ACCEPT
	option forward REJECT
	option output ACCEPT
	option masq true
	option mtu_fix true

config forwarding
	option src 'zone_lan1'
	option dest 'zone_wan'
	option family 'any'

四、配置pc-001

4.1 删除配置

将原来的/etc/config/network的内容全部删掉。/etc/init.d/network restart,然后ifconfig查看一下,发现空空如也。

4.2 基本配置

root@OpenWrt:/etc/config# cat network 

config interface 'loopback'
	option ifname 'lo'
	option proto 'static'
	option ipaddr '127.0.0.1'
	option netmask '255.0.0.0'

config interface 'wan'
	option proto 'dhcp'
	option ifname 'eth0'

配置后,重启网络/etc/init.d/network restart,发现没能通过dhcp从router-001获取到ip。那么我们应该去检测route-001的dhcp。正常情况下是可以获得ip。

root@OpenWrt:~# ifconfig 
eth0      Link encap:Ethernet  HWaddr 00:0C:99:44:BB:23  
          inet addr:192.168.33.121  Bcast:192.168.33.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe04:fb23/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:7061 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6061 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:795731 (777.0 KiB)  TX bytes:790382 (771.8 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:1411 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1411 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:205825 (201.0 KiB)  TX bytes:205825 (201.0 KiB)

这样就能ping通qq了。可以反复修改/etc/config/firewall 来测试参数的作用。

 

你可能感兴趣的:(通讯)