2022年12月

title
大概一年前vmess发挥稳定的时候,我总结过一篇完整版的nginx web端搭配vmess的windows服务端配置教程分享
[post cid="925" /]
现如今tls被突破,jarm指纹问题导致今后的拉锯战变得更加波动,所以完整版伪装已失去意义,今天更新一篇只需要一个nginx反代国外大流量网站,搭配xray core,选择vless协议并采用最新xtls-rprx-vision流控,做一个简单的,可以轻松上手,快速更新的配置。文章最后放了个自解压包,包含所有组件,解压到c盘自己改改配置直接就能用。
由于去掉了php解析和mariadb等数据库安装配置流程,所以整体就简单很多了,安装配置nginx,配好你的网站证书,下载配置v2ray,就差不多搞定了

一、组件下载

1.Nginx

访问 http://nginx.org/en/download.html 获取windows版本的nginx
这里直接下载 http://nginx.org/download/nginx-1.23.3.zip zip包
解压到C:/Software/ 目录下,即C:/Software/nginx-1.23.3

2.Xray

访问 https://github.com/XTLS/Xray-core/releases 获取需要版本的Xray
这里直接下载 最新的Xray-core v1.6.6-2,Xray-windows-64.zip
因为需要用到最新的xtls-rprx-vision流控,用以搭配vless-TCP-tls协议组合。
解压到C:/Software/ 目录下,即C:/Software/Xray-windows-64
如果你想要cmd命令行窗口后台运行,可以下载
https://redmine.lighttpd.net/attachments/660/RunHiddenConsole.zip
解压到C:/Software/ 目录下即可,最后目录参考如下:
folder list

二、配置参数

我们依次配置第一步中各个组件

1.配置环境变量

编辑一个 Set_path.txt文档,填入如下内容:

setx /m Path "%PATH%;C:\Software\nginx-1.23.3;C:\Software\Xray-windows-64;C:\Software\;"

分别设置以上各个组件的文件路径,便于指令调用
确认路径无误后,修改后缀为.bat 批处理文件,执行,查看我的电脑 右键 属性 >>>系统高级设置>>>高级菜单>>>环境变量选项>>>系统变量>>>选择Path (路径)检查是否成功;
你也可以windows搜索Path或者 系统环境变量 ,来快速访问。
Environment PATH
如果你以前配置过当前用户的Path变量的话,上述设置中的%PATH%组成将会是系统Path+用户Path组合,如果不需要用户Path,则建议使用cmd指令set >> C:\Environment.txt导出所有Path到指定位置,将其中需要的系统Path部分取出替换上述bat脚本中的%PATH%,最后请注意windows系统一般只支持最大1023字节的Path总长度,如超过长度,自行删减。
需要的组件全部下载完毕,设置好路径之后.cmd输入:

nginx -v
xray version

查看是否设置成功
check version

然后选择一个你喜欢的做站路径,这里演示为

C:\Software\nginx-1.23.3\html

接下来就可以开始配置各个组件的详细参数了。

2.配置域名证书

acme申请或者自己手动申请都行,这里放置在C:\Software\cert
一个.crt证书文件,一个.key私钥
顺手做个解析,将域名解析到vps ip上。

3.配置nginx

找到nginx目录下的 nginx.conf
写入以下配置:

events {
    worker_connections 768;
}

http {

  server {
    listen 80 default_server;
    listen [::]:80 default_server;

  location / {
    proxy_pass https://www.bing.com;
    proxy_ssl_server_name on;
    proxy_redirect off;
    sub_filter_once off;
    sub_filter "www.bing.com" $server_name;
    proxy_set_header Host "www.bing.com";
    proxy_set_header Referer $http_referer;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header User-Agent $http_user_agent;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto https;
    proxy_set_header Accept-Encoding "";
    proxy_set_header Accept-Language "zh-CN";
    }
  }
}

用来反代bing.com,配置好以后直接访问你的域名就是bing.com的内容,可以正常搜索。

4.配置Xray

我们采用vless前置监听443端口,将vless协议的信息进行处理实现扶墙,不符合标准的信息回落到12345端口让trojan来分析,trojan接手本身的加密信息,将不符合标准的信息再次回落到80端口,让刚才监听80端口的nginx来处理这些https信息:

[collapse status="false" title="具体配置内详:"]

