目录
前言
这篇文章是我一直就想写的一篇文章,互联网暗流涌动,大量的黑产,肉鸡,扫描这互联网的上的公网IP,企图侵犯用户的网络安全,目前网上大量的教程都是教大家开放自己的端口,暴露在公网,更有甚者盲目的去让大家把整个家庭网络中的全部设备都暴露在危险的互联网上(例如开启DMZ)
如何最大限度的减少网络安全风险
本文的核心内容就是,帮助大家减少设备在公网下的安全问题,我个人其实挺喜欢大内网的,有自己的VPS的人应该都知道,自己的主机一天要被扫多少次,有多少人在爆破自己的SSH,个人用户不是网络安全运维,没那个时间也没那个能力去解决这件事
为了保证安全,只暴露必要的端口
我的建议是,只暴露下载所需的P2P端口,和本文接下来要讲的软件的端口
bt,pt下载由于需要上传和连接上更多的用户,所以要开放P2P端口
大部分用户连接到内网设备无外乎就是打开个网页或者RDP访问远程主机,这些我们都能够通过本文即将阐述的教程做到,所以只开放2两个端口足以满足大部分用户的需求
神奇工具的神奇用法
我尽量讲的简单一点
本文要用到两个工具,一个是L大的openwrt自带的v2r服务器,在软路由中创建v2r服务,之所以推荐在openwrt上部署v2r服务,因为L大的openwrt可以很方便的开启bbr,在客户端网络条件差的情况下可以有效提高吞吐量
还有一个工具就是本文主要要讲的clash,之所以用clash,是因为他除了方便使用,分流好使,无感知切换
区分流量,不让所有流量都走家庭网络
本文使用clash的目的上面已经写的很清楚了,这就是为什么要使用该工具来访问自己的家庭网络,而不是用V-P*N,V-P*N会让所有的流量都走自己的家庭网络,没必要且影响网速
教程正式开始
从服务端讲起
用openwrt最简单,这里玩软路由的人很多,不懂怎么安装openwrt的可以站内搜索
之后把这个端口转发到路由器上即可,光猫拨号的话就在多转发一次到光猫
需要提醒的一点是,v2r的ID和端口,是绝对不能透露给任何人的,否则对方可以随意在你的家庭网络内穿梭
手敲代码部署
//所有的注释都必须要删掉
{
"log": {
"loglevel": "warning"
},
"inbounds": [
{
"port": 对外端口,
"listen": "0.0.0.0",
"protocol": "trojan",//为啥用Trojan,因为即便只是访问家庭网络,有些协议也是会被阻断
"settings": {
"clients": [
{
"password": "自行设置uuid"
}
]
},
"streamSettings": {
"network": "tcp",
"security": "tls",
"tlsSettings": {
"allowInsecure": false,
"minVersion": "1.2",
"alpn": [
"h2",
"http/1.1"
],
"certificates": [
{
"ocspStapling": 3600,
"certificateFile": "/etc/xray/ssl/full_chain.pem",
"keyFile": "/etc/xray/ssl/private.key"
}
]
}
},
"sniffing": {
"enabled": true,
"destOverride": [
"http",
"tls"
]
}
}
],
"outbounds": [
{
"protocol": "freedom",
"settings": {},
"tag": "direct"
},
{
"protocol": "freedom",
"settings": {},
"tag": "home"
},
{
"protocol": "blackhole",
"settings": {},
"tag": "blocked"
}
],
"routing": {
"rules": [
{
"type": "field",
"outboundTag": "home",
"ip": [
"10.0.0.0\/8",
"192.168.0.0\/16"//写你自己的局域网段
]
}
],
"domainStrategy": "IPOnDemand"
}
}
客户端的部署
找到自己对应平台的clash客户端(全平台都有对应客户端,很方便),我是macOS,用clashx做范例,(配置文件都是通用的,所以什么客户端都一样)
这里我放一份脱敏的配置文件给大家参考
clash最新版的完整配置文件挺复杂的,但是更容易理解了,网上有完整版配置文件,把我留下的关键内容嵌套上去即可
完整版配置:https://github.com/DivineEngine/Profiles/blob/master/Clash/Outbound.yaml
hosts:
'router.asus.com': 192.168.1.1
proxies:
# VMess
- name: "HOME"
type: vmess
server: 你的DDNS地址
port: 10086
uuid: 你的v2r id
alterId: 16
cipher: auto
udp: true
proxy-groups:
# 家庭网络"
- name: "家庭网络"
type: select
proxies:
- HOME
- DIRECT
# Local Area Network
- IP-CIDR,10.0.0.0/8,DIRECT
- IP-CIDR,172.16.0.0/12,DIRECT
- IP-CIDR,127.0.0.0/8,DIRECT
- IP-CIDR,100.64.0.0/10,DIRECT
- IP-CIDR,224.0.0.0/4,DIRECT
# 家庭网络
- IP-CIDR,192.168.0.0/16,家庭网络
# GeoIP China
- GEOIP,CN,DIRECT
- MATCH,MATCH
简单解释一下配置文件里面的几个我觉得需要说明的
1、这个是自定义hosts,比如华硕路由器的地址,'router.asus.com'
,即便你输入192.168.1.1
,他也会做个跳转,导致无法访问,在hosts自定义后就可以绑定地址和ip了
hosts:
'router.asus.com': 192.168.1.1
2、这里要填写你的家庭内网地址,大部分人应该都是192.168,按照我这个来就行了,16是掩码,如果不是这个地址多半应该也懂什么掩码
IP-CIDR,192.168.0.0/16,家庭网络
访问自己的家庭网络
配置好配置文件后,就可访问自己的家庭网络了,另外有一些人有连接内网设备ssh的需求,我这里讲解一下,如果要ssh进内网设备要怎么做
为什么不要使用DMZ
DMZ,是把用户指定的一台设备的全部端口,转发到路由器上,让用户面临着极大的网络风险,仅仅去为了暴露几个端口是完全不值得的,这将极大的增加网络安全风险
我的建议
1、不要使用路由器拨号,就使用运营商提供的光猫拨号即可(运营商让你用光猫拨号真的是为你好),让自己的路由器上的端口隐藏在光猫之下,多一重网络保障,不要盲目的追求减少一层nat,把自己需要暴露的端口转发出来即可
这是我的端口转发纪录,没有光猫在外面挡着(我手动只转发了几个端口在光猫上),这些端口就直接暴露在公网上了
现在我的公网只暴露clash的端口,和P2P下载所需的端口,所有内网地址都可以通过clash分流访问(群晖,路由器,aria2,qbittorrent,sonarr,emby等等,都可以在不做端口转发到公网的情况下在外网访问)
2、少听koolshare论坛的人的一些高论,点开他们的主题列表你会发现除了伸手问问题外没有任何贡献,却非常喜欢指点江山和人身攻击。某些人是真的恶臭,难怪那么多大神都出走了,戾气真重,贡献没有嘴炮第一
3、本文上手还是有些难度的,如果没有用过上述两个工具的人可能会比较难上手,用过的人自然就能照着教程配置起来,用起来也得心应手,不懂的就多学多问,而不是上来就开喷,有什么问题可以在下面问我
本文由 NG6 于2020年07月23日发表在 sleele的博客
如未特殊声明,本站所有文章均为原创;你可以在保留作者及原文地址的情况下转载
转载请注明:高级教程-安全访问家庭网络 | sleele的博客
博主有用homeassistant吗?我用这个思路搭建好了,别的内网服务都可以访问,只有homeassistant输了密码之后连不上,可能和ha用的websocket长链接有关。
@sleppy 我这边是正常的
查看图片
查看图片
@匿名 可以分享一下节点设置吗,谢谢
博主你好,目前我也在学习安全回家内容(主要是访问nas),看了你的代码,大受启发,但发现了一处错误:服务端使用trojan和客户端vmess配置不对应,希望您能够修改下客户端配置,让我作为参考,感激不尽!
@学海无涯 代码是对的,需要根据我注释的地方还有你的网段进行修改
@NG6 请问服务器端配置代码使用的是trojan协议,为什么客户端代码中写的协议是vmess呢?大佬能否解释一下?
@学海无涯 clash里的配置么?
type: trojan
server: server
port: 443
password: yourpsk
alpn:
skip-cert-verify: true
@NG6 好的,谢谢大佬,获益匪浅,希望以后能多多分享哈哈
大佬好,咨询一个问题:家中nas有电信公网ip,域名由cloudflare解析到家中的动态ip。现在情况是在外用电信wifi/流量可以通过域名访问家中nas,移动wifi/流量则不行(直接通过公网ip则可以),求教该如何解决? 以及是否可以通过文中的方式,在黑群上用docker搭建v2ra,实现外网访问内网nas(家中路由器为硬路由,无法部署v2r)。非常感谢
@v2cla 移动网络问题比较多,现在更建议搭建TLS模式网络,这样基本就不会有问题
我在网上看到一种使用ssh访问家庭网络的方案,禁止密码登录,使用密钥对来提升安全性,同时将端口设置成网关端口允许远程主机连接到本地 SSH 转发端口来访问内网服务,博主对这种方案有何评价?
图片加载不出来
@晓 已修复
gitee的图床链接全部失效了
SS+IPV6+Clash 回家的感觉真好|´・ω・)ノ
有没有不需要代理的方法,太麻烦了
为了多拨,所以用的路由器拨号ヾ(≧∇≦*)ゝ
博主也通过这种方式访问群晖的软件么,moments这种,我也考虑过用这种代理,但是对于家里其他要用moments的人来说有点太复杂了,直接转发个群晖的端口到公网好像是最简单的方式了
@iSource 必要的端口还是要转发出去的,我这种方式相当于VPN穿回去
谢谢很好的思路。openwrt打开v2ray服务后,客户端用V2RayU之类单节点手动切换到家庭网络没有问题,可以以内网地址访问家庭网络中其他机器。参照示例修改ClashX的配置却没有成功,应该是我还不会使用proxy group的原因。仔细检查了几个小时也没有头绪。
@匿名 在clash配置文件夹里修改这两个文件
1、
proxyIgnoreList.plist
,删掉你的家庭局域网段2、
config.yaml
删掉你的家庭局域网段DIRECT
,改为你代理,- IP-CIDR,192.168.0.0/16,家庭网络
查看图片
查看图片
查看图片
@NG6 非常感谢!其实今天还是走了些弯路,我的配置目录里并没有proxyIgnoreList.plist这个文件,以为是别的原因,于是又花了重头检查配置文件,到处都没错。。后来灵光一闪,把标准ignore文件下载了放了进来,删去192.168,就可以了。。
多说一句,刚发现博主,从头到尾过了一遍所有文章,收获良多,再次感谢!
用路由器拨号有点好处,并且路由器上也能做限制,还有现在很多都没公网ip了,都是大内网了,也暴露不到公网上。问题不大的