OpenWrt网络配置详解

       OpenWrt是一款强大的路由器操作系统,当然OpenWrt还可以作为其他用途,目前应用最广泛的就是路由器。希望对广大的客户,在配置网络有帮助。

配置文件

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

  • 网络接口配置
    /etc/config/network

  • 网络服务配置
    /etc/config/dhcp

  • 防火墙配置
    /etc/config/firewall

网络接口

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

查看网卡配置和IP信息

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

  • 通过web界面查看
    这是我们最常用的查看方式,但作为开发人员,应该学会下面的命令行方式查看

  • ifconfig

  • ifconfig是一条用于显示和配置Linux/Unix操作系统中网络接口的命令。ifconfig命令可以显示当前系统中所有可用的网络接口的信息,例如IP地址、MAC地址、子网掩码、广播地址等命令格式: ifconfig $ifname比如查看lan口信息: ifconfig br-lan

  • 查看所有接口: ifconfig

    由于通过ifconfig只能看到ip和子网掩码信息,还要结合ip或route命令查看路由信息

  • 通过ubus命令

  •          ubus是OpenWrt中的一种轻量级RPC(Remote Procedure Call)机制,用于实现进程之间的通信。ubus支持基于JSON格式的消息传递和异步通信,它可以用来在OpenWrt设备上进行各种操作,例如获取设备状态、配置网络设置、查询系统信息等。

  • 可以使用ubus命令查看OpenWrt设备的网络信息。

    具体步骤如下:

    获取指定网络接口的详细信息(接口的名称、MAC地址、IP地址、子网掩码、广播地址、网关、DNS服务器)

  • ubus call network.interface.<interface_name> status,

     其中<interface_name>是网络接口的名称。例如,获取lan接口的详细信息:

      ubus call network.interface.lan status 

{
 "up": true,
 "pending": false,
 "available": true,
 "autostart": true,
 "dynamic": false,
 "uptime": 14506,
 "l3_device": "br-lan",
 "proto": "dhcp",
 "device": "br-lan",
 "metric": 0,
 "dns_metric": 0,
 "delegation": true,
 "ipv4-address": [
  {
   "address": "192.168.10.161",
   "mask": 24
  }
 ],
 "ipv6-address": [
  
 ],
 "ipv6-prefix": [
  
 ],
 "ipv6-prefix-assignment": [
  {
   "address": "fdf1:f344:c0d9::",
   "mask": 60,
   "local-address": {
    "address": "fdf1:f344:c0d9::1",
    "mask": 60
   }
  }
 ],
 "route": [
  {
   "target": "0.0.0.0",
   "mask": 0,
   "nexthop": "192.168.10.1",
   "source": "192.168.10.161/32"
  }
 ],
 "dns-server": [
  "192.168.10.1"
 ],
 "dns-search": [
 ],
 "neighbors": [
  
 ],
 "inactive": {
  "ipv4-address": [
   
  ],
  "ipv6-address": [
   
  ],
  "route": [
   
  ],
  "dns-server": [
   
  ],
  "dns-search": [
   
  ],
  "neighbors": [
   
  ]
 },
 "data": {
  "dhcpserver": "192.168.10.1",
  "hostname": "OpenWrt",
  "leasetime": 1800
 }
}

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

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

config globals 'globals'
 option ula_prefix 'fdf1:f344:c0d9::/48'

config device
 option name 'br-lan'
 option type 'bridge'
 list ports 'eth0'

config interface 'lan'
 option device 'br-lan'
 option ipaddr '192.168.1.1'
 option netmask '255.255.255.0'
 option ip6assign '60'
 option proto 'dhcp' 

uci配置查看命令
uci show network

root@OpenWrt:~# uci show network
network.loopback=interface
network.loopback.device='lo'
network.loopback.proto='static'
network.loopback.ipaddr='127.0.0.1'
network.loopback.netmask='255.0.0.0'
network.globals=globals
network.globals.ula_prefix='fdf1:f344:c0d9::/48'
network.@device[0]=device
network.@device[0].name='br-lan'
network.@device[0].type='bridge'
network.@device[0].ports='eth0'
network.lan=interface
network.lan.device='br-lan'
network.lan.ipaddr='192.168.1.1'
network.lan.netmask='255.255.255.0'
network.lan.ip6assign='60'
network.lan.proto='dhcp'

root@OpenWrt:~# uci show network.lan
network.lan=interface
network.lan.device='br-lan'
network.lan.ipaddr='192.168.1.1'
network.lan.netmask='255.255.255.0'
network.lan.ip6assign='60'
network.lan.proto='dhcp'

网络配置命令

  • 配置动态获取
    uci set network.lan.proto=dhcp

  • 配置静态IP

设置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

uci set network.lan.proto='static'  
uci set network.lan.ipaddr='192.168.10.100'  
uci set network.lan.netmask='255.255.255.0'  
uci set network.lan.gateway='192.168.10.1'  
uci set network.lan.dns='8.8.8.8'  
uci commit network  
/etc/init.d/network reload  

