一、前言

        是否选择原版OpenWrt取决于您具体需求和技术能力。如果你喜欢探索和自定义路由器的各种功能,并且愿意花时间和精力去学习和解决可能遇到的问题,那么原版OpenWrt无疑是一个不错的选择。反之,如果你只是需要一个稳定且易用的路由器系统,那么可能其他一些预装了大量插件和功能的固件会更适合你。本人因为喜欢至简的系统,别人做好的镜像安全性无法保证,或者带有作者外链、需要捐助等原因,所以选择自己制作。

需求:

1、3条外网线路:300M电信ADSL ;200M移动专线;200M联通专线

2、实现上网的负载均衡,192.168.128.21走联通200M   192.168.128.22 走移动且限速150M

3、AP作为无线的发射以及DHCP ,其他设备固定IP

简单画个拓扑

二、镜像下载及扩容

因为做all in one ,OpenWrt安装在esxi下,官方img镜像只有120M,随便装几个稍大的软件就满了,试过安装后挂载,感觉太乱,不如在安装前对官方镜像进行扩容,扩容操作在Ubuntu下进行操作,以下方法也是网上搜集,试了好几天才得到可用的

1,下载openwrt镜像, 官方最新版下载地址:OpenWrt Firmware Selector

解压后得到img文件,利用Xftp拷贝至 Ubuntu目录 /root/OpenWrt

2,使用dd命令增加img镜像的空间,下面这句的意思就是,每一次写入2M,写2500次,就是写入4.88G左右,加上初始0.12G 也就是把空间增加到5G大小。扩容后的大小,可以根据需求来定。(强迫症想要镜像大小为完整的5G   count=1024M*5-镜像大小)/2

cd /root/OpenWrt

dd if=/dev/zero bs=2M count=2500 >> openwrt-23.05.0-x86-64-generic-ext4-combined-efi.im

过程如下图

3,挂载镜像到loop设备

losetup -f openwrt-23.05.0-x86-64-generic-ext4-combined-efi.img

3-1,查看挂载的查看挂载的设备的名称,使用losetup命令

# losetup

可以看到,挂载的img镜像名称是loop12,完整路径是/dev/loop12

3-2,使用lsblk命令,可以看到loop12的空间大小是5G

# lsblk

3-3,读取分区信息, 加载到系统,使用 partx 命令

# partx -a /dev/loop12

3-4,使用lsblk查看加载的结果

# lsblk

可以看到,loop12下面,有3个分区,一个是loop12p1,一个是loop12p2,其中第二个分区是104M,我们就是要把这个给扩容。

4,使用fidsk进行重新分区扩容

#fdisk /dev/loop12

# efi的固件,还需要刻录UUID编号,输入i查看分区信息,记录UUID的编号,后面用到,非efi固件忽略这一步。

# 删除/dev/loop0p2分区,输入d之后输入2(默认)

# 输入n新建分区
Command (m for help): n
分区号  2
# 输入p主分区(有些无)
Select (default p): p
# 输入2(默认)
Partition number (2-4, default 2): 2
# 输入分区2的开始扇区,一定要和上面的一样,这里是33280
First sector (33280-10486301, default 33280): 33280
# 输入结束扇区,一定要比33792大,如果直接回车就是全部剩余都将作为第二分区,这里直接回车
Last sector, +sectors or +size{K,M,G,T,P} (33280-10486301, default 10486301):

Created a new partition 2 of type 'Linux' and of size 5 GiB.
Partition #2 contains a ext4 signature.

# 提示,是否移除分区的签名,这里一定要输入n,不然镜像会出问题
Do you want to remove the signature? [Y]es/[N]o: n

# efi固件,按x进入高级菜单,然后输入u,写入UUID,把之前记录的UUID输入进去,非efi固件忽略这一步。
Command (m for help): x

Expert command (m for help): u
Partition number (1,2,128, default 128): 2
# 输入之前我们记录的UUID
New UUID (in 8-4-4-4-12 format): 0BF605D0-65DD-058C-3548-B83D11220202

# 按r返回菜单
Expert command (m for help): r

# 输入w保存我们的更改
Command (m for help): w

# 会有警告,这里不用管
The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.: Invalid argument

# 提示说内核依然会使用旧的分区表,新的分区表需要在下次重启或运行 partprobe(8)或kpartx(8)命令后生效
The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8).

