折腾了两天,终于搞好了…
最开始想的是PVE来做外层,里面放个RouterOS,还有空间还能放其他的。这样确实是跑通了:pve创建了一个虚拟网卡连进了内网,也可以内网访问了。然后就想到了一个问题:万一某一天RouterOS没有启动起来,那我不是也没办法恢复了?
于是决定最外层就放RouterOS本体,里面再折腾点什么docker之类的来扩展服务。(但是为什么不在NAS上搞呢)
0x01 配置猫棒
猫棒是用来替代光猫的(?真能替代吗)大概是光模块 + 一个完整的单片机用来模拟光猫的硬件(LOID,vlan等)不同于光模块需要插到支持sfp的软路由/电脑里进行配置,猫棒可以做带接近即插即用。(当然主要是带sfp电口的软路由太贵了,又不太好改pcie加装电口,才会出现这样的东西。
需要注意的是,当前比较便宜的猫棒/光模块是支持GPON而不是EPON的。
EPON:最大速率1G,GPON:最大速率2.5G,XGPON:最大速率10G。(XGPON是向下兼容GPON的,所以也可以用哦——)
当然如果家里开了万兆/两千兆宽带的富哥我们一般是不建议买猫棒这种垃圾货色的。(UniFi更适合您😭)
这玩意咸鱼太多了,随便找一个买就行,一般卖家还是不错的,不会发坏掉的给我们。(某位老师说咸鱼上买到的这种可能来自河南的移动基站,但是我收到的为啥是广东发货的)
但是由于是sfp口,电脑还是不支持的,所以我们需要找一个光转电的模块,把sfp转成rj45的。搜了下学名叫收发器,2.5G的大概70块。
另外,一般住户的入户光纤和sfp接口也不兼容,需要准备一个转接头。同样,在买猫棒的时候,店家可能会问你。
这一步是分运营商的,其他运营商我没开过T T,所以就以吉林电信来讲吧
要模拟光猫的系统工作,你需要这些内容:LOID,vlan,设备标识号。这些内容存在在光猫的后台中(需要超管?不一定)
但是在社会工程学的强大力量加持下,我找宽带师傅要来了超管账号密码。(其实比较简单的做法是直接重置光猫:重置光猫不会丢掉它的pppoe登录信息,只会丢掉其他的配置)
可以看到41结尾的是Vlan ID,LOID我也是直接找师傅要到的。设备标识号在设备的反面,反过来就能看到。
另外你还需要获得pppoe的账号密码!这个密码不是app那里改的密码,还是需要登录后台去看。
信息准备好了就可以把光猫背面的光纤拔掉,通过转接口插到猫棒上,然后插到收发器上,把收发器的电源插上,再把收发器的rj45插到电脑上。(什么人体蜈蚣)
手动设置下ip,设置在192.168.1.0/24里的随便一个(别是10就行),子网掩码255.255.255.0。
然后就能访问到1.10上的openwrt了。打开GPON栏里的互操作兼容设置,输入LOID,GPON SN,
打开vlan设置,pvid填写上网vlan,我这台没开iptv,就不用填其他的了。
然后保存,之后重启。可以看到首页上有注册状态和接收光强度等级。接收光强度在-10 ~ -18 dbm算是正常的,注册状态是5说明这里配置是没问题的。
然后就是非常传统的PPPoE拨号配置了:输入账号密码,登录。如果有网就连接成功了。
噔噔咚
当你做到这一步的时候你会发现,用纯硬路由器(arm/mips/riscv)来拨号,是会有性能损失的。(存疑,不确定是运营商的问题还是我硬件的问题)跑测速只有几mb这样子。(确实是性能问题———
0x02 安装 RouterOS
这是卡了我最久的一步….
RouterOS提供:netinstall,相当于pve启动,配置比较玄学;install-image(只能往所在盘安装)。这导致我的一般方法都用不了()跟着网上的说法做,被迫下了一个pe系统——这里用的是edgeless,看上去美观一些.jpg。当然其实把东西全下下来用dd也行。
下载:https://mikrotik.ltd/ 到这里去下载install-image。
通过dd或者其他的什么方式把它直接写入目标盘。重新启动到系统,就能看到安装界面了。选盘,安装,记得一定要安装option包
于是打开就有一个略微正常的系统了,因为是非常爽的4口软路由,所以我们有四个网卡设备(这不废话吗)
0x03 配置基础
这里用的‣这个教程,照着配就行了。
0x04 配置AP接入
既然已经用了ROS做主路由了那么,在里面套LAN似乎没什么必要。所以我们让wifi变成AP只做接入:分配网段等操作交给主路由。
简单的在openwrt之类的里面把DHCP关掉就好,然后把wan和lan口放到同一个bridge里,保存重启就能在ROS后台看到接入的设备了
0x05 透明代理
其实前面几个都不是这一套系统的主要作用,最后这一个才是啊😭
实现之后大概是这样:
国内请求→sing-box (dns) → 国内real-ip → 正常访问(直接走pppoe出站)
国外请求→sing-box (dns) → 国外fake-ip → 路由到sing-box(tun) → 加密混淆…. → pppoe 出站。
要做到这样的请求,我们需要用container容器,所以这里我们先把容器功能打开
/system/device-mode/update container=yes 然后直接断电再插上,不是reboot!
然后如果没有container的就安装container,有的就不管。
接下来添加一个veth网卡,有些教程是放到docker的一个bridge里,我这里就直接放主bridge了
/interface/veth add address=192.168.2.2/24 gateway=192.168.2.1 name=veth1
/interface/bridge/port add bridge=bridge1 interface=veth1 创建挂载点
/container/mounts/ add name="singbox" src=/containers/appdata/singbox dst="/root/sing-box" 用你想用的方式(sftp或者直接file上传)你的配置(见下文)
然后创建容器
/container/ add remote-image=sagernet/sing-box:latest cmd="run -D /root/sing-box -C /root/sing-box" comment=singbox interface=veth_singbox mounts=singbox_persist root-dir=/containers/singbox start-on-boot=yes 启动完成其实就好了。
如果你按照前面那篇的配置来做的话,需要把defconf: drop invalid connection的防火墙里排除掉
198.18.0.0/15 这个网段,然后添加fake-ip静态路由
/ip/route add comment=fakeip disabled=no distance=1 dst-address=198.18.0.0/15 gateway=192.168.2.2 pref-src=0.0.0.0 routing-table=main suppress-hw-offload=yes 配置文件修改的地方如下:
inbound中这样写:
{
"type": "tun",
"sniff": true,
"auto_route": true,
"auto_redirect": false,
"strict_route": false,
"address": ["172.18.0.1/30"],
"route_address": ["0.0.0.0/1", "128.0.0.0/1"],
"route_exclude_address_set": ["geoip-cn"],
"route_exclude_address": ["172.18.0.1/16", "192.168.0.0/16"],
"mtu": 9000
},
{
"type": "direct",
"tag": "dns-in",
"network": "udp",
"listen": "0.0.0.0",
"listen_port": 53
} DNS里:
{
"servers": [
{
"tag": "cloudflare",
"address": "tls://1.0.0.1",
"detour": "direct"
},
{
"tag": "local",
"address": "119.29.29.29",
"detour": "direct"
},
{
"tag": "gladns",
"detour": "proxy", # 这里填你的proxy
"address": "https://1.0.0.1/dns-query"
},
{
"tag": "block",
"address": "rcode://success"
},
{
"type": "fakeip",
"tag": "fakeip",
"inet4_range": "198.18.0.0/15",
"inet6_range": "fc00::/18"
}
],
"final": "gladns",
"rules": [
{
"outbound": "any",
"rewrite_ttl": 300,
"server": "local"
},
{
"rule_set": "geoip-cn",
"server": "local"
},
{
"rule_set": "geoip-cn",
"invert": true,
"rewrite_ttl": 900,
"server": "fakeip"
}
],
"strategy": "ipv4_only"
} 0x06 PXE
然后又多了一个nas,但是没带U盘。那顺便搞一下这个吧:netboot.xyz是比较好用的一个网络安装工具。
下载好了传到根目录
- 在ip dhcp server里添加boot file = netboot.xyz.efi,next server = 192.168.2.1
- 在ip tftp里添加 一个filename = netboot.xyz.efi, local-file= netboot.xyz.efi的文件。
启动你的设备,在BIOS里设置(Network Stack Configuration或者类似的设置里开启ipv4 pxe),这个时候就能自动启动到netboot了。