分享一下我日常用的打洞回家法,不知道有没有 V 友也用这个的

2023-11-15 19:45:27 +08:00
 MFWT

说白了,就是利用 natter/natmap 等软件,对 FullCone 宽带(移动不给 v4 公网,只有 FullCone 了)进行端口打洞,打出来的洞 TCP 和 UDP 都可以跑,理论上可以直接用,不过为了安全和方便期间,我把他转发到了 WireGuard 上面,这样在学校的时候只需要让 WireGuard 连接这个端口,就可以访问家里的内网了

一个问题是,这样打洞打出来的端口,端口号是随机的,幸好 natter 提供了 Hook 功能,打洞成功后只需要调用 curl 把它推送到外面网站(我在博客站放了个小脚本)的一个文件上,访问端要连接的时候读取一下这个文件并写入 WireGuard 配置文件中(同样可以用 curl 和一点 bat 脚本即可办到)就能知道最新地址了

一般来说重拨号后读一次就可以用到下次重拨号,还是不错的

现在唯一要祈祷的就是,移动不要收回我的 NAT1 ,不然我就得走中转了

附,网站上的脚本,请注意保护好密钥,最好再给脚本改个名,因为脚本写得很简陋,很容易被有心之人利用来写入恶意文件什么的

<?php
    /*
        使用方法:
        1. 更新信息:GET http://your_api/<脚本名>.php?key=访问密钥&act=update&ip=新的 IP&port=新的端口
        2. 获取信息:GET http://your_api/<脚本名>.php?key=访问密钥

        请在这个 php 文件的同目录下面放一个 ip.txt 文件用来记录信息,需要有可读写权限,666 就行
    */
    $key = '在此处填写你的访问密钥';
    if(empty($_GET['key']) || $_GET['key'] != $key){die('failed');}
    if(!empty($_GET['act']) && $_GET['act'] == 'update')
    {
        if(empty($_GET['ip']) || empty($_GET['port']))
        {
            die('failed');
        }
        file_put_contents('ip.txt',$_GET['ip'].':'.$_GET['port']);
        die('success');
    }
    readfile('ip.txt');
?>
5508 次点击
所在节点    宽带症候群
33 条回复
MFWT
2023-11-16 21:43:04 +08:00
@duduke 主要是我需要用到三层代理,思来想去最好的解决方案当然就是三层 VPN ,主要是人家就是做这个的
MFWT
2023-11-16 21:43:36 +08:00
@lovexiaofan12312 学校网络不支持 v6 ,只能用流量卡上,这个就不太方便了
MFWT
2023-11-16 21:44:57 +08:00
@YGBlvcAK
@faceair

ZT 和 TS 我都考虑过,但是在我这边几乎无法使用,因此最后放弃了
其实要论兜底的话,用流量卡(校园网不支持 v6 )+v6DDNS 也可以连回去,而且因为路由器能拿到公网 v6 ,所以其实问题不大,主题中的方法是拿不到公网 v4 才想出来的下策
MFWT
2023-11-16 21:45:29 +08:00
@jwz426 感谢分享,我去看看
MFWT
2023-11-16 21:46:33 +08:00
@hanguofu 我进去超管后台关掉了所有防火墙,交给软路由处理了
MFWT
2023-11-16 21:48:00 +08:00
@Masoud2023
有一个可能是你是光猫拨号,但是光猫有额外防火墙或者没有开 DMZ 给下级路由
我是路由器拨号,然后在路由器上做 Natter 的

当然,我目前怀疑是分地区的,因为有朋友开移动宽带只能拿到 NAT4 ,但是我开两条都能拿到 NAT1
MFWT
2023-11-16 21:49:13 +08:00
@lihang1329 思路差不多,我主要是考虑到可以用到完整三层,因此选了 VPN
MYDB
2023-11-16 23:34:09 +08:00
我 ss 全局连回去,然后顺便手机免流
Masoud2023
2023-11-17 10:46:51 +08:00
@MFWT #26

你的路由器是 openwrt 吗?有开防火墙的 NAT1 吗?

我这个结果也是在路由器上跑的。
s82kd92l
2023-11-17 10:51:26 +08:00
可以用 mqtt 发布端口到公共服务器某个频道上,然后订阅频道,简单免费
Dzsss
2023-11-17 11:01:40 +08:00
Mikrotik IP Cloud 的 BTH 了解一下。
Masoud2023
2023-11-17 11:05:22 +08:00
@MFWT #26

我打开 NAT1 了,确实是 openwrt 的问题

https://serverfault.com/questions/441257/how-to-configure-totally-open-dmz-with-openwrt 设置了下 DMZ ,一下子就开了

之后得抽时间自己编译下固件把 https://www.right.com.cn/forum/thread-319827-1-1.html 这个打进去
hi543
291 天前
试一下 tailscale 吧,安装个客户端就可以了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/992226

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX