谷动谷力

标题: OpenWrt系统网络配置和UCI命令详解 [打印本页]

作者: sunsili    时间: 2024-1-26 14:44
标题: OpenWrt系统网络配置和UCI命令详解
本帖最后由 sunsili 于 2024-4-11 10:26 编辑

OpenWrt系统网络配置和UCI命令详解

配置文件
OpenWrt所有配置保存在/etc/config目录,以下为主要的网络配置文件

网络接口

OpenWrt网络接口一般包含lan口和wan口,但如果是X86等设备,只设置了一张网卡,只会生成lan口信息,在虚拟机中我们默认只配置一个网卡,方便配置网络,等熟悉基本网络配置后再尝试将OpenWrt打造成一台路由器。

查看网卡配置和IP信息
在前面的教程中,我们将网卡IP设置成了动态获取IP,那我们查看网卡和IP信息有哪几种方式呢


查看所有接口: ifconfig
由于通过ifconfig只能看到ip和子网掩码信息,还要结合ip或route命令查看路由信息
  1. root@OpenWrt:~# ip route
  2. default via 192.168.10.1 dev br-lan  src 192.168.10.161
  3. 192.168.10.0/24 dev br-lan scope link  src 192.168.10.161
  4. root@OpenWrt:~#
  5. root@OpenWrt:~#
  6. root@OpenWrt:~# route
  7. Kernel IP routing table
  8. Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
  9. default         192.168.10.1    0.0.0.0         UG    0      0        0 br-lan
  10. 192.168.10.0    *               255.255.255.0   U     0      0        0 br-lan
  11. root@OpenWrt:~#
复制代码


ubus是OpenWrt中的一种轻量级RPC(Remote Procedure Call)机制,用于实现进程之间的通信。ubus支持基于JSON格式的消息传递和异步通信,它可以用来在OpenWrt设备上进行各种操作,例如获取设备状态、配置网络设置、查询系统信息等。
可以使用ubus命令查看OpenWrt设备的网络信息。具体步骤如下:
获取指定网络接口的详细信息(接口的名称、MAC地址、IP地址、子网掩码、广播地址、网关、DNS服务器) ubus call network.interface.<interface_name> status,其中<interface_name>是网络接口的名称。 例如,获取lan接口的详细信息:
  1. ubus call network.interface.lan status

  2. {
  3.         "up": true,
  4.         "pending": false,
  5.         "available": true,
  6.         "autostart": true,
  7.         "dynamic": false,
  8.         "uptime": 14506,
  9.         "l3_device": "br-lan",
  10.         "proto": "dhcp",
  11.         "device": "br-lan",
  12.         "metric": 0,
  13.         "dns_metric": 0,
  14.         "delegation": true,
  15.         "ipv4-address": [
  16.                 {
  17.                         "address": "192.168.10.161",
  18.                         "mask": 24
  19.                 }
  20.         ],
  21.         "ipv6-address": [
  22.                
  23.         ],
  24.         "ipv6-prefix": [
  25.                
  26.         ],
  27.         "ipv6-prefix-assignment": [
  28.                 {
  29.                         "address": "fdf1:f344:c0d9::",
  30.                         "mask": 60,
  31.                         "local-address": {
  32.                                 "address": "fdf1:f344:c0d9::1",
  33.                                 "mask": 60
  34.                         }
  35.                 }
  36.         ],
  37.         "route": [
  38.                 {
  39.                         "target": "0.0.0.0",
  40.                         "mask": 0,
  41.                         "nexthop": "192.168.10.1",
  42.                         "source": "192.168.10.161/32"
  43.                 }
  44.         ],
  45.         "dns-server": [
  46.                 "192.168.10.1"
  47.         ],
  48.         "dns-search": [
  49.         ],
  50.         "neighbors": [
  51.                
  52.         ],
  53.         "inactive": {
  54.                 "ipv4-address": [
  55.                         
  56.                 ],
  57.                 "ipv6-address": [
  58.                         
  59.                 ],
  60.                 "route": [
  61.                         
  62.                 ],
  63.                 "dns-server": [
  64.                         
  65.                 ],
  66.                 "dns-search": [
  67.                         
  68.                 ],
  69.                 "neighbors": [
  70.                         
  71.                 ]
  72.         },
  73.         "data": {
  74.                 "dhcpserver": "192.168.10.1",
  75.                 "hostname": "OpenWrt",
  76.                 "leasetime": 1800
  77.         }
  78. }
复制代码

