求推荐内网穿透方式

2017-05-21 22:46:48 +08:00
 yangxuan8282

家里用的是电信无线宽带(4G)没有公网 IP,树莓派上有几个网页,想在外网访问只能考虑内网穿透,因为手里已经有 vps 所以倾向于用现有的资源,不太想用花生壳这一类付费的,想请大家推荐一下哪种方式比较好

我知道的几种方式:

前三个都试过,ngrok 和 n2n 还没尝试

ssh 隧道最方便,也不用装其它软件,不过速度一般;狗洞 lite 是用过的里面最满意的,自带 kcp,对丢包明显的线路来说很适合,速度不错,不过有个问题是电信无线宽带不是很稳定,一旦断网重连狗洞 lite 就会报错说端口已占用,必须把 server 端退掉重新开才行,所以经常得手动重连; frp 感觉配置有点繁琐,还得在配置文件里配置域名,多个站点的情况下不清楚怎么配置

9581 次点击
所在节点    问与答
50 条回复
yangxuan8282
2017-05-23 00:37:21 +08:00
@fatedier 我说的网络稳定只是指的不断线,我这里因为是用的 4G 网,晚上掉线的时候比较多,狗洞掉线重连会有端口已占用的报错,之前一直被这个这个困扰,想找个别的方式,今天在 v 友帮助下算是临时解决了这个问题,所以暂时先不换了
yangxuan8282
2017-05-23 00:46:11 +08:00
@fatedier 速度的话我没具体测,只是对比感觉狗洞明显快一些,服务器在国外,连国外线路丢包比较明显,所以 kcp 应该是有提升
不知道以后 frp 有没有加入 kcp 的计划
tinyproxy
2017-05-23 09:23:19 +08:00
我图省事直接挂 tor hidden service,不过速度也就 ssh 还能接受吧,其他用途还是算了。
yangxuan8282
2017-05-24 18:55:46 +08:00
@wwqgtxx 问下如果想加一个类似 check if site down 的检测的话,是用 crontab 好还是用 systemd timer 合适
大体的想法是每小时用 `curl -Is $URL | head -n 1` 查看 statuscode 是否是 "HTTP/1.1 200 OK",如果不是的话就说明连接断开了,那就重启狗洞的 systemd:systemctl restart http-dtunnel
wwqgtxx
2017-05-24 19:13:21 +08:00
@yangxuan8282 其实用哪个区别不大,你哪个顺手就用谁呗,反正回头还是要靠写 shell 脚本来完成
yangxuan8282
2017-05-28 18:13:12 +08:00
@wwqgtxx 再打扰问下 systemd 有办法同时运行两条命令吗,狗洞一次只能穿透一个端口,如果想同时把 80 和 443 暴露到互联网的话就需要运行两次,之前的 `dtunnel-up.sh` 脚本我改写了一下:

**dtunnel-up.sh**

```
#!/bin/bash

#ssh -f -i $SERVER_SSH_KEY $SSH_USER@$SERVER_IP -p $SSH_PORT "sudo systemctl restart dtunnel-server"
/usr/local/bin/dog-tunnel -service $SERVER_IP:1234 -v -action 127.0.0.1:80 -encrypt -xor $XOR -local :80 -pipe 5 -r &
/usr/local/bin/dog-tunnel -service $SERVER_IP:1234 -v -action 127.0.0.1:443 -encrypt -xor $XOR -local :443 -pipe 5 -r &
#wait
```

单独运行脚本的话可以同时把 80 和 443 暴露到外网,但是如果用 systemd 去启动这个脚本的化行为会比较奇怪,按说应该在后台运行的,但是时不时输出就会跳到前台,而且按 ctrl + c 暂时退了之后还会出现,只能用 `ps -aux | grep dog-tunnel` 找出 PID,然后手动杀掉进程

如果单个 systemd 不能管理两个端口的话只好单独写两个 systemd 分别对应 80 和 443,然后再另外写一个 systemd 去管这两个了
wwqgtxx
2017-05-28 21:10:14 +08:00
在我的记忆中是没有的,不过你可以用 python 的 popen 来跑多个子进程,然后记得调用 wait 就行,systemd 在调用 stop 的时候会连带子进程一起干掉的
stonehe
2017-06-24 20:20:49 +08:00
我只使用过 ngrok 和 frp,vultr 洛杉矶的 vps 做服务器。家里组装 nas,安装 omv 做主系统,通过 web 访问。前期装 ngrok,使用路由器 openwrt 的 ngrok 客户端转发给 nas,外网访问 omv 的 web 界面,弹出错误频率比较高(可能是传输数据丢包导致),后面尝试 frp,用 nas 本身做客户端,几乎没有弹出错误,而且明显感觉加载流畅。因为一个是经过路由器转发,一个是 nas 本身,所以没办法断言 frp 和 ngrok 效率优劣。
domwang
2018-04-22 15:59:53 +08:00
Holer 很好用,是一个免费开源的内网穿透工具,它可以将局域网服务器代理到公网的内网穿透工具,支持转发基于 TCP 协议的报文。

Holer 地址:
https://github.com/Wisdom-Projects/holer
probezy
2018-11-11 16:12:29 +08:00
如果觉得自己搭建麻烦,可以使用 cpolar-安全内网穿透工具,用来做微信公众号接口联调,树莓派远程,内网 web 穿透都很方便,而且它是免费的,官网地址:www.cpolar.com

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

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

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

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

© 2021 V2EX