{
    "routing": {
        "domainStrategy": "IPIfNonMatch",
        "rules": [
            {
                "type": "field",
                "ip": [
                    "geoip:cn",
                    "geoip:private"
                ],
                "outboundTag": "block"
           }
        ]
    },
    "inbounds": [
        {
            "port": 443,
            "protocol": "vless",
            "settings": {
                "clients": [
                    {
                        "id": "你的UUID",
                        "flow": "xtls-rprx-vision"
                    }
                ],
                "decryption": "none",
                "fallbacks": [
                    {
                        "dest": 12345,
                        "xver": 1
                    } 
                ]
            },
            "streamSettings": {
                "network": "tcp",
                "security": "tls",
                "tlsSettings": {
                    "rejectUnknownSni": true,
                    "alpn": [
                        "http/1.1"
                    ],
                    "certificates": [
                        {
                            "certificateFile": "C:\\Software\\Xray-windows-64\\你的证书.crt",
                            "keyFile": "C:\\Software\\Xray-windows-64\\你的密钥.key"
                        }
                    ]
                }
            },
            "sniffing": {
                "enabled": true,
                "destOverride": [
                    "http",
                    "tls"
                ]
            }
        },
        {
            "port": 12345,
            "listen": "127.0.0.1",
            "protocol": "trojan",
            "settings": {
                "clients": [
                    {
                        "password": "你的trojan密码"
                    }
                ],
                "fallbacks": [
                    {
                        "dest": 80
                    }
                ]
            },
            "streamSettings": {
                "network": "tcp",
                "security": "none",
                "tcpSettings": {
                    "acceptProxyProtocol": true
                }
            }
        }
    ],
    "outbounds": [
        {
            "protocol": "freedom",
            "tag": "direct"
        },
        {
            "protocol": "blackhole",
            "tag": "block"
        }
    ]
}

[/collapse]

5.配置windows防火墙

我们需要对windows防火墙开放刚才配置的80和443端口
将以下脚本存入txt文档并修改后缀为.bat,双击运行即可:

rem Open TCP Port 80&443 inbound
netsh advfirewall firewall add rule name="Http TCP Port 80" dir=in action=allow protocol=TCP localport=80
netsh advfirewall firewall add rule name="Https TCP Port 443" dir=in action=allow protocol=TCP localport=443

如果需要修改别的端口,自己另起一行加上就可以的
删除对应规则可以自己手动去防火墙规则删除,也可以如下指令删除:

netsh advfirewall firewall delete rule name="Https TCP Port 80" dir=in

6.配置启停脚本

我们配置两个bat脚本用来管理xray的启停,方便操作,以及后面的开机自启管理。
将以下指令存入txt文档并修改后缀为.bat即可,双击就是运行xray了:

@echo off
echo Stopping nginx...
taskkill /F /IM nginx.exe > nul
echo Stopping xray...
taskkill /F /IM wxray.exe > nul

set nginx_home=C:\Software\nginx-1.23.3\
set xray_home=C:\Software\Xray-windows-64\

:start-nginx
echo Starting NGINX...
RunHiddenConsole %nginx_home%/nginx.exe -p %nginx_home%
:start-xray
Start %xray_home%\wxray.exe run

而停止xray和nginx运行的脚本参考如下:

@echo off
echo Stopping nginx...
taskkill /F /IM nginx.exe > nul
echo Stopping xray...
taskkill /F /IM wxray.exe > nul
exit

启动后,客户端配置加密encryption none , flow流控xtls-rprx-vision,传输协议network选择tcp,伪装类型type none,伪装域名和路径不要填,传输层安全 tls选择tls,sni选择你的域名,utls任选一个,跳过证书选择false,不跳过。
client settings
基本上这样就够用了,如果你需要开机自启动则继续看

7.配置开机自启计划任务

就是简单地将start脚本加入任务计划程序就可以了,这里放个示例参考,保存为xml文件,任务计划导入即可。
[collapse status="false" title="我的任务计划配置参考"]

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.4" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Date>2022-12-22T17:20:39.3416042</Date>
    <Author>WINDOWS\Administrator</Author>
  </RegistrationInfo>
  <Triggers>
    <BootTrigger>
      <StartBoundary>2022-12-22T09:19:31.8870853Z</StartBoundary>
      <Enabled>true</Enabled>
      <Delay>PT1M</Delay>
    </BootTrigger>
  </Triggers>
  <Principals>
    <Principal id="Author">
      <UserId>S-1-5-18</UserId>
      <RunLevel>HighestAvailable</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
    <AllowHardTerminate>false</AllowHardTerminate>
    <StartWhenAvailable>true</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
    <IdleSettings>
      <StopOnIdleEnd>true</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>false</Hidden>
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
    <DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
    <UseUnifiedSchedulingEngine>false</UseUnifiedSchedulingEngine>
    <WakeToRun>false</WakeToRun>
    <ExecutionTimeLimit>PT0S</ExecutionTimeLimit>
    <Priority>7</Priority>
    <RestartOnFailure>
      <Interval>PT1M</Interval>
      <Count>30</Count>
    </RestartOnFailure>
  </Settings>
  <Actions Context="Author">
    <Exec>
      <Command>C:\Software\start xray.bat</Command>
      <WorkingDirectory>C:\Software\</WorkingDirectory>
    </Exec>
  </Actions>
</Task>
[/collapse]

最后是工具包,可以参看里面的说明使用:
https://drive.google.com/file/d/1ETwhF0ypDyiAcW-UaScr0JO1KkakLSqL/view?usp=sharing

title.jpg
相信玩路由器的都了解openwrt这个开源项目,大家熟知的SSRplus+以及passwall等工具都非常全面强大,更不用说各种去广告和流控功能了。
最近玩VMware 虚拟机想集合hystria,naive proxy以及最新的xtls-rprx-vision流控,结果翻了一圈,好像暂时没大佬做最新的vmdk版本,那就只能自己动手编译了。

