云电脑搭建内网测试环境,隔离公网访问
在云电脑上搭建内网测试环境,核心目标是让测试服务只在内部网络可访问,公网无法直接连接。
适合开发、运维或测试人员临时验证应用,又不想暴露端口到公网。
下面从环境准备、网络隔离、服务安装到验证,一步步说明。
一、先理清云电脑的网络结构
大多数云电脑默认分配一个公网 IP 和一个内网 IP。
内网 IP 用于同账号下多台云电脑互通,公网 IP 用于外部访问。
要实现隔离,关键是让测试服务只监听内网 IP,并在安全组或系统防火墙中拒绝公网访问。
登录云电脑后,用命令确认网卡信息:
ip addr show
输出中 eth0 或 ens33 通常会显示两个地址:公网 IP 和内网 IP。
记下内网 IP,例如 172.16.0.5,后续配置会用到。
二、安装测试服务并限定监听地址
以常见的 Nginx 或 Python HTTP 服务为例,安装时只绑定内网 IP。
Nginx 示例:
安装后编辑配置文件,通常位于 /etc/nginx/conf.d/test.conf 或 /etc/nginx/sites-available/default。
将 listen 指令改为:
listen 172.16.0.5:8080;
保存后重载:
sudo nginx -t && sudo systemctl reload nginx
Python 临时服务示例:
python3 -m http.server 8080 --bind 172.16.0.5
这样服务只接受来自内网 IP 的请求,公网 IP 的 8080 端口不会响应。
三、用安全组和防火墙双重隔离公网
云厂商控制台的安全组是外层防护,系统防火墙是内层防护,建议同时配置。
安全组规则:
登录云控制台,找到该云电脑的安全组,添加入方向规则:
- 协议:TCP
- 端口:8080
- 来源:内网网段,例如
172.16.0.0/12或具体的内网 IP - 动作:允许
同时确保没有针对公网来源的 8080 允许规则。
系统防火墙(以 ufw 为例):
sudo ufw allow from 172.16.0.0/12 to any port 8080
sudo ufw deny 8080
sudo ufw enable
第一条允许内网访问,第二条拒绝其他所有来源。
如果使用 firewalld,可用:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="172.16.0.0/12" port port="8080" protocol="tcp" accept'
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" port port="8080" protocol="tcp" drop'
sudo firewall-cmd --reload
注意: 安全组规则和系统防火墙规则要匹配,避免一个允许一个拒绝导致连接失败。
四、验证隔离效果
验证分两步:内网能通,公网不通。
在内网另一台云电脑上测试:
curl -I http://172.16.0.5:8080
应返回 HTTP/1.1 200 OK 或类似响应。
在公网机器上测试:
curl -I --connect-timeout 5 http://公网IP:8080
应显示连接超时或拒绝连接。
如果公网也能访问,检查安全组是否有允许 0.0.0.0/0 的规则,以及系统防火墙是否未生效。
五、容易踩坑的几个地方
监听地址写成了 0.0.0.0
0.0.0.0 表示监听所有网卡,包括公网 IP。
必须改为具体的内网 IP。
安全组规则顺序不对
部分云平台按优先级匹配,拒绝规则可能被允许规则覆盖。
建议先删除所有允许公网访问的规则,再添加内网允许规则。
内网网段判断错误
不同云厂商的内网网段不同,常见的有 172.16.0.0/12、10.0.0.0/8、192.168.0.0/16。
以控制台显示的内网 IP 和子网掩码为准。
服务重启后监听地址恢复
如果直接修改了运行中的进程,重启后会失效。
务必修改配置文件并设置开机自启。
六、常见疑问
内网测试环境需要额外买公网 IP 吗?
不需要。
云电脑默认有内网 IP,同账号同地域的云电脑可以通过内网互通。
隔离后还能远程管理吗?
可以。
SSH 或远程桌面端口保持对公网开放即可,只隔离测试服务端口。
用 Docker 跑测试服务怎么隔离?
启动容器时用 -p 172.16.0.5:8080:8080 绑定内网 IP,不要用 -p 8080:8080。
如果已经暴露,先停容器,改端口映射后重启。
按以上步骤操作后,你的云电脑测试环境将只在内网可达,公网无法直接连接。
建议每次新增服务时都检查监听地址和安全组规则,避免无意中暴露端口。