分类: OpenWRT

  • 软路由主机使用Esxi 8安装OpenWRT做家庭主路由 替代原先的Linksys WRT32X 使用pihole做DNS解析并清洗广告

    软路由主机使用Esxi 8安装OpenWRT做家庭主路由 替代原先的Linksys WRT32X 使用pihole做DNS解析并清洗广告

    ITGeeker技术奇客最近入手了倍控的G31 N5100小主机,安装Esxi 8后,安装了虚拟机OpenWrt作为家里的主路由使用。

    N5100的功耗只有6W,比N5105的10W还要低,之前测试过Esxi安装Linux等虚拟机后,CPU相对都会比较空余,所以低功耗做软路由应该更合适,而且价格也便宜100多元。这款机器自带一个嵌入式风扇,就不用加装外挂的风扇,整洁了不少吧。

    为了阻止广告,加快网速,在Esxi上加了一个Ubuntu server mini并配置了pihole,但是N5100有点拉跨,只好部署到另外一台Esxi主机上了。

    英特尔N5100作为All In One软路由够不够实力 谈谈使用倍控G31灰色风扇款N5100小主机的使用情况

    然后给openwrt装了个openclash,目前配合下来还不错。整体稳定。

    使用openwrt的dhcp下发DNS的方法:

    在dhcp-options添加6,pihole主机IP后,之后接入的设备的DNS就会自动设为pihole主机的IP,已接入设备如果默认的话也会在12小时以内更新为新的DNS

    pihole配置本地广告组织列表

    这里推荐两个列表:

    1. https://cdn.jsdelivr.net/gh/neoFelhz/neohosts@gh-pages/basic/hosts
    2. https://github.com/VeleSila/yhosts/blob/master/hosts

    下载到本地后,进入pihole设置的Adlists菜单,添加本地文件,格式为:

    • file:///opt/ad_block_host/block_ad_yhosts
    • file:///opt/ad_block_host/neohosts_basic

    完成后进入Update Gravity菜单,点击update,看看是否更新成功。

  • 英特尔N5100作为All In One软路由够不够实力 谈谈使用倍控G31灰色风扇款N5100小主机的使用情况

    英特尔N5100作为All In One软路由够不够实力 谈谈使用倍控G31灰色风扇款N5100小主机的使用情况

    讨论使用All In One的小主机来做路由器的视频非常普及,往往各种数据评测。技术奇客ITGeeker.net这里是直观谈谈使用倍控G31灰色风扇款-N5100小主机的实际体验。

    期待(✧∀✧)

    一开始安装了Esxi 8作为操作系统,配了1T三星980 pro m.2硬盘,金士顿48G 3200笔记本内存,本想着可以作为一个All In One的小主机多装些东西练练收。

    然后安装了OpenWRT作为主路由,然后OpenWRT安装openclash做些代理,然后再新建一个Ubuntu server mini装了Pi-hole用来过滤广告和限制小孩的一些域名访问。

    刚开始用着还不错,想想再增加了一个Ubuntu sever mini装了Odoo 15,结果CPU就有点不够了,偶尔会出现死机现象。只好把Odoo给停了。

    这个时候,看Pi-hole的每天查询数queries大概再50-60万次左右,基本上CPU占用80%,内存只有大概30%的使用率。

    过了几个月,Pi-hole的每天查询数queries大概再80-90万次左右的时候,就变得不稳定了,偶尔CPU就会超过110%,出现偶尔死机的情况了。内存倒是始终在16G以下。

    放弃

    因为会宕机,所以给Pi-hole做了各种优化,及时清理缓存等,甚至换上AdGuard也是同样的情况。

    可能DNS查询量大的时候,读写太频繁,加上lograte要转存日志是CPU就会超载。

    这在我用Esxi 8的备份工具ovftool.exe备份ova文件时,验证了读取大量数据时,英特尔的N5100 CPU扛不住了。

    解决方案只能把Pi-hole备份成ova,然后部署到另外一台的Esxi服务器上了,结果再看CPU和内存占有,又有点性能过剩了。

    回头装些不那么占用CPU的应用吧。

    小结

    希望对你在选购All In One小主机时有个参考,不要只看自媒体的视频吹的大雪狂飞。

    1. 英特尔的N5100 CPU相对还是比较弱的
    2. Pi-hole很吃CPU
  • Esxi 8 更换Nvme硬盘后 如何迁移Esxi主机和虚拟机到新硬盘

    Esxi 8 更换Nvme硬盘后 如何迁移Esxi主机和虚拟机到新硬盘

    因为去年底开始SSD和内存大幅降价,ITGeeker技术奇客就想着给自己的小主机升个级,换个三星1G的980硬盘,再加了一根32G的金士顿32G内存。

    1. 关闭虚拟机,用ovftool.exe导出完整的ova备份。

    之前用的250G固态硬盘,装了三个虚拟机,其它两个只要关停后, 在Windows系统用ovftool.exe就可以备份出ova或者ovf文件。

    关于要导成ova还是ovf,ITGeeker技术奇客觉得区别不大吧,ova是单文件,ovf是多文件的形式。

    by itgeeker.net

    由于我用的是Esxi 8 系统,VMware官方下载ovftool的时候有这么一个提示:Note: OVF Tool 4.5 for vSphere 8.0 is here at this location, not in the drop-down menu. 如果你也用的Esxi 8系统,那么直接到下面的地址下载ovftool吧:

    https://developer.vmware.com/web/tool/4.5.0/ovf-tool

    解压缩下载好的文件后,用CMD命令进入目录,然后运行:

    ovftool.exe vi://root:YOUR PASSWORD@ESXI 8 IP OR DOMAIN/istore F:\ITGeekerBackupFolder\ESXi\BKN5100_ovftool_bk\istore-2023-02-01.ova

    注意修改你的密码、主机IP和备份路径

    备份之前要关闭虚拟主机的运行,否则提示无法备份之类的错误提示。

    但是,ITGeeker技术奇客碰到的问题是:Esxi 8主机现在是作为主路由器在使用,如果关闭OpenWRT之后就无法访问Esxi 8 主机了。

    主路由虚拟机OpenWrt不能关闭,所以此路不通。

    2. 使用dd命令,完整克隆esxi 8主机

    这个注意听起来很不错的,只要把主机完整的备份位img文件,然后用rufu工具把img写入到新的硬盘就可以啦

    先用命令找出系统硬盘的参数
    ls -l /dev/disks/
    
    # 然后选择一个后面不跟冒号和数字1,5,6,7等的那个,例如:
    t10.NVMe____LITEON_CA32D8D256________________________AA50085056032300
    再使用dd命令备份
    dd if=/dev/disks/t10.NVMe____LITEON_CA32D8D256________________________AA50085056032300 of=/vmfs/volumes/datastore1/ESXi8_bkn5100_all.img
    
    
    # 如果担心文件太大,可以添加gzip进行压缩
    dd if=/dev/disks/t10.NVMe____LITEON_CA32D8D256________________________AA50085056032300 | gzip > /vmfs/volumes/datastore1/ESXi8_bkn5100_all.img.gz
    

    事实上,250G的SSD,安装Esxi 8之后,留给datastore的空间只有111G

    ITGeeker技术奇客在安装了3个虚拟机后,空间只剩55G左右了,再怎么压缩还是不够大。

    空间不足,放弃!

    使用DiskGenius克隆旧的硬盘到新的三星980硬盘上

    本来ITGeeker技术奇客是想用DiskGenius把硬盘克隆成文件存到电脑,然后再转换到新硬盘,不过DiskGenius的这个功能需要付费才行。

    于是下载了傲梅来备份硬盘,傲梅倒是免费开放这个功能,但是试了几次都失败了,也不知道是啥原因。

    DiskGenius把硬盘克隆到另一个硬盘倒是免费的,只好拆了我的飞龙峡谷NUC,把新的三星980硬盘装上去,然后把原先的Esxi 8的硬盘插入nvme移动硬盘盒(幸亏我还有一个硬盘盒),因为刚好拆了飞龙峡谷NUC的系统盘,只好用微PE U盘启动DiskGenius,克隆旧硬盘到新硬盘当中,速度还可以,整个过程花费11分钟不到一点。

    终于克隆成功了,赶紧转到G31的主机开机,接上显示器,Esxi 8启动一切正常,浏览器登录Esxi 8主机,看到虚拟机都不能正常运行了,原因是找不到虚拟机文件了,Esxi 8自己的系统文件到都是正常。

    第一波:解决错误“尚未在主机 上配置数据存储”的问题

    解决方案:先使用ssh登录到Esxi 8主机(需先开启ssh服务)

    esxcfg-volume -l 
    Scanning for VMFS-6 host activity (4096 bytes/HB, 1024 HBs).
    VMFS UUID/label: 63a1884d-cc084b52-f293-60beb4079214/datastore1
    Can mount: Yes
    Can resignature: Yes
    Extent name: t10.NVMe____Samsung_SSD_980_1TB_____________________D9BBA121AS382500:5	range: 0 - 112895 (MB)
    
    #使用esxcfg-volume -M 命令以相同的签名重新挂载VMFS卷(-M 表示持久性,-m 表示非持久性)
    esxcfg-volume -M 63a1884d-cc084b52-f293-60beb4079214

    使用esxcfg-volume -M重新挂载VMFS的UUID即可解决。✌🏿

    第二波:解决错误“无法扩展 VMFS 数据存储 datastore1 – 无法更新”的问题

    硬盘变大了,自然首先想到的是要把增加的空间用起来,于是乎使用Esxi 8的操作界面尝试展开现有VMFS空间,但是失败了:“无法扩展 VMFS 数据存储 datastore1 – 无法更新”,再怎么刷新或者重新扫描硬盘都无济于事。

    于是一顿搜索,找到了用命令行来解决的方法,同样需要先开启Esxi 8主机的SSH服务,再用Shell登录到主机。

    首先,确认一下VMFS分区的存储设备标识符
    ls -l /dev/disks/
    
    #一般最后一个便是VMFS分区,你也可以再Esxi 8的存储-硬盘设备-分区图中查看并确认是否正确
    t10.NVMe____Samsung_SSD_980_1TB_____________________D9BBA121AS382500:5

    我的是第五个分区,后面有冒号和数字5的便是,Esxi 8和之前的Esxi 6和7的盘符有很大区别,之前一般mpx.开头,类似mpx.vmhba0:C0:T0:L0这样的,Esxi 8的会更长些。

    然后,用分区工具partedUtil查看硬盘各分区的开始和结束扇区
    partedUtil getptbl "/vmfs/devices/disks/t10.NVMe____Samsung_SSD_980_1TB_____________________D9BBA121AS382500"
    gpt
    121601 255 63 1953525168
    1 64 204863 C12A7328F81F11D2BA4B00A0C93EC93B systemPartition 128
    2 208896 8595455 EBD0A0A2B9E5443387C068B6B72699C7 linuxNative 0
    3 8597504 16984063 EBD0A0A2B9E5443387C068B6B72699C7 linuxNative 0
    4 16986112 268435455 4EB2EA3978554790A79EFAE495E21F8D vmfsl 0
    5 268437504 1953525133 AA31E02A400F11DB9590000C2911D1B8 vmfs 0
    
    然后,获取硬盘最后的扇区
    partedUtil getUsableSectors "/vmfs/devices/disks/t10.NVMe____Samsung_SSD_980_1TB_____________________D9BBA121AS382500"
    
    34 1953525134
    
    指定分区的起始扇区和所需的结束扇区,调整VMFS分区大小
    partedUtil resize "/vmfs/devices/disks/Device" 分区数字码 开始扇区 结束扇区
    
    #开始扇区为第5区的开始扇区,结束扇区为硬盘最后扇区减去1的值,这里要运行的命令:
    partedUtil resize "/vmfs/devices/disks/t10.NVMe____Samsung_SSD_980_1TB_____________________D9BBA121AS382500" 5 268437504 1953525133

    如果partedUtil resize命令运行失败:”在内核无法重新读取 /dev/Device 上的分区表(设备或资源繁忙)。“请尝试重新引导 ESXi 主机再试一遍。

    ITGeeker技术奇客运行该命令无错误,但是空间没有实际扩展,在分区图查看是扩展了空间,但在实际存储datastore里面实际没有扩张空间,无法使用新的空间,失败!

    第三波:解决错误命令行partedUtil无法resize的问题

    如果第二波并未实际扩展空间的话,那么需要采用进一步的措施来解决扩容问题了。

    为此,您必须先“注销”数据存储区上的所有虚拟机,然后“卸载”数据存储区。

    放心此操作不会丢失任何数据的
    esxcfg-volume --list
    
    Scanning for VMFS-6 host activity (4096 bytes/HB, 1024 HBs).
    VMFS UUID/label: 63a19a4d-cc084b52-f293-60beb4079214/datastore1
    Can mount: Yes
    Can resignature: Yes
    Extent name: t10.NVMe____Samsung_SSD_980_1TB_____________________D9BBA121AS382500:5	range: 0 - 112895 (MB)
    
    # esxcfg-volume --list确认你的硬盘标识符和UUID,然后重新签名您的UUID:
    
    esxcfg-volume --resignature 63a19a4d-cc084b52-f293-60beb4079214
    
    vmkfstools -V
    
    # 接下来使用vmkfstools --growfs "/vmfs/devices/disks/devicename:partition#" "/vmfs/devices/disks/扩张分区,后面输入两遍相同的待扩张分区盘符。例如:
    
    vmkfstools --growfs "/vmfs/devices/disks/t10.NVMe____Samsung_SSD_980_1TB_____________________D9BBA121AS382500:5" "/vmfs/devices/disks/t10.NVMe____Samsung_SSD_980_1TB_____________________D9BBA121AS382500:5"

    至此,我的Esxi 8主机一切恢复正常。👌

    注:未接显示器引起的另一起血案

    不知你是否看过我之前一遍关于没接显示器无法启动华硕主板的文章:折腾了一周的硬盘Raid计划 主机始终点不亮故障分析 原来是华硕主板的显卡Bug

    这次同样发生在倍控G31 N5100的小主机上了,由于把它作为软路由,所以就放在弱电箱旁边,自然无法接显示器。于是我测试的时候拿到电脑边,接上显示器,每次都正常,只要一放到弱电箱那边不接显示器,始终无法找到Esxi 8主机,OpenWRT虚拟机也无法自动启动,折腾了N次最终才想到可能是没接显示的原因。

    于是找到倍控客服,客服让加工程师的微信,果不然还是那句:“扣电池试试吧”。哎,当工程师还是挺简单的,出问题了,扣主板电池吧,之前碰到无法开机,也是这么一句。

    这回还问了我装了啥系统,回答Esxi 8,你装Esxi 7试试吧,我叻个去

  • OpenWrt如何完整的完全的禁用IPV6

    OpenWrt如何完整的完全的禁用IPV6

    虽说IPV6推广那么多年了,但真正使用的似乎还是很少。当你使用OpenWrt作为路由器系统的时候,有些应用反而会因为ipv6产生一些莫名奇妙的问题。ITGeeker技术奇客经过多方面搜索,并经过多次尝试,找到了完整且完全禁用ipv6的正确方法。

    以下是通过命令行来禁止OpenWrt的ipv6的完整过程:

    1. 首先禁止Lan,Wan和DHCPv6及odhcpd

    uci set 'network.lan.ipv6=0'
    uci set 'network.wan.ipv6=0'
    uci set 'dhcp.lan.dhcpv6=disabled'
    /etc/init.d/odhcpd disable
    uci commit
    

    有些人可能会担心禁用odhcpd会带来问题,实际上据说odhcpd是专门位IPV6服务的。

    by itgeeker.net

    2. 禁用 RA 和 DHCPv6,这样就不会分发 IPv6 IP

    uci -q delete dhcp.lan.dhcpv6
    uci -q delete dhcp.lan.ra
    uci commit dhcp
    /etc/init.d/odhcpd restart
    

    3. 现在可以禁用 LAN 委派

    uci set network.lan.delegate="0"
    uci commit network
    /etc/init.d/network restart
    

    4. 禁用odhcpd

    /etc/init.d/odhcpd disable
    /etc/init.d/odhcpd stop
    

    5. 最后你可以删除 IPv6 ULA 前缀

    uci -q delete network.globals.ula_prefix
    uci commit network
    /etc/init.d/network restart
    

    你现在登录OpenWrt界面就会发现所有IPV6相关的配置和设置都已被删除或禁止(disabled)。

  • 树莓派刷原生OpenWRT 安装V2ray作为旁路由(网关或透明代理)让全屋免配置走代理

    树莓派刷原生OpenWRT 安装V2ray作为旁路由(网关或透明代理)让全屋免配置走代理

    ITGeeker之前有配置过OpenWRT使用SS+ChinaDNS+DNS-Forwarder来做代理:

    虽然obfs混淆不被ss支持了,但使用起来还是没有问题的。不过最近服务器支持V2ray了,所以又用OpenWRT配置了V2ray的透明代理,或者说是网关,ITGeeker喜欢把它叫成旁路由,你喜欢怎么称呼都可以,技术奇客这里安装再旁路由器里,就称旁路由了。

    先来个简化的拓扑图,具体配置图文的确比较繁杂,看的懂下面的完整配置文件的应该可以自己配置。有需要图文说明的请留言将优先更新。

    by itgeeker.net

    V2ray其实相当于打包了好多上面的应用,安装起来比较方便,功能强大了很多,但配置起来却不是更方便,幸亏openwrt版的预先内置配置很有用。

    完整配置文档

    来自/var/etc/v2ray/v2ray.main.json文件,我这里配置了6个自有的outbond服务器,4个v2ray+2个ss。只要替换上你自己的服务器地址、ID、alterId、security或者SS的密码,理论上就可自动实现代理了。

    在V2ray的全局设置中,设置config文件应该可以实现,但还未亲自测试。
    {
    	"log": {
    		"access": "/dev/null",
    		"loglevel": "warning",
    		"error": "/var/log/v2ray-error.log"
    	},
    	"dns": {
    		"hosts": {
    			"example.com": "127.0.0.1"
    		},
    		"servers": [
    			"1.1.1.1",
    			"8.8.8.8",
    			{
    				"address": "114.114.114.114",
    				"port": 53,
    				"domains": [
    					"geosite:cn",
    					"ntp.org"
    				]
    			},
    			{
    				"address": "223.5.5.5",
    				"port": 53,
    				"domains": [
    					"geosite:cn"
    				]
    			},
    			"202.96.209.5"
    		]
    	},
    	"routing": {
    		"domainStrategy": "IPOnDemand",
    		"rules": [
    			{
    				"type": "field",
    				"ip": [
    					"geoip:private",
    					"geoip:cn"
    				],
    				"outboundTag": "direct"
    			},
    			{
    				"type": "field",
    				"domain": [
    					"geosite:cn"
    				],
    				"outboundTag": "direct"
    			},
    			{
    				"type": "field",
    				"protocol": [
    					"bittorrent"
    				],
    				"outboundTag": "direct"
    			},
    			{
    				"type": "field",
    				"domain": [
    					"geosite:category-ads-all"
    				],
    				"outboundTag": "block"
    			},
    			{
    				"type": "field",
    				"port": "53",
    				"network": "udp",
    				"inboundTag": [
    					"transparent"
    				],
    				"outboundTag": "dns_out"
    			},
    			{
    				"type": "field",
    				"ip": [
    					"114.114.114.114",
    					"223.5.5.5"
    				],
    				"outboundTag": "direct"
    			},
    			{
    				"type": "field",
    				"ip": [
    					"1.1.1.1",
    					"8.8.8.8",
    					"208.67.222.222"
    				],
    				"outboundTag": "proxy"
    			},
    			{
    				"type": "field",
    				"port": "123",
    				"network": "udp",
    				"outboundTag": "direct"
    			}
    		],
    		"balancers": [
    			{
    				"tag": "balancer",
    				"selector": [
    					"server1",
    					"server2",
    					"server3",
    					"server4",
    					"proxy"
    				]
    			}
    		]
    	},
    	"inbounds": [
    		{
    			"port": 10800,
    			"protocol": "socks",
    			"settings": {
    				"auth": "noauth",
    				"udp": true,
    				"ip": "0.0.0.0"
    			},
    			"streamSettings": {
    				"sockopt": {
    					
    				}
    			},
    			"tag": "in_proxy",
    			"sniffing": {
    				"enabled": true,
    				"destOverride": [
    					"http",
    					"tls"
    				]
    			}
    		},
    		{
    			"port": 10811,
    			"protocol": "dokodemo-door",
    			"settings": {
    				"followRedirect": true,
    				"network": "tcp,udp",
    				"timeout": 30
    			},
    			"streamSettings": {
    				"sockopt": {
    					
    				}
    			},
    			"tag": "transparent",
    			"sniffing": {
    				"enabled": true,
    				"destOverride": [
    					"http",
    					"tls"
    				]
    			}
    		}
    	],
    	"outbounds": [
    		{
    			"protocol": "vmess",
    			"settings": {
    				"vnext": [
    					{
    						"address": "server3.domain.com",
    						"port": YOUR SERVER ID PORT,
    						"users": [
    							{
    								"id": "YOUR SERVER ID“
    								"alterId": 0,
    								"security": "auto"
    							}
    						]
    					}
    				]
    			},
    			"streamSettings": {
    				"sockopt": {
    					"mark": 255
    				}
    			},
    			"tag": "proxy",
    			"mux": {
    				"enabled": true,
    				"concurrency": 8
    			}
    		},
    		{
    			"protocol": "freedom",
    			"settings": {
    				
    			},
    			"streamSettings": {
    				"sockopt": {
    					"mark": 255
    				}
    			},
    			"tag": "direct",
    			"mux": {
    				"enabled": true,
    				"concurrency": 8
    			}
    		},
    		{
    			"protocol": "blackhole",
    			"settings": {
    				
    			},
    			"streamSettings": {
    				"sockopt": {
    					"mark": 255
    				}
    			},
    			"tag": "block"
    		},
    		{
    			"protocol": "dns",
    			"settings": {
    				
    			},
    			"streamSettings": {
    				"sockopt": {
    					"mark": 255
    				}
    			},
    			"tag": "dns_out"
    		},
    		{
    			"protocol": "vmess",
    			"settings": {
    				"vnext": [
    					{
    						"address": "server5.domain.com",
    						"port": YOUR SERVER ID PORT,
    						"users": [
    							{
    								"id": "YOUR SERVER ID“
    								"alterId": 0,
    								"security": "auto"
    							}
    						]
    					}
    				]
    			},
    			"streamSettings": {
    				"sockopt": {
    					"mark": 255
    				}
    			},
    			"tag": "server5",
    			"mux": {
    				"enabled": true,
    				"concurrency": 8
    			}
    		},
    		{
    			"protocol": "vmess",
    			"settings": {
    				"vnext": [
    					{
    						"address": "server4.domain.com",
    						"port": YOUR SERVER ID PORT,
    						"users": [
    							{
    								"id": "YOUR SERVER ID“
    								"alterId": 0,
    								"security": "auto"
    							}
    						]
    					}
    				]
    			},
    			"streamSettings": {
    				"network": "tcp",
    				"tcpSettings": {
    					"header": {
    						"type": "none"
    					}
    				},
    				"sockopt": {
    					"mark": 255
    				}
    			},
    			"tag": "server4"
    		},
    		{
    			"protocol": "vmess",
    			"settings": {
    				"vnext": [
    					{
    						"address": "server801.domain.com",
    						"port": YOUR SERVER ID PORT,
    						"users": [
    							{
    								"id": "YOUR SERVER ID“
    								"alterId": 0,
    								"security": "auto"
    							}
    						]
    					}
    				]
    			},
    			"streamSettings": {
    				"network": "tcp",
    				"tcpSettings": {
    					"header": {
    						"type": "none"
    					}
    				},
    				"sockopt": {
    					"mark": 255
    				}
    			},
    			"tag": "server801",
    			"mux": {
    				"enabled": true,
    				"concurrency": 8
    			}
    		},
    		{
    			"protocol": "shadowsocks",
    			"settings": {
    				"servers": [
    					{
    						"address": "server1.domain.com",
    						"port": YOUR SERVER ID PORT,
    						"method": "aes-256-gcm",
    						"password": "YOUR SS PASSWORD",
    						"ota": false
    					}
    				]
    			},
    			"streamSettings": {
    				"sockopt": {
    					"mark": 255,
    					"tcpFastOpen": true
    				}
    			},
    			"tag": "server1"
    		},
    		{
    			"protocol": "shadowsocks",
    			"settings": {
    				"servers": [
    					{
    						"address": "server2.domain.com",
    						"port": YOUR SERVER ID PORT,
    						"method": "aes-256-gcm",
    						"password": "YOUR SS PASSWORD",
    						"ota": false
    					}
    				]
    			},
    			"streamSettings": {
    				"sockopt": {
    					"mark": 255,
    					"tcpFastOpen": true
    				}
    			},
    			"tag": "server2"
    		}
    	]
    }
    

    防火墙iptables配置

    命令行输入执行或者添加到OpenWrt 管理界面面 Network -> Firewall -> Custom Rules

    ipset -N gfwlist iphash
    iptables -t nat -A PREROUTING -p tcp -m set --match-set gfwlist dst -j REDIRECT --to-port 1081
    iptables -t nat -A OUTPUT -p tcp -m set --match-set gfwlist dst -j REDIRECT --to-port 1081
    ipset add gfwlist 8.8.8.8

    开启UDP需要 iptables-mod-tproxy 模块,请确保已经安装好。

    opkg install iptables-mod-tproxy

    OpenWRT dnsmasq-full配置

    可参考:OpenWRT dnsmasq-full配置

    cd /etc/dnsmasq.d && wget https://cokebar.github.io/gfwlist2dnsmasq/dnsmasq_gfwlist_ipset.conf
    
    #若下载错误,请安装
    opkg install libustream-mbedtls coreutils-base64 ca-certificates ca-bundle

    这里我们需要把dnsmasq_gfwlist_ipset.conf里类似server=/hp.com/127.0.0.1#5353的行全部删除,在win10可用vsc等编辑软件,正则搜索

    server=/(.*)

    替换为空就行。记得

    # 重启dnsmasq
    /etc/init.d/dnsmasq restart

    dnsmasq-china-list安装(可选)

    作为前置优化国内外网站用,请参考官方发安装方法,国内外各大代码网站都有他们的官方代码:

    V2ray透明代理的问题解决

    如果重启主路由和旁路由了还不能上网,可以按以下方式检查:

    • 旁路由配置是否正确?可以参考

    刷了OpenWRT的路由器+旁路由配置方法+无缝漫游配置(树莓派3B/3B+/4B使用OpenWRT系统做旁路由)

    • 旁路由是否开启 IP 转发?
    echo "net.ipv4.ip_forward=1" >> /etc/sysctl.d/10-default.conf
    sysctl -p
    • 测试旁路由自身是否可以通过代理上网?
    curl -x socks5://127.0.0.1:1080 google.com

    结果应为:

    <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
    <TITLE>301 Moved</TITLE></HEAD><BODY>
    <H1>301 Moved</H1>
    The document has moved
    <A HREF="http://www.google.com/">here</A>.
    </BODY></HTML>
    • 再检查一遍iptables命令是否被正确执行?
    • 还不行,找个高手指导一下吧

    这里用的是redirect的方式走代理,不支持ipv6,据说tproxy的方式可以支持ipv6

    by itgeeker.net

  • OpenWRT dnsmasq-full配置

    OpenWRT dnsmasq-full配置

    此配置dnsmasq的主要作用是ipset需要代理的域名,传递给iptables使用。

    dnsmasq-full安装

    openwrt的默认dnsmasq并不支持ipset,需要安装dnsmasq-full版本。ipset是为了支持对域名的转发代理,而chinadns是对ip进行转发代理。所以如果你选择域名匹配的方式走代理,则需要安装dnsmasq-full版本。这里就有了一个问题,当卸载dnsmasq之后,无法解析域名,也就无法安装dnsmasq-full了。这里需要卸载和安装同步进行以避免此类问题。代码如下:

    opkg remove dnsmasq && opkg install dnsmasq-full

    OpenWRT dnsmasq-full配置

    mkdir -p /etc/dnsmasq.d
    
    uci add_list dhcp.@dnsmasq[0].confdir=/etc/dnsmasq.d
    uci commit dhcp
    uci get dhcp.@dnsmasq[0].confdir

    dnsmasq-full配置文件下载

    cd /etc/dnsmasq.d && wget https://cokebar.github.io/gfwlist2dnsmasq/dnsmasq_gfwlist_ipset.conf
    
    #若下载错误,请安装
    opkg install libustream-mbedtls coreutils-base64 ca-certificates ca-bundle

    dnsmasq_gfwlist_ipset.conf的每条命令是这样

    server=/hp.com/127.0.0.1#5353
    ipset=/hp.com/gfwlist

    如果使用DNS-Forwarder转发,请填写相应端口,比如#5353

    ipset后面的gfwlist要和下面的防火墙iptables命令行相对应。

    by itgeeker.net
    # 重启dnsmasq
    /etc/init.d/dnsmasq restart
奇客罗方公众号 奇客罗方小程序 奇客罗方客服 ITGeeker Telegram

网站由ITGeeker技术奇客开发并管理;隶属于GeekerCloud奇客罗方智能科技
Site designed and developed by ITGeekerwhich is a sub-website of GeekerCloud
网站地图 | 沪ICP备2021031434号-4