新来的穷人,送不起福利,发个昨天刚跑通的内网建站流程吧

新来的穷人,送不起福利,发个昨天刚跑通的内网建站流程吧
新来的穷人,送不起福利,发个昨天刚跑通的内网建站流程吧

概述

通过端口映射,让外网可以访问本地网站。因为家庭宽带封禁了80和443端口,所以,我们通过映射高位端口,让外网带端口访问本地内网的网站。例如:https://test.example.com:18443。

必须有公网IP,没有公网IP的去研究怎么获取公网IP,或者考虑买服务器搭建Frp内网穿透。

Tip:获取公网IP的一个小技巧。
找到你的光猫或者路由器拨号界面,在账号后面加上@e试试。
例如我的山东泰安联通,正常的账号是:053801111110,改成053801111110@e。然后重启或重连。没加之前,获取的IP是大内网,加了@e获取的一直是公网IP。

服务器搭建

就当你的80和443没被封禁,正常搭建即可。
我使用的是VMware Fusion13 + Debian12 + 宝塔面板10.0.2-LTS,当前时间:2026.06.10

虚拟机设置

除了网卡设置,其他根据自己的需求设置即可。网卡必须选桥接,如果使用自动检测的话,需要在路由器DHCP服务中绑定Mac地址,防止重启以后IP变化。 推荐使用以太网,装完Debian系统或者其他什么系统以后,设置静态IP。不过要注意,路由器DHCP服务中,要空出这个IP段。例如我在路由器里设置DHCP服务的IP分配范围为:192.168.1.100至192.168.1.254,这样一来,我就可以给虚拟机设置192.168.1.2至192.168.1.99的任意一个IP了,避免了产生IP冲突。

VMware Fusion虚拟机的坑:
实测发现,当路由器重启以后,必须断开虚拟机网卡,接着再连接。否则会出现虚拟机内的系统无法联网的情况。我不确定这是不是个例,反复测试了很多次,每次都这样。用几个AI分析了半晚上,也没分析出个靠谱的原因和解决方案。

宝塔面板设置

我主要用来做WordPress开发,每个单子都得搭建一个示例网站。之前用的Frp内网穿透,用的阿里云流量后付费的服务器。以前免费20G的流量够用,现在每天几十块的流量费用,顶不住了,所以才决定用域名:端口的方式。

宝塔正常使用,跟阿里云、腾讯云上的区别不大。唯二的区别如下,也是必须要设置的。

1、Nginx转发给PHP的$host必须带端口。

编辑:/www/server/nginx/conf/fastcgi.conf,在其中找到下面的代码:

fastcgi_param  HTTP_HOST          $host;

改成下面的代码:

fastcgi_param  HTTP_HOST          $http_host;

不修改这里的话,Nginx传递给PHP的域名会丢失端口,导致重定向次数过多,从而无法访问。

尤其是WordPress,这里不设置的话,访问带端口的域名,会自动跳转到不带端口的域名,导致无法访问。

2、SSL证书问题。

我习惯演示站也加上SSL证书,不用也可以,直接使用http而不是https访问,也可以的。

需要使用SSL证书,推荐使用DNS验证,文件验证的话,估计要把80端口也映射出去,我没测试,有兴趣的朋友可以自己研究一下。

我用的是DNSPodDns,各位根据自己的情况自行修改。实在不行可以选择手动解析。

还有一点,强制HTTPS我没测试,不知道会不会有影响。有兴趣的朋友可以跑通以后,返回来测试一下看看。

路由器设置

主要有2个点:端口转发、Dnsmasq。

端口转发

这个不用多说,必须要的。例如我设置了18080映射到内网服务器192.168.1.980端口。设置了18443映射到内网服务器192.168.1.9443端口。

使用方法:

例如你在宝塔里面添加的网站域名是:test.example.com。如果你没有配置SSL证书,那么就访问:http://test.example.com:18080。如果配置好了SSL证书,就访问:https://test.example.com:18443

Dnsmasq

这里不设置的话,同网段的机器同时访问内网的多个网站,只有一个能打开。其他的会提示重定向次数过多,导致无法打开。具体原因是路由规则之类的东西,不太懂。

路由器没有Dnsmasq功能的朋友,可以问问AI用其他什么方法代替。我发现设置Dnsmasq其实就相当于设置系统hosts,直接给域名指定了IP。没有Dnsmasq以及可替代方案的,可以考虑试试改hosts文件。

安装DDNS更新工具

因为家庭宽带在路由器重启以后,公网IP可能会变化。所以在服务器上装一个自动更新域名解析的工具,不然网站很多的话,手动解析太耽误工夫了。

这里选择的是:https://github.com/jeessy2/ddns-go/

我用的是Debian系统,登录服务器以后,使用su -进入root权限,按照下面的命令进行安装。

mkdir -p /opt/ddns-go
cd /opt/ddns-go

wget -O ddns-go.tar.gz \
https://github.com/jeessy2/ddns-go/releases/download/v6.17.1/ddns-go_6.17.1_linux_x86_64.tar.gz

tar -zxvf ddns-go.tar.gz
chmod +x ddns-go

# 安装为系统服务
cd /opt/ddns-go
./ddns-go -s install

打开ddns-go的管理地址:http://服务器内网IP:9876,如果无法访问,在宝塔的安全页面里,放行9876端口。

如果虚拟机内的服务器无法访问GitHub,可以使用物理机的代理。例如:

https_proxy=http://192.168.1.107:7890 \
wget -O ddns-go.tar.gz \
https://github.com/jeessy2/ddns-go/releases/download/v6.17.1/ddns-go_6.17.1_linux_x86_64.tar.gz

第一次访问要设置账号密码。设置完成以后登录,选择你域名所在的服务商,获取并填入凭证。最后设置要解析的域名即可。

ddns-go的功能还是很强大的,通配符、自定义参数都支持,有兴趣的朋友自行研究。

其他踩过的坑

1、代理导致的Dnsmasq或hosts失效

Clash Verge为例,打开系统代理的设置界面,取消“始终使用默认绕过”,然后在“代理绕过设置”里面添加你的域名,支持*通配符。示例图如下:

QQ20260610-171444

这样就解决了本机无法访问虚拟机上的多个网站的问题。

2、虚拟机无法联网

我遇到的问题是虚拟机内的Debian系统,在路由器重启以后,无法联网,连网关都 ping不通。重启虚拟机里的系统也不行。查了很多资料,有的说是物理机休眠、睡眠唤醒以后出现这个问题。

我这边发现的唯一办法就是手动断开虚拟机的网卡,再启用,就可以了。AI倒是给了几个自动化脚本,不过我测试了两个,不起作用。我主要是开发用,所以。。。懒得深入研究了。

1 个帖子 - 1 位参与者

阅读完整话题

来源: LinuxDo 最新话题查看原文