我们也可以通过读取配置的方式获取网卡配置信息,但如果设置成了dhcp方式,状态数据不会存储在配置中,这种方式适合查看基本信息,比如ip地址获取方式、接口信息等
  1. root@OpenWrt:~# cat /etc/config/network

  2. config interface 'loopback'
  3.         option device 'lo'
  4.         option proto 'static'
  5.         option ipaddr '127.0.0.1'
  6.         option netmask '255.0.0.0'

  7. config globals 'globals'
  8.         option ula_prefix 'fdf1:f344:c0d9::/48'

  9. config device
  10.         option name 'br-lan'
  11.         option type 'bridge'
  12.         list ports 'eth0'

  13. config interface 'lan'
  14.         option device 'br-lan'
  15.         option ipaddr '192.168.1.1'
  16.         option netmask '255.255.255.0'
  17.         option ip6assign '60'
  18.         option proto 'dhcp'
复制代码

查看路由配置
  1. route
  2. Kernel IP routing table
  3. Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
  4. default         192.168.3.252   0.0.0.0         UG    0      0        0 br-lan
  5. 192.168.3.0     *               255.255.255.0   U     0      0        0 br-lan
  6. 192.168.3.252   *               255.255.255.255 UH    0      0        0 br-lan
  7. 192.168.5.0     *               255.255.255.0   U     0      0        0 eth1
复制代码


uci配置查看命令
  1. uci show network

  2. root@OpenWrt:~# uci show network
  3. network.loopback=interface
  4. network.loopback.device='lo'
  5. network.loopback.proto='static'
  6. network.loopback.ipaddr='127.0.0.1'
  7. network.loopback.netmask='255.0.0.0'
  8. network.globals=globals
  9. network.globals.ula_prefix='fdf1:f344:c0d9::/48'
  10. network.@device[0]=device
  11. network.@device[0].name='br-lan'
  12. network.@device[0].type='bridge'
  13. network.@device[0].ports='eth0'
  14. network.lan=interface
  15. network.lan.device='br-lan'
  16. network.lan.ipaddr='192.168.1.1'
  17. network.lan.netmask='255.255.255.0'
  18. network.lan.ip6assign='60'
  19. network.lan.proto='dhcp'
  20. uci show network.lan

  21. root@OpenWrt:~# uci show network.lan
  22. network.lan=interface
  23. network.lan.device='br-lan'
  24. network.lan.ipaddr='192.168.1.1'
  25. network.lan.netmask='255.255.255.0'
  26. network.lan.ip6assign='60'
  27. network.lan.proto='dhcp'
复制代码

网络配置命令
设置IP配置方式:uci set network.lan.proto='static'
设置LAN口的IP地址:uci set network.lan.ipaddr='192.168.10.100'
设置LAN口的子网掩码:uci set network.lan.netmask='255.255.255.0'
设置LAN口的网关地址:uci set network.lan.gateway='192.168.10.1'
设置DNS服务器地址:uci set network.lan.dns='8.8.8.8',如果有多个DNS服务器,可以用空格隔开多个IP地址,例如:uci set network.lan.dns='8.8.8.8 8.8.4.4'
保存修改后的配置:uci commit network
最后重启网络服务生效/etc/init.d/network reload
执行完以上步骤后,OpenWrt设备的LAN口将配置为静态IP地址192.168.10.100、子网掩码255.255.255.0、网关192.168.10.1、dns 8.8.8.8
完整命令:
  1. uci set network.lan.proto='static'  
  2. uci set network.lan.ipaddr='192.168.10.100'  
  3. uci set network.lan.netmask='255.255.255.0'  
  4. uci set network.lan.gateway='192.168.10.1'  
  5. uci set network.lan.dns='8.8.8.8'  
  6. uci commit network  
  7. /etc/init.d/network reload  
复制代码


执行后可以查看uci和配置文件
  1. root@OpenWrt:~# uci set network.lan.proto='static'
  2. root@OpenWrt:~# uci set network.lan.ipaddr='192.168.10.100'
  3. root@OpenWrt:~# uci set network.lan.netmask='255.255.255.0'
  4. root@OpenWrt:~# uci set network.lan.gateway='192.168.10.1'
  5. root@OpenWrt:~# uci set network.lan.dns='8.8.8.8'
  6. root@OpenWrt:~# uci commit network
  7. root@OpenWrt:~#
  8. root@OpenWrt:~#
  9. root@OpenWrt:~# uci show network.lan
  10. network.lan=interface
  11. network.lan.device='br-lan'
  12. network.lan.netmask='255.255.255.0'
  13. network.lan.ip6assign='60'
  14. network.lan.proto='static'
  15. network.lan.ipaddr='192.168.10.100'
  16. network.lan.gateway='192.168.10.1'
  17. network.lan.dns='8.8.8.8'
