首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【A-lab】使用OpenWrt制作出口设备

【A-lab】使用OpenWrt制作出口设备

原创
作者头像
星融元Asterfusion
发布2025-08-21 11:24:48
发布2025-08-21 11:24:48
2080
举报
文章被收录于专栏:A-LabA-Lab

1 目标概述

本文主要描述如何使用OpenWrt镜像在X86服务器上制作出口设备。

2 适用场景

 需要搭建模拟测试环境对接防火墙或BGP设备。

 需要输出带防火墙等相关的验证解决方案的材料。

注意:OpenWrt不支持VRF。

3 获取软件

下载地址:openwrt-22.03.5-x86-64-generic-ext4-combined.img.gz

https://downloads.openwrt.org/releases/22.03.5/targets/x86/64/openwrt-22.03.5-x86-64-generic-ext4-combined.img.gz

4 硬件与软件环境

4.1 硬件环境

名称

型号

硬件指标

备注

服务器或台式机

X86

CPU大于4核 内存大于4G

安装的centos7

表1:硬件环境

4.2 软件环境

软件

版本

备注

OpenWrt

openwrt-22.03.5-x86-64-generic-ext4-combined.img

vncviewer

Vncviewer-4.2.9

表2:软件环境

5 KVM安装OpenWrt

5.1 KVM安装

关闭selinux:

代码语言:txt
复制
临时关闭:setenforce 0
永久关闭:
vim /etc/sysconfig/selinux 
打开文件设置 SELINUX=disabled

安装KVM相关软件包:

代码语言:txt
复制
yum install qemu-kvm qemu-img virt-manager libvirt libvirt-python virt-manager libvirt-client virt-install virt-viewer -y

启动libvirt并设置开机自启动:

代码语言:txt
复制
systemctl start libvirtd
systemctl enable libvirtd

5.2 安装OpenWrt

下载组件

OpenWrt官网地址: https://openwrt.org/zh/downloads

固件下载地址: https://downloads.openwrt.org/releases/

找到最新版的固件, 我这里选择的是:

https://downloads.openwrt.org/releases/22.03.5/targets/x86/64/openwrt-22.03.5-x86-64-generic-ext4-combined.img.gz

代码语言:txt
复制
#下载后先解压缩:
#wget https://downloads.openwrt.org/releases/22.03.5/targets/x86/64/openwrt-22.03.5-x86-64-generic-ext4-combined.img.gz
#gzip -d openwrt-22.03.5-x86-64-generic-ext4-combined.img.gz

安装命令

代码语言:txt
复制
#先创建服务器上的网桥br0,给网桥br0配置IP,挂载物理网口。
[root@computer1 opt]#brctl addbr br0
[root@computer1 opt]#brctl addif eno2
[root@computer1 opt]# ip address add 10.240.4.223 dev br0 
#如果要把配置固化下来,可以写到配置文件里面。
[root@computer1 opt]#vi /etc/sysconfig/network-scripts/ifcfg-bro
TYPE=bridge
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=no
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=10.240.4.223
PREFIX=24
GATEWAY=10.240.4.1
[root@computer1 opt]#vi /etc/sysconfig/network-scripts/ifcfg-eno2
TYPE=Ethernet
BOOTPROTO=none
NM_CONTROLLED=no
NAME=eno2
DEVICE=eno2
ONBOOT=yes
BRIDGE=br0

virt-install --name openwrt --ram 1024 --vcpus 2 --disk path=/opt/openwrt-22.03.5-x86-64-generic-ext4-combined.img --network bridge=br0,model=e1000  --force --import --autostart  --vnc --vncport=5911  --vnclisten=0.0.0.0

可以通过vncviewr访问

也可以直接在服务器通过virsh console openwrt访问

代码语言:txt
复制
如果想重新创建,先删除
[root@computer1 opt]# virsh undefine openwrt
Domain openwrt has been undefined
[root@computer1 opt]#  virsh destroy  openwrt
Domain openwrt destroyed