4-1,更新分区信息,使用新的分区表

partx -u /dev/loop12

更新完成后,再次使用lsblk查看

# 再次查看,可以看出loop12p2分区扩容成功
lsblk

4-2,同步更改后的分区信息到系统内核

输入命令:e2fsck -f /dev/loop12p2

# 先使用e2fsck镜像检测,纠错
e2fsck -f /dev/loop12p2

显示如下:

如提示修复 选择Y

同步分区大小,输入以下命令

# 开始同步
resize2fs  /dev/loop12p2

5,卸载

5-1,卸载系统中的分区

partx -d /dev/loop12

5-2,卸载 loop 设备

losetup -d /dev/loop12

完成img文件的扩容。

6,利用Xftp拷贝到本机

三、ESXI8.0 安装OpenWrt

使用软件 (ESXI8用)StarWind V2V Image Converter V9.0.1268

1、ESXI新建OpenWrt

2、通过StarWind V2V上传

至此,返回ESXI打开虚拟机即可

四、OpenWrt多拨+负载均衡+限速设置

4.1 根据需求先保证上网wan口及lan口设置

原版镜像默认ip 192.168.1.1  用户名root  密码 password

进去后根据自己需求修改wan口及lan口

4.2 更换清华源及安装常用插件

利用xshell登录OpenWrt

vi /etc/opkg/distfeeds.conf

注释掉官方源 新增清华源

中科大

src/gz openwrt_core Index of /openwrt/releases/23.05.0/targets/x86/64/packages/

src/gz openwrt_base Index of /openwrt/releases/23.05.0/packages/x86_64/base/

src/gz openwrt_luci Index of /openwrt/releases/23.05.0/packages/x86_64/luci/

src/gz openwrt_packages Index of /openwrt/releases/23.05.0/packages/x86_64/packages/

src/gz openwrt_routing Index of /openwrt/releases/23.05.0/packages/x86_64/routing/

src/gz openwrt_telephony Index of /openwrt/releases/23.05.0/packages/x86_64/telephony/

清华

src/gz openwrt_core Index of /openwrt/releases/23.05.0/targets/x86/64/packages/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

src/gz openwrt_base Index of /openwrt/releases/23.05.0/packages/x86_64/base/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

src/gz openwrt_luci Index of /openwrt/releases/23.05.0/packages/x86_64/luci/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

src/gz openwrt_packages Index of /openwrt/releases/23.05.0/packages/x86_64/packages/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

src/gz openwrt_routing Index of /openwrt/releases/23.05.0/packages/x86_64/routing/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

src/gz openwrt_telephony Index of /openwrt/releases/23.05.0/packages/x86_64/telephony/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

4.3安装常用插件

 luci-i18n-base-zh-cn   汉化补丁

luci-theme-material     常用主题

luci-i18n-smartdns-zh-cn   smartDNS

adguardhome     广告过滤

luci-i18n-mwan3-zh-cn   多拨

uci-i18n-sqm-zh-cn   端口限速

4.4多拨设置+负载均衡+流控

1、接口按实际需求新增接口,本人安徽合肥可以单线四拨 所以添加了wan1-4 以及移动专线、联通专线

PPOE设置参考

网关跃点 需设置不同

需要注意所有的wan口必须在防火墙设置里面划分到wan区,否则无法上网

负载均衡及策略设置

测速测试其实是已经成功的,因为单线路是没有大于 500M的,因为有其他业务在跑,所以测速没法达到满速叠加

4.5 端口限速

测试是否成功可以将本地IP划到对应规则中

五、smartDNS 及 广告过滤

之前参考的是上图方案,因方案中存在DNSmasq转发总觉得不得味,而且AdguardHome 识别的IP均为127.0.0.1  所以索性就卸载了DNSmasq服务,带来的弊端就是DHCP服务也没了,暂时没找到好的DHCP服务,所以我的DHCP服务放在了一个H3C AP上。(后又发现adguardHome有DHCP服务,暂未测试)

最终就是如下流转

5.1 smartDNS配置

可以直接修改配置文件 一次性替换,免得一个个添加,上游DNS根据自己本地实际情况做部分修改  vi /etc/config/smartdns