复制代码


lan接口修改后的配置
  1. config interface 'lan'
  2.         option device 'br-lan'
  3.         option netmask '255.255.255.0'
  4.         option ip6assign '60'
  5.         option proto 'static'
  6.         option ipaddr '192.168.10.100'
  7.         option gateway '192.168.10.1'
  8.         option dns '8.8.8.8'
复制代码

网络重启命令
修改网络配置后,有多种方式让配置生效
dhcp服务器配置
dhcp服务器用于分配ip地址给局域网的客户端,默认lan口的dhcp服务器是开启的,如果lan口虚拟网卡设置的是桥接模式,那lan口和PC处于同一广播域,PC可能会获取到OpenWrt系统分配的IP。
为了防止出现多DHCP服务器,我们要么将LAN口获取ip的方式改为dhcp,要么将DHCP服务器关闭,这里教大家如何关闭DHCP服务器。
  1. cat /etc/config/dhcp

  2. config dnsmasq
  3.         option domainneeded '1'
  4.         option boguspriv '1'
  5.         option filterwin2k '0'
  6.         option localise_queries '1'
  7.         option rebind_protection '1'
  8.         option rebind_localhost '1'
  9.         option local '/lan/'
  10.         option domain 'lan'
  11.         option expandhosts '1'
  12.         option nonegcache '0'
  13.         option authoritative '1'
  14.         option readethers '1'
  15.         option leasefile '/tmp/dhcp.leases'
  16.         option resolvfile '/tmp/resolv.conf.auto'
  17.         option localservice '1'

  18. config dhcp 'lan'
  19.         option interface 'lan'
  20.         option start '100'
  21.         option limit '150'
  22.         option leasetime '12h'
  23.         option dhcpv6 'server'
  24.         option ra 'server'
  25.         option ra_management '1'

  26. config dhcp 'wan'
  27.         option interface 'wan'
  28.         option ignore '1'

  29. config odhcpd 'odhcpd'
  30.         option maindhcp '0'
  31.         option leasefile '/tmp/hosts/odhcpd'
  32.         option leasetrigger '/usr/sbin/odhcpd-update'
复制代码


dhcp服务器忽略lan口:
  1. uci set dhcp.lan.ignore=1
复制代码

保存配置:
  1. uci commit dhcp
复制代码

重启服务:
  1. /etc/init.d/dnsmasq restart
复制代码


wan口配置
如果是路由器,默认就包含了wan接口,而如果是虚拟机,只配置了一个网卡,则需要配置wan接口搭建路由环境,具体见最后的OpenWrt虚拟网络环境搭建教程。
查看wan口配置
  1. uci show network.wan
复制代码


常用配置

wan口配置和lan口类似,也可以设置static、dhcp、pppoe等方式,我们可以通过uci命令修改,也可以通过vi命令编辑/etc/config/network配置文件修改,配置生效方式和lan口一样。
以下为各种方式的接口配置/etc/config/network
  1. config interface 'wan'
  2.         option device 'eth1'
  3.         option proto 'dhcp'
复制代码

切换dhcp网卡
  1. udhcpc -i eth1
  2. udhcpc (v1.23.2) started
  3. Sending discover...
  4. Sending select for 192.168.5.8...
  5. Lease of 192.168.5.8 obtained, lease time 30840
  6. udhcpc: ifconfig eth1 192.168.5.8 netmask 255.255.255.0 broadcast +
  7. udhcpc: setting default routers: 192.168.5.1
复制代码


  1. config interface 'wan'
  2.         option device 'eth1'
  3.         option proto 'static'
  4.         option ipaddr '192.168.10.171'
  5.         option netmask '255.255.255.0'
  6.         list dns '192.168.10.1'
  7.         list dns '8.8.8.8'
复制代码


  1. config interface 'wan'
  2.         option device 'eth1'
  3.         option proto 'pppoe'
  4.         option username 'test'
  5.         option password '123456'
  6.         option ipv6 'auto'
复制代码

管理OpenWrt 设备按以上拓扑部署后大家应该发现一个问题,就是物理PC不能直接访问OpenWrt了,因为PC和OpenWrt wan口在同网段,和OpenWrt lan不在同一网段。
那如何管理配置OpenWrt系统呢?
这里有两个方案:
/etc/init.d/firewall restart这样就可以通过web访问OpenWrt系统了,注意通过wan口ip访问。  也可以通过ssh连接wan口ip访问后台,注意低版本的OpenWrt需要绑定ssh服务到wan口才能访问,ssh配置文件`/










欢迎光临 谷动谷力 (http://bbs.sunsili.com/) Powered by Discuz! X3.2