#给OpenWrt虚拟机配置业务IP

#OpenWrt默认会创建网桥br-lan,并且该网桥绑定eth0

6 高可用方案

创建另一台 OpenWrt虚机

复制镜像

代码语言:txt
复制
cp  openwrt-22.03.5-x86-64-generic-ext4-combined.img  openwrt-22.03.5-x86-64-generic-ext4-combined-2.img

启动第二台OpenWrt(主要修改name、镜像名字、vncport)

代码语言:txt
复制
virt-install --name openwrt2 --ram 1024 --vcpus 2 --disk path=/opt/openwrt-22.03.5-x86-64-generic-ext4-combined-2.img --network bridge=br0,model=e1000  --force --import --autostart  --vnc --vncport=5912  --vnclisten=0.0.0.0

登陆后修改第二台OpenWrt的IP为10.240.4.225

代码语言:txt
复制
root@OpenWrt:~# vi /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 'fd0a:d001:29bb::/48'

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

config interface 'lan'
        option device 'br-lan'
        option proto 'static'
        option ipaddr '10.240.4.225'
        option netmask '255.255.255.0'
        option ip6assign '60'

给两台OpenWrt添加默认路由

代码语言:txt
复制
route add default gw 10.240.4.1

修改DNS

代码语言:txt
复制
root@OpenWrt:~# vi /etc/resolv.conf
nameserver 114.114.114.114

两台OpenWrt,安装keepalived

代码语言:txt
复制
opkg update
opkg install keepalived

配置keepalived

两台虚机修改/etc/config/keepalived

代码语言:txt
复制
配置主机
cat > /etc/config/keepalived <<-EOF
config globals 'globals'
   option alt_config_file          "/etc/keepalived/keepalived.conf"
EOF

修改/etc/keepalived/keepalived.conf

代码语言:txt
复制
配置主机
cat > /etc/keepalived/keepalived.conf <<-EOF
! Configuration File for keepalived

! failover E1 and I1 at the same time
vrrp_sync_group G1 {
  group {
    I1
  }
}

! internal
vrrp_instance I1 {
  state master
  interface br-lan
  virtual_router_id 51
  priority 101
  advert_int 1
  virtual_ipaddress {
    10.240.4.226/24
  }
  authentication {
    auth_type PASS
    auth_pass s3cret
  }
  nopreempt
}
EOF

配置备机:
cat > /etc/keepalived/keepalived.conf <<-EOF
! Configuration File for keepalived

! failover E1 and I1 at the same time
vrrp_sync_group G1 {
  group {
    I1
  }
}

! internal
vrrp_instance I1 {
  state backup
  interface br-lan
  virtual_router_id 51
  priority 50
  advert_int 1
  virtual_ipaddress {
    10.240.4.226/24
  }
  authentication {
    auth_type PASS
    auth_pass s3cret
  }
  nopreempt
} EOF

重新启动服务:

代码语言:txt
复制
/etc/init.d/keepalived restart 

在主路由上面 ip a 命令可以看到 vip 地址已经有了,电脑ping 这个地址可以通了

主机IP 10.240.4.224/24,备机IP 10.240.4.225/24

主机关闭该服务后IP只有10.240.4.224/24,虚拟IP丢失。

代码语言:txt
复制
root@OpenWrt:/# /etc/init.d/keepalived stop 

查看备机加载了虚拟IP:10.240.4.226/24

代码语言:txt
复制
root@OpenWrt:/# ip a|grep br-lan
br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
inet 10.240.4.225/24 brd 10.240.4.255 scope global br-lan
inet 10.240.4.226/24 scope global secondary br-lan

主机重启该服务后虚拟IP重新加载

代码语言:txt
复制
root@OpenWrt:/# /etc/init.d/keepalived restart 
备机同时则虚拟IP丢失
root@OpenWrt:/# ip a|grep br-lan 
br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
inet 10.240.4.225/24 brd 10.240.4.255 scope global br-lan

说明:

直接方法就是断开任意一个路由(10.240.4.224或者10.240.4.225),看虚拟路由VIP:10.240.4.226是否ping通。

有需要对wan口配置vrrp,可以参考官网配置:https://openwrt.org/docs/guide-user/network/high-availability

7 防火墙功能

OpenWrt 内置防火墙介绍

Openwrt 的防火墙实现与Linux的防火墙是通过netfilter内核模块,加上用户空间的iptables管理工具;同样是五链四张表、五元素的管理框架。

OpenWRT开发了一套与iptables同地位的netfilter管理工具fw3,这个工具侧重于从uci格式的配置文件中获取过滤信息下发到内核的netfilter中去。

防火墙文件总会在/etc/init.d/firewall 启动的时候由 UCI 解码并且生成 iptables规则生效。

OpenWrt 关于 NAT、 DMZ、防火墙规则等等都是由配置文件 /etc/config/firewall 文件控制。

防火墙的修改生效,需要重启防火墙执行以下指令:

代码语言:txt
复制
root@OpenWrt:/# /etc/init.d/firewall restart
或执行:
root@OpenWrt:/# /etc/init.d/firewall reload

查看当前 iptables 的已启用策略语法为:

代码语言:txt
复制
root@OpenWrt:/# iptables –L

防火墙内容解析

我们打开防火墙文件查看一下:

代码语言:txt
复制
root@OpenWrt:/# vi /etc/config/firewall

第一部分 默认参数

代码语言:txt
复制
config defaults
option syn_flood '1'
option input 'ACCEPT'
option output 'ACCEPT'
option forward 'REJECT'

这里是防火墙默认的参数表,其内容和相应的动作可以有如下选择:

防火墙文件这方面的内容为:

syn_flood 1 表示: 是否启用防泛洪攻击。可选值: 0 关闭,1 启用。

input ACCEPT 表示: 设置 INPUT 链(chain)的过滤策略,可选值: ACCEPT 允许, REJECT拒绝。

output ACCEPT 表示: 设置 OUTPUT 链(chain)的过滤策略,可选值: ACCEPT 允许,REJECT 拒绝。

forward REJECT 是 设置 FORWARD 链(chain)的过滤策略,可选值: ACCEPT 允许,REJECT 拒绝。

disable_ipv6 1 表示: 设置关闭掉 IPv6 的防火墙策略,可选值: 0 忽略,1 关闭

这部分参考值既是系统默认的即可,无需修改。

第二部分

代码语言:txt
复制
config zone
option name 'lan'
list network 'lan'
option input 'ACCEPT'
option output 'ACCEPT'
option forward 'ACCEPT'

config zone
option name 'wan'
list network 'wan'
list network 'wan6'
option input 'REJECT'
option output 'ACCEPT'
option forward 'REJECT'
option masq '1' #NAT转换使能
option mtu_fix '1'

config 后面是表示配置项的名称,这里”zone”为域的意思。

name 表示域的名字,必须是唯一值,可选值: wan, lan

network 表示网络列表,用来指示哪些接口被捆绑到这个域中,可选接口的名称,比如: lan,

wan, wan6

input ACCEP 允许 INPUT 链(chain)的过滤策略

output ACCEPT 允许 OUTPUT 链(chain)的过滤策略

forward ACCEPT 允许 FORWARD 链(chain)的过滤策略

masq 1 表示: 设置传输伪装,如果是 WAN 口必须为 1,实现NAT转换使能

mtu_fix 1 表示: 设置 MTU 的 MSS Clamping,如果是 WAN 口设为 1

简单来说:

mtu 是网络传输最大报文包。

mss 是网络传输数据最大值。

mss 加包头数据就等于 mtu.

这部分的设置作用如下:

zone将一个或多个接口分组,并用作forwardings, rules and redirects的源或目的地。传出流量的Masquerading(NAT)是在每个zone的基础上进行控制的。

第三部分 转发

代码语言:txt
复制
config forwarding
option src 'lan'
option dest 'wan'

src lan 是设置转发来源

