已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也

这个方案实际使用存在比较多的问题:

  1. 使用了不受控的第三方转发服务,涉及流量出境和再入境,带宽和延迟都有明显的损失,可靠性存疑。

  2. 在路由器之外实际增加了一台物理服务器,但是却没有获得应有的性能。

  3. 使用了疑似存在后门的宝塔面板。

  4. 疑似明文传输HTTP,容易被劫持并且会被运营商发现。

  5. 服务器和内网其它设备没有隔离存在安全隐患。

更优雅的姿势:

既然需要额外的硬件就干脆组装一台软路由,不追求小包转发速率并且没有其它业务需要的话可以找到不少便宜的方案。安装VMWARE ESXI实现虚拟化(记得开启vt-x/vt-d):

esxi_main.jpg

下载OpenWRT的源码,选择上需要的组件和插件然后编译,记得修改overlay分区容量。Linux/OSX直接编译,Windows下可以用WSL2,没什么难度。之后把编译出来的镜像转换成ESXI可用的vmdk格式上传到ESXI。然后新建一个虚拟机作为路由器:

esxi_vrouter.jpg

将上传的vmdk作为硬盘添加给软路由的虚拟机,启动后在esxi中通过vi修改网络接口配置后接好内外网。

再新建一个虚拟机作为服务器:

esxi_vserver.jpg

上传系统镜像安装系统,并登录软路由给虚拟服务器分配固定IP,配置好防火墙。

DDNS服务可以部署在服务器上,偷懒的话放路由器上用luci插件,事先准备一个顶级域名然后将域名解析服务器指定到cloudflare之类提供ddns服务的服务商,然后新建一个二级域名用于ddns:

esxi_ddns1.jpg

如果运营商分配了ip v6并且没有抠到只给/64的话可以再添一条AAAA记录然后配置ipv6的DDNS:

ipv6.jpg

也可以利用dhcp v6给虚拟服务器分配单独的ip v6地址,不过国内的ipv6环境一言难尽。

理论上应当避免在路由器上部署太多服务,只需要在路由器上配置端口转发,web服务和acme服务都应当部署在虚拟服务器。不过为了省事也可以放在路由器上,一张泛域名证书路由器的web管理页面和其它服务也可以同时使用:

acme.jpg

这种方案下由路由器的nginx处理tls然后传给虚拟服务器,/conf.d/中添加一个conf:

server {
    listen 443 ssl; # listan 443用于内网访问
    listen [::]:443 ssl; # ipv6支持
    server_name  __; # 虚拟服务器的二级域名
    charset utf-8;
    ssl_protocols TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers "EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:DHE+AESGCM:DHE:!RSA!aNULL:!eNULL:!LOW:!RC4:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!CAMELLIA:!SEED";
    ssl_session_tickets off;

    ssl_certificate /etc/nginx/cert/xxx.com/xxx.com.crt;
    ssl_certificate_key /etc/nginx/cert/xxx.com/xxx.com.key;
    location /{
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto https;
        proxy_redirect off;
        proxy_http_version 1.1;
        proxy_pass http://172.18.1.101; # 虚拟服务器的内网IP
    }
}
server {
    listen 8443 ssl; # 8443用于外网
    listen [::]:8443 ssl; # ipv6支持
    server_name  __; # 虚拟服务器的二级域名
    charset utf-8;
    ssl_protocols TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers "EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:DHE+AESGCM:DHE:!RSA!aNULL:!eNULL:!LOW:!RC4:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!CAMELLIA:!SEED";
    ssl_session_tickets off;

    ssl_certificate /etc/nginx/cert/xxx.com/xxx.com.crt;
    ssl_certificate_key /etc/nginx/cert/xxx.com/xxx.com.key;
    location /{
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto https;
        proxy_redirect off;
        proxy_http_version 1.1;
        proxy_pass http://172.18.1.101; # 虚拟服务器的内网IP
    }
}

最后按需在虚拟服务器上部署需要的环境。由于只是个文件分享服务器,就装了samba和nginx。

同城同运营商5G下载20Mbps左右,大概是因为上行不太给力外加内网有电脑在上传:

download.jpg

优点:

单台物理设备满足所有需求

充分利用带宽(国内某些城市家宽上行给50mbps-100mbps,国外不少地方提供上下行对等的家宽)

具备扩展性,可以增加更多虚机用于内网git服务、本地remoteApp服务

缺点:

无法使用默认的https 443端口(国内运营商屏蔽,需要固定IP+备案才能开通)

需要公网ip v4,CGN大行其道的情况下有些地区和运营商完全不给/小企业商宽才给

家庭服务器方案只适合用户数量有限的场景,比如个人web文件分享、私有app后端,国内在家宽上上行tls流量跑多了容易被运营商盯上。正经的网络服务不建议使用这种方案,aws lightsail之类的低价云服务体验会好很多。

文号 / 915513

万流景仰
名片发私信
学术分 8
总主题 411 帖总回复 4593 楼拥有证书:专家 老干部 学者 机友 笔友
注册于 2009-03-15 21:53最后登录 2024-09-19 22:06
主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:未同步

个人简介

CV

文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

插入资源
全部
图片
视频
音频
附件
全部
未使用
已使用
正在上传
空空如也~
上传中..{{f.progress}}%
处理中..
上传失败,点击重试
等待中...
{{f.name}}
空空如也~
(视频){{r.oname}}
{{selectedResourcesId.indexOf(r.rid) + 1}}
处理中..
处理失败
插入表情
我的表情
共享表情
Emoji
上传
注意事项
最大尺寸100px,超过会被压缩。为保证效果,建议上传前自行处理。
建议上传自己DIY的表情,严禁上传侵权内容。
点击重试等待上传{{s.progress}}%处理中...已上传,正在处理中
空空如也~
处理中...
处理失败
加载中...
草稿箱
加载中...
此处只插入正文,如果要使用草稿中的其余内容,请点击继续创作。
{{fromNow(d.toc)}}
{{getDraftInfo(d)}}
标题:{{d.t}}
内容:{{d.c}}
继续创作
删除插入插入
插入公式
评论控制
加载中...
文号:{{pid}}
加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}
ID: {{user.uid}}