一、编译流程简介

我们可以通过windows虚拟机安装ubuntu 22.04,然后有两种方式去编译,一种拉取openwrt git对应tag版本的sdk库,直接update feeds列表进行install和build,另一种方式就是自行下载安装需要的编译环境和组件,然后update。
第一种sdk编译方法参考前辈的文章分享:
openwrt官方原版编译passwall插件
而我们这次自行安装所需环境和依赖,然后更新feeds列表,接下来将自己想要安装的组件项目加入feeds,update后就可以make menuconfig对最终镜像进行配置和功能勾选,最后make进行编译,过程思路还是很简单的,一些小坑比较多,我们一一捋顺。

二、安装ubuntu并配置vmware虚拟机网络环境

首先我们下载ubuntu对应镜像,在VMware中安装准备自行编译openwrt:
国内镜像源有很多,这里随便列两个:
https://mirrors.sdu.edu.cn/ubuntu-releases/
http://mirrors.163.com/ubuntu-releases/
Vmware 创建新的虚拟机选择ubuntu 64位直接安装就可以,cd/dvd选择开机后自动连接,选择刚才下载的镜像就可以了,安装配置时候将/boot分区设置500m以上,/home分区最好设置30gb以上。
当然你也可以用别人安装制作好的vmdk盘直接导入:
https://www.linuxvmimages.com/images/ubuntu-2004/

System Details & Login Information
NOTES    
SYSTEM DETAILS    LOGIN DETAILS
vCPU: 2    Username: ubuntu
RAM: 4 GB    Password : ubuntu
DISK: 51 2GB    (to become root, use sudo su -)
Network: NAT

注意网站说明的登陆信息
建议使用nat模式连接,然后你的v2rayn设置勾选允许局域网连接访问
12.16.v2rayN_参数设置161.png
使用sstap等全局代理工具,配置一个新的socks5 代理,地址为127.0.0.1:10808,
12.16.SSTap_SSTap_Beta_1.0.9.7_-_享受游戏162.png
这里端口是对应默认v2rayn监听端口10808,如果你v2rayn更改过,那么这个socks5代理也需要同步修改端口,sstap建议选择1.0.9.8以前版本,才有全局代理模式,当然你也可以使用仅代理国外ip模式也可以实现ubuntu访问github更新。
启动sstap,然后你的ubuntu虚拟机就可以通过nat局域网访问本机,再通过sstap的socks5全局代理经由v2rayn访问外网更新和访问github了.
你也可以给ubuntu设置本地系统代理端口也可以的。

三、正式编译openwrt

目前openwrt比较热门的翻墙插件就是ShadowsocksRplus+以及passwall,当然还有其他的去广告插件之类的,那就需要你自己关注对应github大神的进度了。
1.编译插件前需要安装各种编译器环境和依赖组件,每次更新插件前都要关注对应的日志和公告,进行依赖和环境安装的补齐;
2.然后是每个插件的组件包,需要将github项目源加入feeds配置文件;
3.你还需要输入lspic查询当前虚拟机的ubuntu的网卡型号,然后在luci插件编译的目录里添加对应网卡驱动,而不仅仅是VMware默认的e1000虚拟网卡型号
准备完毕,接下来我们具体操作吧!

1.安装编译环境和依赖

我们需要用非root用户进行编译操作,打开terminal:
12.16.ubuntu-terminal.jpg
官方openwrt编译需要的环境和依赖:
https://openwrt.org/docs/guide-developer/toolchain/install-buildsystem
由于新的22.03和21.02版本openwrt已经淘汰了python2.7.就不需要安装了
Ubuntu 22.04以上版本内置了python3,所以也不用编译了
如果依赖包报错,则需要根据编译错误日志去找对应的库了
因此根据openwrt官方建议,我们对ubuntu22.04系统执行以下操作:

sudo apt update
sudo apt install build-essential  clang flex g++ gawk gcc-multilib gettext \
git libncurses5-dev libssl-dev python3-distutils qemu-utils rsync unzip zlib1g-dev \
file wget

[collapse status="false" title="关于各种组件依赖的解释"]
build-essential是个编译组件包,包括gcc,g++,和make。
binutils binutils-common binutils-x86-64-linux-gnu dpkg-dev fakeroot g++ g++-9 gcc gcc-9 libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan5 libbinutils libc-dev-bin libc6-dev libcrypt-dev libctf-nobfd0 libctf0 libfakeroot libgcc-9-dev libitm1 liblsan0 libquadmath0 libstdc++-9-dev libtsan0 libubsan1 linux-libc-dev make manpages-dev

Clang 是c++ 编译器
binfmt-support clang-10 lib32gcc-s1 lib32stdc++6 libc6-i386 libclang-common-10-dev libclang-cpp10 libclang1-10 libffi-dev libllvm10 libncurses-dev libobjc-9-dev libobjc4 libomp-10-dev libomp5-10 libpfm4 libtinfo-dev libz3-4 libz3-dev llvm-10 llvm-10-dev llvm-10-runtime llvm-10-tools python3-pygments