dest wan 是设置转发目标

这部分作用描述如下:

Forwarding部分控制zones之间的业务流,并且可以实现特定方向的MSS Clamping。转发规则只涵盖一个方向。为了允许两个zone之间的双向流量,需要两个转发,其中src和dest分别反向。

第四部分 规则

代码语言:txt
复制
config rule
option name 'Allow-DHCP-Renew'
option src 'wan'
option proto 'udp'
option dest_port '68'
option target 'ACCEPT'
option family 'ipv4'

config rule
option name 'Allow-Ping'
option src 'wan'
option proto 'icmp'
option icmp_type 'echo-request'
option family 'ipv4'
option target 'ACCEPT'

config rule
option name 'Allow-IGMP'
option src 'wan'
option proto 'igmp'
option family 'ipv4'
option target 'ACCEPT'

这里只是罗列出了几个防火墙的规则,其实防火墙规则在/etc/config/firewall 中可以有任意数量的规则,这些规则定义了数据传输的动作和行为是被允许还是拒绝。

对于防火墙规则的作用描述如下:

规则可用于定义基本的接受或拒绝规则,以允许或限制对特定端口或主机的访问。像重定向,规则被绑定到给定的source zone,并与传入的流量相匹配。

防火墙规则的相应选项的意思:

name 表示:设置当前这个 rule 的名称

target 表示:设置防火墙动作,可选值: ACCEPT 许可, REJECT 拒绝, DROP 抛弃

src 表示: 数据源的 zone 域是哪个。可选值: wan / lan

src_ip 表示:数据源的 IP 地址是哪个。

src_mac 表示:数据源的 MAC 地址是哪个。

src_port 表示:数据源的端口,可以是一个端口,或一个端口范围,但是必须

同时指定了协议类型

proto 表示: 数据源的协议类型, 可选值: tcp, udp, tcpudp, udplit, icmp, esp, ah, sctp,

或 all 表示全部

dest 表示:数据目标的 zone 域是哪个。可选值: wan / lan

dest_ip 表示:数据目标的 IP 地址。

dest_port 表示:数据目标的端口,可以是一个端口,或一个端口范围,但是必须同时指定了协议类型

family 表示:数据的协议族,可选值: ipv4, ipv6, any

rule 规则设置可以灵活,比如允许来自 WAN 口的 ping,

例:

config rule option name Allow-Ping option src wan option proto icmp option icmp_type echo-request option family ipv4 option target ACCEPT

第五部分内容 端口转发、重定向

# 8080 代理 config redirect option target 'DNAT' option name 'port-redirect' option src 'wan' option src_dport '8080' option dest 'lan' option dest_ip '192.168.40.2' option dest_port '18080' # port 2000 ssh login local machine config redirect option target 'DNAT' option name 'port-2000' list proto 'tcp' option src 'wan' option src_dport '2000' option dest 'lan' option dest_port '22'

OpenWrt 防火墙允许使用者通过 WAN 口访问特定的端口重定向给局域网的一台电脑设备(比如 WAN 口访问 80 端口(HTTP)将重定向给局域网某台网站服务器)。 端口重定向是在防火墙配置/etc/config/firewall 中定义 redirect 段策略实现的。所有匹配的来源数据将根据目标设置转发到目标主机上。 firewall 配置中可以有多个 redirect 策略,默认是没有开放任何重定向的,如果需要重定向请使用 vi 或 UCI 进行配置。

name 表示:设置当前这个 redirect 的名称

src 表示:转发源的 zone 域,一般转发都是转发从 wan 过来的访问

src_ip 表示:转发源的 IP 地址指定

src_mac 表示:转发源的 MAC 地址指定

src_port 表示:转发源的端口指定

proto 表示: 转发源的协议类型, 可选值: tcp, udp, tcpudp, udplit, icmp, esp, ah, sctp, 或

all 表示全部

dest 表示:转发目标的 zone 域

dest_ip 表示:转发目标的 IP 地址指定