执行后可以查看uci和配置文件

root@OpenWrt:~# uci set network.lan.proto='static'
root@OpenWrt:~# uci set network.lan.ipaddr='192.168.10.100'
root@OpenWrt:~# uci set network.lan.netmask='255.255.255.0'
root@OpenWrt:~# uci set network.lan.gateway='192.168.10.1'
root@OpenWrt:~# uci set network.lan.dns='8.8.8.8'
root@OpenWrt:~# uci commit network
root@OpenWrt:~# 
root@OpenWrt:~# uci show network.lan
network.lan=interface
network.lan.device='br-lan'
network.lan.netmask='255.255.255.0'
network.lan.ip6assign='60'
network.lan.proto='static'
network.lan.ipaddr='192.168.10.100'
network.lan.gateway='192.168.10.1'
network.lan.dns='8.8.8.8'


lan接口修改后的配置

config interface 'lan'
 option device 'br-lan'
 option netmask '255.255.255.0'
 option ip6assign '60'
 option proto 'static'
 option ipaddr '192.168.10.100'
 option gateway '192.168.10.1'
 option dns '8.8.8.8'

root@ZhouWu:/# cat  /etc/config/network

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

config globals 'globals'
        option ula_prefix 'fdb8:0392:3c69::/48'

config interface 'lan'
        option device 'lan3'
        option proto 'static'
        option ipaddr '10.10.18.1'
        option netmask '255.255.255.0'
        option gateway '10.10.18.250'

config interface 'wan'
        option device 'lan4'
        option proto 'static'
        option ipaddr '192.168.9.148'
        option netmask '255.255.255.0'
        option gateway '192.168.9.1'

config interface 'wan0'
        option device 'lan1'
        option proto 'static'
        option ipaddr '10.10.10.1'
        option netmask '255.255.255.0'
        option gateway '10.10.10.250'

config interface 'wan1'
        option device 'lan2'
        option proto 'static'
        option ipaddr '192.168.8.1'
        option netmask '255.255.255.0'
        option gateway '192.168.8.250'

上面network配置信息,出自于MTK7981板子,把4个网口都配置成独立IP。

网络重启命令

修改网络配置后,有多种方式让配置生效

  • /etc/init.d/network reload

  • /etc/init.d/network restart

  • ubus call network reload

Init_Config()
{
        uci set system.@system[0].zonename="Asia/Seoul"
        uci set system.@system[0].cronloglevel=5
        uci set system.@system[0].log_proto=udp
        uci set system.@system[0].conloglevel=8
        uci set system.@system[0].timezone=KST-9
        uci set system.@timeserver[0].enabled=""
        uci set system.@timeserver[0].enable_server=""
        uci commit system
        uci delete wireless.@wifi-iface[0]
        uci commit wireless
        uci delete network.@interface[3]
        uci commit network
        sync
        /etc/init.d/network restart &
}

Init_Config 函数是帮助一位韩国朋友开发的项目,初始化系统配置

dhcp服务器配置

dhcp服务器用于分配ip地址给局域网的客户端,默认lan口的dhcp服务器是开启的,如果lan口虚拟网卡设置的是桥接模式,那lan口和PC处于同一广播域,PC可能会获取到OpenWrt系统分配的IP。

为了防止出现多DHCP服务器,我们要么将LAN口获取ip的方式改为dhcp,要么将DHCP服务器关闭,这里教大家如何关闭DHCP服务器。

  • 配置文件
    dhcp服务器配置保存在/etc/config/dhcp中,里面dhcp服务器配置和接口dhcp配置

  • 关闭lan口dhcp

dhcp服务器忽略lan口:uci set dhcp.lan.ignore=1
保存配置:uci commit dhcp
重启服务:/etc/init.d/dnsmasq restart

wan口配置

uci show network.wan

常用配置
wan口配置和lan口类似,也可以设置static、dhcp、pppoe等方式,我们可以通过uci命令修改,也可以通过vi命令编辑/etc/config/network配置文件修改,配置生效方式和lan口一样。

以下为各种方式的接口配置/etc/config/network

  • dhcp方式

 config interface 'wan'
        option device 'eth1'
        option proto 'dhcp'

  • 静态ip

 config interface 'wan'
 option device 'eth1'
 option proto 'static'
 option ipaddr '192.168.10.171'
 option netmask '255.255.255.0'
 list dns '192.168.10.1'
 list dns '8.8.8.8'

  • pppoe拨号

 config interface 'wan'
 option device 'eth1'
 option proto 'pppoe'
 option username 'test'
 option password '12345678'
 option ipv6 'auto'