Flex 是语法分析工具
g++在build-essential 内已经安装好了,这里可以不再安装。
gcc-multilib是为了附带安装以下工具包:
gcc-9-multilib lib32asan5 lib32atomic1 lib32gcc-9-dev lib32gomp1 lib32itm1 lib32quadmath0 lib32ubsan1 libc6-dev-i386 libc6-dev-x32 libc6-x32 libx32asan5 libx32atomic1 libx32gcc-9-dev libx32gcc-s1 libx32gomp1 libx32itm1 libx32quadmath0 libx32stdc++6 libx32ubsan1

gawk是awk文本编辑器的一种,gettext是一种数据转换工具,git工具方便拉取github的项目文件
Libncureses5-dev libssl-dev 开发包按照官方要求安吧
Python3-distutils在编译python3模块需要用到
qemu-utils创建vmdk格式文件需要用到
Zlib1g 是zlib新库,编译时需要用到
而rsync unzip file wget这些常用工具在系统更新中已经安装完毕,可以不用再单独安装
所以如果你也是ubuntu22.04版本,其实执行以下安装就够了:
sudo apt install -y build-essential clang gawk gcc-multilib flex git gettext libncurses5-dev libssl-dev python3-distutils qemu-utils zlib1g-dev
[/collapse]

准备就绪,我们选择合适的openwrt版本进行编译:

2.官方编译流程简介

根据官方教程:
https://openwrt.org/docs/guide-developer/toolchain/use-buildsystem

标准编译操作流程如下:

下载并更新git源
git clone https://git.openwrt.org/openwrt/openwrt.git
cd openwrt git pull
选择指定的发布版本
git branch -a git tag
git checkout v21.02.3
更新feeds源
./scripts/feeds update -a
./scripts/feeds install -a
配置固件镜像和核心
make menuconfig
make -j $(nproc) kernel_menuconfig
编译固件文件
make -j $(nproc) defconfig download clean world

我们按着流程实际操作一下:
目前最新是22.03.2:
iptables based firewall3 to the nftables based firewall4
一个最明显的更新就是将iptables更换成nftables,日常使用注意工具的更替。
我们按着提示操作:

3.下载并更新git源

官方演示指令为
git clone https://git.openwrt.org/openwrt/openwrt.git []
这里将编译存放目录设置为/home/ubuntu/openwrt/,而官方源采用的github源/官网源都行的。
12.16.openwrt_This_repository.png
那么指令示例如下:

mkdir -p /home/ubuntu/openwrt
git clone https://github.com/openwrt/openwrt.git  /home/ubuntu/openwrt

12.16.vmware_Ubuntu_20.04.4_VM_git-clone.png

如果需要检查更新,只需要

cd /home/ubuntu/openwrt
git pull

拉取项目来获得更新
如果你的网络不太好,请多试试
拉取官方项目代码库到本地完毕,可以执行feeds更新:

./scripts/feeds update -a

shfit+PageUp/Down来查看翻页,是否有error

12.16.vmware_Ubuntu_20.04.4_update-feeds.png
然后我们可以选择添加自己想要的项目插件库到feeds列表里,获得自定义的插件功能。

4.更新添加feeds

这里演示的是添加ssrplus+和passwall
执行指令前记得先cd到项目目录下。

cd /home/ubuntu/openwrt

毕竟以后更新编译经常从这一步开始,所以多看看自己所在位置。
这里选择两个插件项目添加到feeds
一个是fw876大佬的helloworld也就是ssrplus+

  • 添加feeds:

    sed -i "/helloworld/d" "feeds.conf.default"
    echo "src-git helloworld https://github.com/fw876/helloworld.git" >> "feeds.conf.default"

  • 更新helloworld项目:

    ./scripts/feeds update helloworld
    ./scripts/feeds install -a -f -p helloworld

  • 移除指令:

    sed -i "/helloworld/d""feeds.conf.default"./scripts/feeds clean
    ./scripts/feeds update -a
    ./scripts/feeds install -a

另一个是xiaorouji大佬的openwrt-passwall项目,包含了很多翻墙插件包,我们也加入feeds:

echo "src-git passwall_packages https://github.com/xiaorouji/openwrt-passwall.git;packages" >> feeds.conf.default
echo "src-git passwall_luci https://github.com/xiaorouji/openwrt-passwall.git;luci" >> feeds.conf.default

以上命名比如helloworld passwall_packages passwall_luci都是对应软件包的自定义命名,会在你的项目目录下创建对应的文件夹,并且可以用此自定义名字单独更新对应的软件包。
你可以使用cat feeds.conf.default指令查看是否增添成功:
12.16.cat-feeds-conf-default.png

5.更新feeds并安装

接下来你可以使用./scripts/feeds update xxx指令指定更新安装对应软件包或者 -a全部更新:

./scripts/feeds  update  -a

然后安装:

./scripts/feeds install -a

为了以防万一,你可以fork到自己账号以防删库。
最后将此配置保存为默认配置:

make defconfig

12.16.make-fefconfig.png

6.配置编译选项

各种组件包都下载安装完毕,接下来我们就可以开始配置需要编译的项目了:

make menuconfig

make-menuconfig.png
这是一个比较复杂的菜单页面,我们需要将要用的功能空格键或者y键勾选星号*来实现编译。同时有很多项目需要配置:
我们一项项来:
Target System
首先上下光标箭头移动选项,回车键进入选项编辑
第一个Target System目标系统,这里选择vmware下的ubuntu就用x86,你要用到自己的路由器就查询自己的路由器品牌和cpu架构
Target-System-x86
空格选好回车,然后第二项Subtarget副目标就是x86_64位系统了:
Subtarget-System-x86_64
第三项 Target Images 目标镜像我们这次选择Vmware image files VMDK
下面(16)项核心分区大小设置256M吧,Root 文件系统分区则设置为512M。
Kernel-partition-size-256m
Root-filesystem-partition-size-512m
最后选项参考:
Target-Images-config
光标右移到Exit回车,我们回到首页继续设置

选择Kernel Modules --> Network Devices: 配置虚拟网卡,新开一个teminal窗口,输入lspic指令查看你的虚拟网卡型号,如果列表有你的网卡选项,也勾选上,以防不兼容。
默认的e1000适应大部分的intel网卡。
Ethernet-controller

Luci配置
1.collections
Luci界面是最关键的,这里有我们日常需要的各种软件,你可以按需勾选:
Luci-collections
Collections 内选择第一项默认的Luci界面即可:
Luci
2.Luci-->Modules模块设置
Exit回到Luci-->Modules页面,选择Translations项,勾选简体中文:
Luci-translations
3.Luci-->Applications应用设置
返回Luci页面,选择Applications项,勾选你要安装的Luci软件包:
Luci-Applicaitons
这里有大佬归纳的大部分软件对照翻译:
[collapse status="false" title="常用插件列表中英文对照表"]

插件中文名Luci App
网络向导luci-app-quickstart
实时监控luci-app-netdata
释放内存luci-app-ramfree
WireGuard 状态luci-app-wireguard
Web管理luci-app-webadmin
TTYD 终端luci-app-ttyd
磁盘管理luci-app-diskman
高级设置luci-app-advanced
定时重启luci-app-autoreboot
Argon 主题设置luci-app-argon-config
文件传输luci-app-filetransfer
关机luci-app-poweroff
应用商店luci-app-store
阿里云盘 WebDAVluci-app-aliyundrive-webdav
Mentohust 锐捷拨号客户端luci-app-mentohust
Minieap 锐捷拨号客户端luci-app-minieap
甜糖星愿自动采集luci-app-ttnode
Hello Worldluci-app-vssr
Clash(frainzy1477)luci-app-clash
PassWallluci-app-passwall
Bypassluci-app-bypass
V2ray 服务器luci-app-v2ray-server
广告屏蔽大师 Plus+luci-app-adbyby-plus
iKoolProxy 滤广告luci-app-ikoolproxy
DNS 过滤器luci-app-dnsfilter
ShadowSocksR Plus+luci-app-ssr-plus
AdGuard Homeluci-app-adguardhome
京东签到服务luci-app-jd-dailybonus
易有云文件管理器luci-app-linkease
DDNS.to内网穿透luci-app-ddnsto
微信推送luci-app-serverchan
全能推送luci-app-pushbot
上网时间控制luci-app-accesscontrol
解锁网易云灰色歌曲luci-app-unblockmusic
OpenClashluci-app-openclash
阿里DDNSluci-app-aliddns
动态 DNS(支持阿里腾讯)luci-app-ddns
QoS Nftables 版luci-app-nft-qos
SmartDNSluci-app-smartdns
LXC Containersluci-app-lxc
天翼家庭云/天翼云盘提速luci-app-familycloud
网络唤醒luci-app-wol
WatchCatluci-app-watchcat
UU游戏加速器luci-app-uugamebooster
VPN 绕过luci-app-vpnbypass
Frpsluci-app-frps
Frp 内网穿透luci-app-frpc
UPnPluci-app-upnp
Nps 内网穿透luci-app-nps
迅雷快鸟luci-app-xlnetacc
OpenConnect VPNluci-app-ocserv
OpenVPN(客户端)luci-app-openvpn
uHTTPdluci-app-uhttpd
KMS 服务器luci-app-vlmcsd
RP PPPoE Serverluci-app-rp-pppoe-server
IPTV 帮手luci-app-iptvhelper
组播代理luci-app-omcproxy
udpxyluci-app-udpxy
MWAN3 分流助手luci-app-mwan3helper
AirPlay 2 音频接收器luci-app-airplay2
Docker CE 容器luci-app-docker
Docker(Dockerman)luci-app-dockerman
可道云luci-app-kodexplorer
NFS 管理luci-app-nfs
微力同步luci-app-verysync
USB 打印服务器luci-app-usb-printer
打印服务器(模块)luci-app-p910nd
硬盘休眠luci-app-hd-idle
网络共享(SMB)luci-app-samba
Aria2 配置luci-app-aria2
挂载 SMB 网络共享luci-app-cifs-mount
Rcloneluci-app-rclone
miniDLNAluci-app-minidlna
Transmissionluci-app-transmission
FTP 服务器luci-app-vsftpd
PCHiFi 数字转盘遥控luci-app-music-remote-center
qBittorrentluci-app-qbittorrent
aMuleluci-app-amule
BaiduPCS Webluci-app-baidupcs-web
N2N v2 VPNluci-app-n2n_v2
SoftEther VPN 服务器luci-app-softethervpn
IPSec VPN 服务器luci-app-ipsec-server
OpenVPN 服务器luci-app-openvpn-server
PPTP VPN 服务器luci-app-pptp-server
ZeroTierluci-app-zerotier
IP/MAC绑定luci-app-arpbind
简单MESHluci-app-easymesh
流量统计luci-app-bandwidthd
网速测试luci-app-netspeedtest
SQM QoSluci-app-sqm
IPv6 端口转发luci-app-socatg
网速控制luci-app-eqos
应用过滤luci-app-oaf
服务质量(QoS)luci-app-qos
多线多拨luci-app-syncdial
负载均衡luci-app-mwan3
Turbo ACC 网络加速luci-app-turboacc
网络带宽监视器luci-app-nlbwmon
实时流量监测luci-app-wrtbwmon
IPV6ipv6helper

