Step 4: 配置网络访问
配置防火墙和网络,让客户端可以访问服务器。
配置防火墙
Windows 防火墙
方法 1: 使用命令行(推荐)
以管理员身份运行 PowerShell:
powershell
# 添加防火墙规则
netsh advfirewall firewall add rule name="AI Automation Server" dir=in action=allow protocol=TCP localport=5000
# 查看规则
netsh advfirewall firewall show rule name="AI Automation Server"方法 2: 使用图形界面
- 打开"Windows Defender 防火墙"
- 点击"高级设置"
- 选择"入站规则" → "新建规则"
- 选择"端口" → 下一步
- 选择"TCP",输入端口
5000→ 下一步 - 选择"允许连接" → 下一步
- 全部勾选 → 下一步
- 输入名称"AI Automation Server" → 完成
临时关闭防火墙测试(不推荐)
powershell
# 关闭防火墙(仅用于测试)
netsh advfirewall set allprofiles state off
# 重新开启
netsh advfirewall set allprofiles state onLinux 防火墙
Ubuntu/Debian (ufw)
bash
# 允许 5000 端口
sudo ufw allow 5000/tcp
# 查看状态
sudo ufw status
# 如果防火墙未启用
sudo ufw enableCentOS/RHEL (firewalld)
bash
# 允许 5000 端口
sudo firewall-cmd --permanent --add-port=5000/tcp
# 重新加载
sudo firewall-cmd --reload
# 查看端口
sudo firewall-cmd --list-portsiptables
bash
# 允许 5000 端口
sudo iptables -A INPUT -p tcp --dport 5000 -j ACCEPT
# 保存规则
sudo iptables-save > /etc/iptables/rules.v4macOS 防火墙
macOS 默认防火墙不会阻止出站连接,通常不需要额外配置。
如果需要配置:
- 打开"系统偏好设置" → "安全性与隐私"
- 点击"防火墙"选项卡
- 点击"防火墙选项"
- 添加 Python 应用程序到允许列表
测试网络连通性
从服务器本地测试
bash
# 测试本地访问
curl http://localhost:5000/health
# 测试局域网访问
curl http://192.168.1.100:5000/health # 替换为实际 IP从客户端测试
在客户端机器上:
bash
# 测试网络连通性
ping 192.168.1.100 # 替换为服务器 IP
# 测试端口是否开放
# Windows
Test-NetConnection -ComputerName 192.168.1.100 -Port 5000
# Linux/macOS
telnet 192.168.1.100 5000
# 或
nc -zv 192.168.1.100 5000
# 测试 HTTP 访问
curl http://192.168.1.100:5000/health配置静态 IP(可选但推荐)
为服务器配置静态 IP,避免 IP 变化导致客户端无法连接。
Windows
- 打开"网络和共享中心"
- 点击当前网络连接
- 点击"属性"
- 选择"Internet 协议版本 4 (TCP/IPv4)"
- 点击"属性"
- 选择"使用下面的 IP 地址"
- 输入:
- IP 地址:
192.168.1.100(根据实际情况) - 子网掩码:
255.255.255.0 - 默认网关:
192.168.1.1(路由器 IP) - DNS 服务器:
8.8.8.8
- IP 地址:
Linux
编辑网络配置文件:
Ubuntu 18.04+ (netplan)
编辑 /etc/netplan/01-netcfg.yaml:
yaml
network:
version: 2
ethernets:
eth0: # 网卡名称
dhcp4: no
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]应用配置:
bash
sudo netplan applyCentOS/RHEL
编辑 /etc/sysconfig/network-scripts/ifcfg-eth0:
ini
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8重启网络:
bash
sudo systemctl restart networkmacOS
- 打开"系统偏好设置" → "网络"
- 选择当前网络连接
- 点击"高级"
- 选择"TCP/IP"选项卡
- 配置 IPv4:手动
- 输入 IP 地址、子网掩码、路由器地址
配置路由器端口转发(可选)
如果需要从外网访问(不推荐,有安全风险):
- 登录路由器管理界面(通常是
192.168.1.1) - 找到"端口转发"或"虚拟服务器"设置
- 添加规则:
- 外部端口:5000
- 内部 IP:192.168.1.100
- 内部端口:5000
- 协议:TCP
安全警告
不建议将服务器暴露到公网,除非:
- 添加了身份验证
- 使用了 HTTPS
- 配置了访问限制
添加 API 认证(推荐)
为服务器添加简单的 API Key 认证:
修改 server.py:
python
API_KEY = 'your-secret-key-here' # 修改为强密码
@app.before_request
def check_auth():
# 跳过健康检查和首页
if request.path in ['/', '/health']:
return
# 检查 API Key
api_key = request.headers.get('X-API-Key')
if api_key != API_KEY:
return jsonify({'error': 'Unauthorized'}), 401客户端请求时需要添加 Header:
python
headers = {'X-API-Key': 'your-secret-key-here'}
response = requests.post(url, json=data, headers=headers)故障排查
无法访问服务器
检查服务器是否运行
bash# 查看进程 ps aux | grep server.py # Linux/macOS tasklist | findstr python # Windows检查端口是否监听
bash# Linux/macOS netstat -tuln | grep 5000 lsof -i :5000 # Windows netstat -ano | findstr 5000检查防火墙
bash# 临时关闭防火墙测试 # Windows netsh advfirewall set allprofiles state off # Linux sudo ufw disable检查 IP 地址
bash# 确认服务器 IP ipconfig # Windows ifconfig # Linux/macOS
连接超时
- 检查网络连通性:
ping 服务器IP - 检查是否在同一局域网
- 检查路由器设置
403/401 错误
检查 API Key 是否正确配置。
检查清单
完成本步骤后,确认以下内容:
- [ ] 防火墙已配置,允许 5000 端口
- [ ] 可以从服务器本地访问 API
- [ ] 可以从客户端 ping 通服务器
- [ ] 可以从客户端访问服务器 API
- [ ] (可选)已配置静态 IP
- [ ] (可选)已添加 API 认证
下一步
网络配置完成后,继续 Step 5: 部署客户端