虚拟机路由环境搭建

  • 增加虚拟网卡
    当我们通过虚拟机安装系统后默认只配置了一个网卡,所以我们还需要增加一个网卡,用于做wan口

 

 

  • 网络规划

       为了方便模拟数据从lan到wan进行转发,我们需要增加一台虚拟PC,该PC和OpenWrt LAN口在同一个局域网,而OpenWrt wan口和物理PC在同一个局域网(通过桥接或NAT模式均可),这样虚拟PC上网数据就会经过OpenWrt处理,OpenWrt充当了一个路由器的角色。

网络拓扑
        将OpenWrt lan接口配置为主机模式绑定为vmnet10(其他未占用的也可以),这样所有vmnet10中的网卡都和OpenWrt lan在同一个局域网。而wan口网卡设置为桥接模式,这样wan口可以获取到路由器分配的ip,并且和PC网卡ip在同一个网段。

网络拓扑图如下:

根据网络拓扑,还需要增加一台客户端,将网卡绑定到vmnet10,这样该客户端可以通过OpenWrt虚拟机联网,这里建议将OpenWrt系统克隆后修改网卡配置,作为客户端使用,当然你也可以增加一台windows、ubuntu虚拟机,连接OpenWrt路由器LAN口使用。

管理OpenWrt
       设备按以上拓扑部署后大家应该发现一个问题,就是物理PC不能直接访问OpenWrt了,因为PC和OpenWrt wan口在同网段,和OpenWrt lan不在同一网段。
那如何管理配置OpenWrt系统呢?

这里有两个方案:

  1. 新增一台虚拟PC连接在OpenWrt LAN口,这样在虚拟PC中可以直接管理OpenWrt

  2. 通过wan口访问OpenWrt系统
    注意默认是不能直接通过wan口访问的,因为OpenWrt默认开启了wan口防火墙,需要先关闭

关闭wan口防火墙
    打开防火墙配置,找到wan口的配置规则,将REJECT修改为ACCEPT,然后重新加载防火墙规则

vi /etc/config/firewall

/etc/init.d/firewall restart  重启防火墙

       这样就可以通过web访问OpenWrt系统了,注意通过wan口ip访问。也可以通过ssh连接wan口ip访问后台,注意低版本的OpenWrt需要绑定ssh服务到wan口才能访问,ssh配置文件/etc/config/dropbear,绑定到wan后重启服务即可,重启ssh服务命令/etc/init.d/dropbear restart

  • 38
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Windows 上使用 QEMU 模拟 OpenWrt 路由器时,你需要进行以下网络配置: 1. 创建一个 TAP 网络适配器 在 Windows 上,你需要创建一个 TAP 网络适配器,它将充当 OpenWrt 虚拟机和物理网络之间的桥梁。你可以使用一些第三方软件来创建 TAP 网络适配器,例如 OpenVPN 或 TunTap。 2. 配置 OpenWrt 虚拟机 在启动 OpenWrt 虚拟机之前,你需要对其进行一些网络配置。你可以通过编辑 OpenWrt 虚拟机的配置文件来完成这项工作。以下是一个示例配置文件: ```bash # 确保网卡类型为 virtio-net netdev = user,id=eth0 device = virtio-net-pci,netdev=eth0 # 启用串口 serial = 'pty' # 确保网卡名称为 eth0 kernel_cmdline = "console=ttyS0,115200 root=/dev/sda1" # 设置网卡 IP 地址和网关 network={ type=static ipaddr=192.168.1.2 netmask=255.255.255.0 gateway=192.168.1.1 } ``` 3. 启动 OpenWrt 虚拟机 现在,你可以启动 OpenWrt 虚拟机并测试网络连接是否正常。你可以通过以下命令启动虚拟机: ```bash qemu-system-x86_64 -enable-kvm -cpu host -m 512M -hda openwrt.img -net nic,model=virtio -net tap,ifname=TAP1,script=no,downscript=no -serial stdio ``` 其中 TAP1 是你在第一步中创建的 TAP 网络适配器的名称。这个命令还启用 KVM 虚拟化和串口连接。 4. 配置路由器 现在,你可以登录 OpenWrt 路由器配置网络设置。在默认情况下,OpenWrt 路由器的 IP 地址为 192.168.1.1。你可以使用 web 界面或 SSH 连接来进行配置。 在 web 界面中,你可以使用以下步骤进行配置: 1. 打开浏览器并输入 `http://192.168.1.1`。 2. 输入用户名和密码(默认为 root/空密码)。 3. 转到 Network -> Interfaces。 4. 点击 Edit 按钮以编辑 LAN 接口。 5. 在 IPv4 地址字段中输入 192.168.1.1。 6. 在子网掩码字段中输入 255.255.255.0。 7. 点击 Save & Apply 按钮以保存更改。 在 SSH 中,你可以使用以下命令进行配置: ```bash uci set network.lan.ipaddr='192.168.1.1' uci set network.lan.netmask='255.255.255.0' uci commit network /etc/init.d/network restart ``` 现在,你已经成功配置了 Windows QEMU OpenWrt网络连接。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值