[/collapse]
更多插件说明:
https://www.right.com.cn/forum/thread-344825-1-1.html
这里附上更新到2022.11月的插件翻译说明表格:
OpenWRT编译LUCI插件说明2022.11.xlsx.zip
4.里面的Luci-app-passwall务必选上,
Luci-passwall
这是我们这次要安装的翻墙工具包,下面的Configuration-->配置选择进去勾选你需要的功能:
Luci-app-passwall-configration
5.接下来回到Luci-->Applications 列表,选择 Luci-app-ssr-plus,也就是我们需要的SSRplus+上网大师:
Luci-app-ssr-plus
各种工具的核心选择,配置情况供参考
6.Luci-->Themes 主题选择
外观党可以全部勾选

7.Luci-->Protocols支持协议
这里随意吧,一些国内没啥用的普通隧道协议
所有配置项设置完毕,接下来就是编译阶段了

7.下载所有组件,开始编译

make download -j8 V=s

-j8是指使用8个线程下载,在网络正常的情况下,基本5分钟下载完毕
Download
注意是否有下载失败的错误日志,然后自己去当前目录dl文件夹下排序看看最小文件是不是小于4kb,如果有,应该是下载不完整的文件,删了重下一次。

  • 单线程编译,第一次使用单线程编译方便查看错误

    make -j1 V=s

  • 以最大线程编译

    make V=s -j$(nproc)

大概3-4小时单线程编译
我虚拟机创建的8核心16线程,所以这里用的-j16跑满了i7 12700k,大概20来分钟完毕
Final-build
温馨提示:使用V=99用来查看更详细的日志情况,灵活使用筛查工具可以更清晰定位错误:

make -j16 V=s 2>&1 | tee build.log | grep -i -E "^make.*(error|[12345]...Entering dir)" 

编译完成后输出路径:bin/targets/x86/64
openwrt-x86_64-vmdk

拿到我们需要的文件后,就可以用vmware安装配置使用了,参考前篇文章VMware路由配置:
[post cid="1090" /]

新版本的openwrt使用device来替代ifname,由于之前路由使用了192.168.0.88这个ip,我们现在第二个路由就修改到192.168.0.89,新建一个vmnet03,dhcp分配局域网ip段为192.168.12.xx ,这样就可以一起使用,自己管理自己对应的vmnet下接入的虚拟机了:
openwrt-vmware-network-config
希望你也能尽快享受到使用自己编译的openwrt:
12.17.vmware_openwrt.png

四、 一些提示和错误分析

1.如果想二次编译,可以参考以下操作:

不修改配置二次编译:

$ cd /home/ubuntu/openwrt
$ git pull
$ ./scripts/feeds update -a && ./scripts/feeds install -a
$ make defconfig
$ make -j8 download
$ make -j$(($(nproc) + 1)) V=s

如果需要重新配置编译:

$ cd /home/ubuntu/openwrt
$ rm -rf ./tmp && rm -rf .config
$ git pull
$ ./scripts/feeds update -a && ./scripts/feeds install -a
$ make menuconfig
$ make -j8 download
$ make -j$(($(nproc) + 1)) V=s

2.一些常见错误的排查解决

编译过程出现install错误,输入下面指令,再次编译

PATH=$(echo "$PATH" | sed -e 's/:\/mnt.*//g')

如果再次出错,可以删除dl文件夹,再download一次所有的文件

make dirclean

如果提示

But that file is already provided by package * dnsmasq * 

