首先,我这里说的公网服务包括 http,ftp,smb 等等。
目前来说,这些服务直接暴露到公网,安全问题都是小事,更关键的是 v2er 都提醒又被断网的风险。因此对应的办法:
1,只对外开放一个微屁嗯,需要访问服务的时候都通过微屁嗯连回家里的网络使用。缺点:需要安装微屁嗯客户端,而且这类客户端基本上都被墙了,在一些公共电脑上装一次客户端就得搞半天
2,通过代理服务器,比如 frc ngrok 花生壳这类,原理是客户端和代理服务器通讯,代理服务器通过 tcp 长连接和你家里服务器通讯。这样你家的服务器没有开放任何端口,但是!这样缺点也很明显,经过代理,速度太慢了。我家可是千兆宽带,经过代理能跑到 10 兆就很不错了。
所以,最近我有了一个全新的解决思路,首先我在路由器上面禁掉所有外网 ip 访问,然后,我家里路由器和我一台公网服务器保持通讯,当我需要访问家里服务器的时候,我先请求公网服务器,公网服务器发送消息给家里路由器,然后路由器仅对我当前 ip 开放访问权限。这时,我就可以直接访问我家的服务器了,而且中间没有代理,保证速度。另外,由于家里路由器平时是关闭所有外网 ip 请求的,这样也就解决了安全性以及被断网的风险。
最后,调研了实现方案,路由器上面可以使用 go 语言开发,控制访问只需要编辑 iptables 的规则即可。
目前方案还没实现,先写个思路出来,各位大佬 review 下看看还有没有什么漏洞?
1
sadfQED2 OP 另外,公网服务器并不一定真的是一个服务器,可以是一个邮箱,可以是 github,或者是一个 tg 机器人都行,反正我需要连接家里服务器的时候,我能把我当前 ip 发送回家就行
|
2
jiangzm 2020-06-24 17:15:32 +08:00
太麻烦了吧,又是通过公网服务器发给路由器,然后还要写程序更新路由器防火墙规则。
|
3
CheekiBreeki 2020-06-24 17:18:13 +08:00 via Android 2
最後發現還是 vpn 方便
|
4
CloudnuY 2020-06-24 17:18:30 +08:00
我记得最近几个月在本站看过这个解决方案
|
5
k9982874 2020-06-24 17:21:40 +08:00 1
我先否定代理服务器,然后我再自己实现一个代理服务器,就是这么任性
|
6
yorkyoung 2020-06-24 17:22:31 +08:00
|
7
wtsamuel 2020-06-24 17:31:43 +08:00
我倾向于使用 zerotier 的 nat,还能直接打通多个局域网。
安全方面直接靠应用自己,比如 smb 账号密码什么的 |
8
ericbize 2020-06-24 17:32:45 +08:00
但是你一个公网服务器的成本是多少?
这个很简单啊, 你可以在云上面把 vm 装个路由系统上去,然后家里 vpn 连上去,直接端口转发就可以了。 家宽的优势在于价格吧! |
9
sadfQED2 OP |
10
jiangzm 2020-06-24 17:38:13 +08:00
我觉得可以结合 ip+mac 地址 两种白名单方式,大部分情况能覆盖到,在公司时把公司的固定 IP 加白名单,然后在外面把自己的手机 mac 地址加下白名单。
|
11
sadfQED2 OP |
12
ztxcccc 2020-06-24 17:40:03 +08:00 1
你都有服务器了,搭建一个这个吧,github 上搜 ehang-io/nps
|
16
Tonni 2020-06-24 17:53:47 +08:00
开个 ss 代理,然后通过这个 ss 端口返代。
|
17
ferock 2020-06-24 17:57:15 +08:00
我的方案
外网只提供 2 个服务 1. https 2. vpn 端口 使用 openVpn 组网,或者使用 zerotier 组大局域网 以上满足绝大部分需求,服务器为 白 群晖。 |
18
ferock 2020-06-24 17:59:35 +08:00
https 服务都是直连的。
|
19
stille 2020-06-24 18:00:20 +08:00 via iPhone
只开了一个端口给 openconnect,只开了一个证书登录账号,手机和笔记本部署好就很完美了,几乎秒登
|
20
sadfQED2 OP |
22
GreatHumorist 2020-06-24 18:11:58 +08:00 via iPhone
人楼主的意思其实是白名单机制吧……
|
23
cest 2020-06-24 18:14:15 +08:00
不就是 ssh port knock
监听特定 port 然後开放 ssh port 给特定 ip |
25
whileFalse 2020-06-24 18:37:56 +08:00
部署一个 shadow server,然后用比如 surge 之类能自己写规则的客户端搞定
|
26
lsylsy2 2020-06-24 18:50:08 +08:00
port knocking,安全方面是比较成熟的技术,但无法避免断网风险
|
28
sadfQED2 OP @GreatHumorist 是的,本质就是白名单,但是要想办法如何在任意一台公共电脑上修改白名单
|
29
coolcoffee 2020-06-24 19:09:54 +08:00
vpn 客户端先下载下来放到某个国内网盘不可以吗?拨号之后走的内网访问,比直接在公网上白名单安全多了,而且还不用一个个设置转发规则。
另外,你设置白名单 ip 是属于掩耳盗铃的,电信还是能知道你在家宽上搭建网站。 |
30
cjpjxjx 2020-06-24 19:14:53 +08:00 via iPhone
类似于。。。进京证?
|
31
sadfQED2 OP @coolcoffee iptables 上面我把请求丢掉还能知道我达了 web 服务?
|
32
Semidio 2020-06-24 19:38:08 +08:00
家里 ss-server 开在不常见端口,客户端内网网段走 ss 即可
|
33
yujiang 2020-06-24 19:43:28 +08:00 via Android
蒲公英,他家 VPN 大流量走的是 p2p
|
34
0gys 2020-06-24 20:06:26 +08:00 via Android
双向 ddns,哈哈
|
35
silencefly 2020-06-24 20:35:17 +08:00 via iPhone
DDNS
|
36
devlnt 2020-06-24 20:48:42 +08:00
蒲公英或者直接 ipsec 的 vpn 。移动端上系统自带客户端,完美解决
|
37
dullwit 2020-06-24 21:38:26 +08:00 via iPhone
我的方案是 ddns 加 wireguard (只开一个 peer ),wg 配置文件存云盘,换设备也方便导入
|
38
mxT52CRuqR6o5 2020-06-24 21:44:55 +08:00 via Android
ddns+v2ray,v2ray 的路由规则配置能力挺强的,访问不同服务器可以自动选择不同的线路
|
39
kennylam777 2020-06-24 21:52:12 +08:00 via Android
IPSec 的 IKEv2 或 IKE v1 xAuth 都不用安裝 app
|
40
yzwduck 2020-06-24 22:57:11 +08:00
漏洞?很多。
这个方案必须完全信任运营商:1 )不会被动嗅探你的 http 流量; 2 )不会伪造 IP 主动探测你的服务; 3 )不会乱改接入端的 IP 地址。 否则:1 )以违背用户协议之名,禁掉你的网络; 2 )伪造你的身份,访问你的网络; 3 )让你连不通自己的网络。 |
41
BadAngel 2020-06-24 23:17:36 +08:00 via Android
让我想起灰鸽子?
|
42
ochatokori 2020-06-24 23:27:34 +08:00 via Android
楼主的思路就是借助 vps 敲门
说实话这样搞是最麻烦的 个人觉得 vpn 是最兼顾易用和速度的 你说客户端被墙安装麻烦的问题,把客户端安装文件放到你服务器上需要的时候就下载就行了吧 |
44
lifanxi 2020-06-26 17:51:19 +08:00
我以为穿越了,记得以前讨论过这个问题。
找了一下,请参考: https://www.v2ex.com/t/669709 |
45
bluesky139 2020-06-26 20:18:22 +08:00 via Android
@lifanxi 我也清楚的记得以前有过讨论,看了 40 多楼终于有人想起了。。
|
46
ungrown 2020-06-28 11:17:45 +08:00
首先遇到这类场景我反正无论如何不管怎样都开头无脑推荐 zerotier 先走一波。
反正值得一试,不行再说。 接下来具题具析:你用的思路,其实就是 Port knocking (端口敲门),只不过你这儿是 IP 敲门。 好了,结题,建议你上 github 细细搜一下,现成的实现应该不少,就算不能直接拿来用,也能直接拿来改。 |
47
greensea 2020-06-30 13:54:25 +08:00
提醒楼主可能在重新发明轮子
knock 了解一下 |