dest_mac 表示:转发目标的 MAC 地址指定

dest_port 表示:转发目标的端口指定

端口重定向的可配置性很灵活。比如我们将 8080 这个端口转发给内网一台服务器的 18080 端口.

第六部分内容 IPV6

config rule option name 'Allow-DHCPv6' option src 'wan' option proto 'udp' option src_ip 'fc00::/6' option dest_ip 'fc00::/6' option dest_port '546' option family 'ipv6' option target 'ACCEPT' config rule option name 'Allow-MLD' option src 'wan' option proto 'icmp' option src_ip 'fe80::/10' list icmp_type '130/0' list icmp_type '131/0' list icmp_type '132/0' list icmp_type '143/0' option family 'ipv6' option target 'ACCEPT' config rule option name 'Allow-ICMPv6-Input' option src 'wan' option proto 'icmp' list icmp_type 'echo-request' list icmp_type 'echo-reply' list icmp_type 'destination-unreachable' list icmp_type 'packet-too-big' list icmp_type 'time-exceeded' list icmp_type 'bad-header' list icmp_type 'unknown-header-type' list icmp_type 'router-solicitation' list icmp_type 'neighbour-solicitation' list icmp_type 'router-advertisement' list icmp_type 'neighbour-advertisement' option limit '1000/sec' option family 'ipv6' option target 'ACCEPT' config rule option name 'Allow-ICMPv6-Forward' option src 'wan' option dest '*' option proto 'icmp' list icmp_type 'echo-request' list icmp_type 'echo-reply' list icmp_type 'destination-unreachable' list icmp_type 'packet-too-big' list icmp_type 'time-exceeded' list icmp_type 'bad-header' list icmp_type 'unknown-header-type' option limit '1000/sec' option family 'ipv6' option target 'ACCEPT'

允许 IPSec tunnel 通过防火墙,分别 IKA SA 、IPSec SA 放行。

第八部分 扩展内容

config include option path '/etc/firewall.user' config include 'miniupnpd' option type 'script' option path '/usr/share/miniupnpd/firewall.include' option family 'any' option reload '1'

DMZ 介绍

DMZ 是英文“ demilitarized zone”的缩写,中文名称为“隔离区”。它是为了解决安装防火墙后外部网络不能访问内部网络服务器的问题,而设立的一个非安全系统与安全系统之间的缓冲区,这个缓冲区位于企业内部网络和外部网络之间的小网络区域内,在这个小网络区域内可以放置一些必须公开的服务器设施,如企业 Web 服务器、FTP 服务器和论坛等。另一方面,通过这样一个 DMZ 区域,更加有效地保护了内部网络,因为这种网络部署,比起一般的防火墙方案,对攻击者来说又多了一道关卡。端口映射与 DMZ 的区别在于:端口映射只是映射指定的端口,DMZ 相当于映射所有的端口,并且直接把主机暴露在网关中,比端口映射方便但是不安全。

下面是关于 DMZ的一个示意图:

结合之前简单的规则部分,这里我们给出一个将电脑 192.168.1.2 设置 DMZ 隔离区的例子:

Simple DMZ rule The following rule redirects all WAN ports for all protocols to the internal host 192.168.1.2. config redirect option src wan option proto all option dest_ip 192.168.1.2

iptables 命令

DNAT 目的地址、目的端口的转换

iptables -t nat -A zone_wan_prerouting -p tcp \ -s 192.168.9.20/255.255.255.255\ -d 192.168.8.20/255.255.255.255\ -m tcp --sport 3333 --dport 2222\ -m comment --comment "@redirect[0]"\ -j DNAT --to-destination 192.168.10.20:22

如果遇到“源地址192.168.8.20,目的地址192.168.8.20,源端口3333,目的端口2222”的数据包,修改成“源地址192.168.168.8.20,目的地址192.168.10.20,源端口3333,目的端口22”的数据包。

iptables -t nat -A zone_wan_prerouting -p tcp\ -d 192.168.8.20/255.255.255.255\ -m tcp --dport 2222 -m comment\ --comment "@redirect[0]" -j REDIRECT --to-ports 22