则重新make menuconfig取消选中 Base System-->dnsmasq
因为组件中的dnsmasq-full已经包含了dnsmasq所有功能
报错提示:
/home/ubuntu/openwrt/staging_dir/host/bin/grub-bios-setup: warning: Your BIOS Boot Partition is under 1 MiB, please increase its size..
则增加boot分区大小,修改/target/linux/x86/image/Makefile文件,找到如图位置,将256改为1024应该就行了:
Makefile-Rootfs-config-changesize

建议先尝试只编译原版openwrt,make menuconfig别动额外的内容,一步步来。

另外有大佬们更新的固件和ipk软件包,方便偷懒的朋友:
https://op.dllkids.xyz/
https://op.supes.top/
https://share.mianao.info/Router/

本地电脑不太好的,可以使用github Actions功能,进行云端编译:
https://github.com/P3TERX/Actions-OpenWrt

3.一些未验证的进阶操作

添加自定义插件

原理是把插件源码放到 package 目录下,编译时会自动遍历

示例:
安装最新 argon 主题

openwrt 源码
cd package
git clone https://github.com/jerrykuku/luci-theme-argon.git
Lean 源码
cd /package/feeds/luci
rm -rf luci-theme-argon
git clone -b 18.06 https://github.com/jerrykuku/luci-theme-argon.git

修改 Luci 后台地址
修改文件/package/basefiles/files/bin/config_generate

diff
                static)
                        local ipad
                        case "$1" in
+                        lan) ipad=${ipaddr:-"192.168.1.1"} ;;
                                *) ipad=${ipaddr:-"192.168.$((addr_offset++)).1"} ;;
                        esac

                        netm=${netmask:-"255.255.255.0"}

                        uci -q batch <<-EOF
                                set network.$1.proto='static'
                                set network.$1.ipaddr='$ipad'
                                set network.$1.netmask='$netm'
                        EOF
                        [ -e /proc/sys/net/ipv6 ] && uci set network.$1.ip6assign='60'
                ;;


修改主机名
修改文件/package/basefiles/files/bin/config_generate

diff
        uci -q batch <<-EOF
                delete system.@system[0]
                add system system
+                set system.@system[-1].hostname='OpenWrt'
                set system.@system[-1].timezone='UTC'
                set system.@system[-1].ttylogin='0'
                set system.@system[-1].log_size='64'
                set system.@system[-1].urandom_seed='0'


修改 SSH 登陆欢迎信息
修改文件/package/base-files/files/etc/banner
可以在此处定制自己的样式

修改 dts
默认的一般够用,实在不够再更改
/target/linux/ramips/dts/目录下找到自己机型的 dts,修改以下内容

dts
                        partition@50000 {
                                compatible = "denx,uimage";
                                label = "firmware";
                                reg = <0x50000 0x1fb0000>;
                        };

其中1f60000=32M;1fb0000=16M;7b0000=8M

附:
在线进制转换工具

感谢各位前辈的分享:

https://www.right.com.cn/forum/thread-8237696-1-1.html
https://kris.run/openwrt-%E7%BC%96%E8%AF%91%E6%81%A9%E5%B1%B1l%E5%A4%A7%E7%9A%84%E6%BA%90%E7%A0%81%E8%B8%A9%E8%BF%87%E7%9A%84%E5%9D%91/

title.jpg
网上有很多使用vmware配置openwrt虚拟路由让物理机上网的配置,就不细谈,这篇文章是针对VMware workstation pro创建的虚拟机,为它们配置相应的虚拟openwrt路由,达到每台虚拟机精准配备独立ip和上网策略的效果
主要思路就是让openwrt配置wlan口对接我们的物理路由线路,然后通过虚拟的lan口,对VMware内的虚拟机进行ip分配和上网管理,我们可以通过VMware克隆功能运行多台虚拟openwrt对每一台虚拟机进行网络配置,从而无需在每台虚拟机安装v2ray或者sstap等额外代理工具,那么我们开始吧!

一、VMware workstation pro的安装

访问vmware官网
https://customerconnect.vmware.com/cn/account-registration
注册一个 vmware customer connect 账号
我随便选择的香港地区,区号填000, google map随便找个地址即可。
注册完毕就可以去下载页面选择需要的版本了

通用批量永久激活许可
17:JU090-6039P-08409-8J0QH-2YR7F
22H2:ZA5RU-6FYD5-48EPY-3XXEE-PAUGD
16:ZF3R0-FHED2-M80TY-8QYGC-NPKYF
15:FC7D0-D1YDL-M8DXZ-CYPZE-P2AY6
12:ZC3TK-63GE6-481JY-WWW5T-Z7ATA
10:1Z0G9-67285-FZG78-ZL3Q2-234JG

vmware workstation 17 pro密匙最新
4A4RR-813DK-M81A9-4U35H-06KND
NZ4RR-FTK5H-H81C1-Q30QH-1V2LA
JU090-6039P-08409-8J0QH-2YR7F
4Y09U-AJK97-089Z0-A3054-83KLA
4C21U-2KK9Q-M8130-4V2QH-CF810
MC60H-DWHD5-H80U9-6V85M-8280D