config smartdns
    option enabled '1'
    option server_name 'smartdns'
    option port '5053'
    option auto_set_dnsmasq '0'
    option tcp_server '1'
    option ipv6_server '0'
    option bind_device '1'
    option dualstack_ip_selection '0'
    option serve_expired '1'
    option cache_persist '1'
    option resolve_local_hostnames '1'
    option force_https_soa '0'
    option rr_ttl_min '300'
    option seconddns_enabled '1'
    option seconddns_port '6053'
    option seconddns_tcp_server '1'
    option seconddns_server_group 'foreign'
    option seconddns_no_speed_check '1'
    option seconddns_no_rule_addr '1'
    option seconddns_no_rule_nameserver '1'
    option seconddns_no_rule_ipset '1'
    option seconddns_no_rule_soa '1'
    option seconddns_no_dualstack_selection '1'
    option seconddns_no_cache '1'
    option seconddns_force_aaaa_soa '1'
    option prefetch_domain '1'
    option cache_size '1000000000'
    option rr_ttl_max '3600'
    option old_port '5053'
    option old_enabled '1'
    option old_auto_set_dnsmasq '0'

config domain-rule

config server
    option enabled '1'
    option name '安徽电信 DNS    '
    option ip '61.132.163.68'
    option type 'udp'
    option server_group 'china'

config server
    option enabled '1'
    option name '联通DNS'
    option ip '218.104.78.2'
    option type 'udp'
    option server_group 'china'

config server
    option enabled '1'
    option name '安徽移动 DNS'
    option ip '211.138.180.2'
    option type 'udp'
    option server_group 'china'

config server
    option enabled '1'
    option name '阿里云DNS'
    option ip '223.5.5.5'
    option type 'udp'
    option server_group 'china'

config server
    option enabled '1'
    option name '阿里云DNS'
    option ip '223.6.6.6'
    option type 'udp'
    option server_group 'china'

config server
    option enabled '1'
    option name '阿里加密DNS'
    option ip 'aliDNS_ip/DNS-query'
    option type 'https'
    option server_group 'china'

config server
    option enabled '1'
    option name '阿里加密DNS'
    option ip 'DNS.aliDNS.com/DNS-query'
    option type 'https'
    option server_group 'china'

config server
    option enabled '1'
    option name '百度DNS'
    option ip '180.76.76.76'
    option type 'udp'
    option server_group 'china'

config server
    option enabled '1'
    option name '腾讯DNS'
    option ip '119.29.29.29'
    option type 'udp'
    option server_group 'china'

config server
    option enabled '1'
    option name '114公共DNS'
    option ip '114.114.114.114'
    option type 'udp'
    option server_group 'china'

config server
    option enabled '1'
    option name 'Google DNS'
    option ip '8.8.8.8'
    option type 'tls'
    option server_group 'foreign'
    option exclude_default_group '1'
    option addition_arg '-exclude-default-group'

config server
    option enabled '1'
    option name 'Google DNS'
    option ip '8.8.8.8'
    option type 'udp'
    option server_group 'foreign'

config server
    option enabled '1'
    option name 'Google DNS'
    option ip '8.8.8.8'
    option type 'tcp'
    option server_group 'foreign'
    option exclude_default_group '1'
    option addition_arg '-exclude-default-group'

config server
    option enabled '1'
    option name 'CloudFlare'
    option ip '1.1.1.1'
    option type 'tls'
    option server_group 'foreign'
    option exclude_default_group '1'
    option addition_arg '-exclude-default-group'

config server
    option enabled '1'
    option name 'Google加密DNS'
    option ip 'dns.google/dns-query'
    option type 'https'
    option server_group 'foreign'
    option exclude_default_group '1'
    option addition_arg '-exclude-default-group'

config server
    option enabled '1'
    option name 'Google加密DNS'
    option ip 'dns.google'
    option type 'tls'
    option server_group 'foreign'
    option exclude_default_group '1'
    option addition_arg '-exclude-default-group'

config server
    option enabled '1'
    option name 'OpenDNS'
    option ip '208.67.222.222'
    option type 'tls'
    option server_group 'foreign'
    option exclude_default_group '1'
    option addition_arg '-exclude-default-group'

5.2  AdguardHome配置

界面安装了没出来,原因暂时未知,不影响使用。通过IP+3000端口进入

首次进入记得修改默认访问端口 3000 

监听端口 53(需先卸载DNSmasq) 否则提示占用 暂无截图了 

其他默认即可 因为DNS通过smartDNS解析,所以这里缓存留空

黑名单根据自己需求设置

结果展示

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