如果遇到“目的地址192.168.8.20,目的端口2222,协议为tcp”的数据包,修改成“源地址保持,目的地址192.168.10.20,源端口保持,目的端口22,协议为tcp”的数据包。

SNAT 数据包的源地址转换

iptables -t nat -A zone_lan_postrouting -p tcp\ -s 192.168.9.20/255.255.255.255\ -d 192.168.10.20/255.255.255.255\ -m tcp --sport 3333 --dport 22\ -m comment --comment "@redirect[0]" \ -j SNAT --to-source 192.168.8.20:2222

当遇到“源地址192.168.9.20,目的地址192.168.10.20,源端口3333,目的端口22,协议为TCP”的数据包时,将其源地址和源端口修改为(192.168.8.20,2222)

查看 NAT 表,区别 uci 配置与 iptables 配置的关系

root@ixeCloud:/etc/config# iptables -t nat -L |tail -n 5 prerouting_wan_rule all -- anywhere anywhere /* !fw3: Custom wan prerouting rule chain */ DNAT tcp -- anywhere anywhere tcp dpt:8080 /* !fw3: port-redirect */ to:192.168.40.2:18080 REDIRECT tcp -- anywhere anywhere tcp dpt:2000 /* !fw3: port-2000 */ redir ports 22 DNAT tcp -- 192.168.9.20 192.168.8.20 tcp spt:3333 dpt:2222 /* @redirect[0] */ to:192.168.10.20:22 REDIRECT tcp -- anywhere 192.168.8.20 tcp dpt:2222 /* @redirect[0] */ redir ports 22

通过 uci 命令修改的 firewall 的内容,需要加载 firewall reload 后,防火墙参数才可以生效;而 iptables 命令修改后直接生效。

注意: 在 OpenWRT 的 web 配置页面不显示 iptables 配置的NAT内容。

8 BGP功能

BGP Routing on OpenWrt with Quagga

Quagga Routing Suite是一个开源软件套件,为 Unix 平台提供稳定的 BGPv4 实现。它由一个核心 zebra 守护进程和支持各种路由协议(包括 RIP、OSPF 和 BGP)的守护进程组成。

在 OpenWrt 上安装组件

opkg update #opkg install quagga quagga-zebra quagga-bgpd quagga-watchquagga quagga-vtysh opkg install frr frr-babeld frr-bfdd frr-bgpd frr-eigrpd frr-fabricd frr-isisd frr-ldpd frr-libfrr frr-nhrpd frr-ospf6d frr-ospfd frr-pbrd frr-pimd frr-ripd frr-ripngd frr-staticd frr-vrrpd frr-vtysh frr-watchfrr frr-zebra

编辑支持的路由协议

root@OpenWrt:/# vi /etc/frr/daemons # The staticd,watchfrr and zebra daemons are always started. # bgpd=yes ospfd=no #ospfd_instances=1,20 ospf6d=no ripd=no ripngd=no isisd=no pimd=no ldpd=no nhrpd=no eigrpd=no babeld=no sharpd=no pathd=no pbrd=no bfdd=yes fabricd=no vrrpd=no

启用你需要的协议,把no改成yes就行了,然后重启frr

root@OpenWrt:/# /etc/init.d/frr restart

运行 vtysh 配置 frr,配置 bgp peer

#指定自治系统号65001(自治系统号是一个16bit的数字,从1-65535,其中64512-65535保留为私有) root@OpenWrt:/# vtysh Hello, this is FRRouting (version 8.2). Copyright 1996-2005 Kunihiro Ishiguro, et al. OpenWrt# configureOpenWrt# configure terminal OpenWrt(config)# router bgp 65001 OpenWrt(config-router)# router-id 192.168.0.1 OpenWrt(config)# router bgp 65001 OpenWrt(config-router)# neighbor 192.168.0.31 remote-as 65005 OpenWrt(config-router)# neighbor 192.168.0.31 description "k8s-Host31" OpenWrt(config-router)# neighbor 192.168.0.32 remote-as 65005 OpenWrt(config-router)# neighbor 192.168.0.32 description "k8s-Host32" OpenWrt(config-router)# neighbor 192.168.0.33 remote-as 65005 OpenWrt(config-router)# neighbor 192.168.0.33 description "k8s-Host33" OpenWrt(config-router)# exit OpenWrt(config)# exit OpenWrt# show running-config OpenWrt# show ip bgp summary OpenWrt# write