安装过程很简单,一步步操作即可,这里掠过

二、Openwrt on vmware

https://downloads.openwrt.org/releases/22.03.2/targets/x86/generic/
官方下载合适的openwrt版本
你也可以去下载各路大神魔改的版本,恩山论坛之类的都可以。
https://github.com/coolsnowwolf/lede/releases
官方的镜像没有vmdk类型的,我们需要下载对应转换工具
https://www.pcsoft.com.cn/soft/191910.html
使用 StarWind V2V Image Converter(虚拟机镜像格式转换工具)将官方镜像格式转换为vmware支持的vmdk
待转入文件位置选择local file,转出格式选择growable vmdk,local file保存位置选择自己想要的,很简单。
准备就绪,开始配置VMware:

我们打开VMware 创建一个虚拟网卡VMnet02:
12.08.vmnetcfg_虚拟网络编辑器.png
分配子网ip 记得c段和你当前局域网c段要不同,我这里设置的是11段

vmware新建虚拟机,高级创建,linux 5以上版本,暂不安装操作系统,选择已有磁盘,选中刚才的vmdk文件,最后编辑硬件配置,去掉usb cd驱动,打印机等不需要的硬件,内存少的,不开启多少功能的话,将默认768m改成128m也是足够的。
网络适配器创建2个:
第一个使用自定义网络选择刚才创建的VMnet02(仅主机模式)配置LAN口(局域网)用来管理vmware内的虚拟机系统,对应openwrt内eth0网卡。
12.08.vmware_虚拟机设置lan口.png
第二个使用桥接模式,用以模拟openwrt的WLAN口(广域网),对应openwrt内eth1网卡
12.08.vmware_虚拟机设置wlan口.png
没错,第一块虚拟网卡openwrt默认接入的是lan口配置。

设置完毕后可以开机了
安装过程如果卡在 IPv6 br-lan: link becomes ready
按下回车即可
输入passwd设置一个密码吧!Ctrl+alt将鼠标焦点定位回你的电脑。
接下来配置桥接模式定位的网卡:

本地电脑cmd输入ipconfig得到本地网络配置信息
以太网适配器 以太网:
连接特定的 DNS 后缀 . . . . . . . : DHCP HOST
IPv4 地址 . . . . . . . . . . . . : 192.168.0.9
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . : 192.168.0.1
然后ctrl+G 返回虚拟机,输入
vi /etc/config/network

12.08.vmware_Openwrt_original.png

修改如下
12.08.vmware_Openwrt_new.png
输入i进入编辑模式,方向键移到wan口配置
ipaddr 修改成本地电脑同c段,输入一个偏后的d段ip防止和局域网当前设备冲突
这里我的本地ip是192.168.0.9 ,所以openwrt应该设置为192.168.0.x ,x为任意0-255数字,这里防止冲突设置的88
那么对应网关gateway 新增配置 ,为192.168.0.1 对应本地主机网关,虚拟为一台独立局域网设备
dns新增项,我选择的阿里云公共dns 223.5.5.5 和223.6.6.6
lan口c段随意一个2~255内的即可,和当前的不在一个段就行,我设置的是11.
最后输入英文半角字符的:wq保存

注意此模式只能应用于vmware创建的虚拟机可以访问该虚拟的openwrt路由管理页面
如果你想自己的物理本机修改openwrt配置,则修改lan配置ipaddr为你当前c段端口,保持wlan口默认配置不动,参考如下:
for local pc.png
输入reboot重启openwrt虚拟机
选择一台虚拟机,先对设置进行编辑,网卡选择咱们配置的VMnet02,让这个虚拟机接入openwrt的lan口下的局域网:
12.08.vmware_虚拟机设置.png
开机,对网卡配置进行手动修改:
12.08.vmware_WIN10.png
这里演示的即192.168.11.x 任意一个2-255 的ip即可,网关192.168.11.1. dns用的阿里云公共dns
浏览器输入刚才配置的192.168.0.88 即可访问这个虚拟的openwrt路由管理页面了
12.08.chrome_OpenWrt.png
System -- Software -- Actions : Update lists 然后就可以选择中文界面了

12.08.chrome_OpenWrt_software-zh-cn.png
输入zh-cn筛选需要的中文插件install即可,我选择的是luci-i18n-base-zh.cn。
12.08.chrome_OpenWrt_-_Software_-_LuCI.png
然后去系统system里面language选择中文:
12.08.chrome_OpenWrt_zh-cn.png
选择需要的软件安装即可,将你的配置文件放入txt文件临时扔到你的网站,导入即可:
12.08.vmware_WIN10-ssr+.png
启用节点,虚拟机直接访问就可以全局走节点路线了
12.08.vmware_WIN10-ip.png

最后,如果你对每一台虚拟机都有特定的上网需求,可以将openwrt关机后,进行克隆,选择映射硬盘可以节约空间,完整克隆则是独立的一套硬盘系统。
祝大家玩机愉快~