9 端口聚合功能

重新创建虚机,添加两个接口

virt-install --name openwrt --ram 1024 --vcpus 2 --disk path=/opt/openwrt-22.03.5-x86-64-generic-ext4-combined.img --network bridge=br0,model=e1000 --network bridge=br0,model=e1000 --force --import --autostart  --vnc --vncport=5911  --vnclisten=0.0.0.0

给OpenWRT安装必要软件包,以启用bond的支持

opkg update opkg install kmod-bonding luci-proto-bonding proto-bonding

接着从br-lan中移除eth0

brctl delif br-lan eth0 ifconfig br-lan down

在自动启动脚本中增加如下配置,以便在开机时自动创建bond网卡

需要添加的内容如下(添加至 exit 0之前),需要根据实际情况修改网卡名称(即下方的eth0和eth1为你要聚合的两个网口)

modprobe bonding mode=balance-rr miimon=100 #添加 bond 类型的虚拟接口 名称为 bond-wan ip link add bond-wan type bond mode balance-rr #将eth0添加到聚合接口 ifconfig eth0 down ip link set eth0 master bond-wan #将eth1添加到聚合接口 ifconfig eth1 down ip link set eth1 master bond-wan ip link set bond-wan up #启动该网卡

修改 wan 接口的网卡为 bond-wan 。

同理,如果要对lan接口做聚合,可以配置bond-lan,然后修改 lan接口的网卡为 bond-lan。

如果不想用命令行添加,也可以在界面luci上添加。

网络 -> 接口 -> 添加新接口-> 新接口的协议 -> 链路聚合(通道绑定)

之后在 高级设置->从属接口 选择网卡,其他参数默认即可

配置IP和路由:

ifconfig bond-wan 10.240.4.224 netmask 255.255.255.0 route add default gw 10.240.4.1

10 创建VLAN

1) 在 “接口” 页面,切换至 “设备” 选项卡,点击左下角的 “添加设备配置”,添加一 “网桥设备”。如果是新安装的OpenWrt,也可直接编辑网桥设备 “br-lan”,在名为 “br-lan” 设备的右侧,点击 “配置” 按钮。

2) 在“常规设备选项”中,将“网桥端口”更改为eth0,此时所有eth0端口的数据将经过该网桥。

3) 切换至 “网桥VLAN过滤” 选项卡,启用VLAN过滤,并新增VLAN 101、1000。eth0作为他们俩已标记的出口。设置完毕后点击“保存”按钮。这样,网桥内VLAN ID为101、1000的数据,将会被打上VLAN Tag后,从eth0端口发送。

4) 在“设备”界面,可见自动新增了两个软件VLAN设备。通过eth0进入网桥“br-lan”的数据,将根据VLAN ID标签,将其转发至虚拟的br-lan.1000和br-lan.101设备。同时,br-lan.1000和br-lan.101设备发送的数据,进入网桥br-lan后,将根据设定的VLAN过滤规则,决定是否加上VLAN Tag从对应的实际硬件设备进行转发。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 目标概述
  • 2 适用场景
  • 3 获取软件
  • 4 硬件与软件环境
    • 4.1 硬件环境
    • 4.2 软件环境
  • 5 KVM安装OpenWrt
    • 5.1 KVM安装
    • 5.2 安装OpenWrt
  • 6 高可用方案
  • 7 防火墙功能
  • 8 BGP功能
  • 9 端口聚合功能
  • 10 创建VLAN
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档