外网访问服务器是指通过公共互联网网络,从外部网络环境连接到部署在局域网内的服务器,实现对服务器的远程管理、数据访问或服务调用,这一过程涉及网络配置、安全设置、端口映射等多个环节,需结合服务器操作系统、路由器设备及网络环境进行综合配置,以下是详细步骤和注意事项,帮助顺利完成外网访问服务器的部署。
前期准备工作
在开始配置前,需确认以下基础信息,确保后续操作顺利进行:
- 服务器基本信息:明确服务器的操作系统(如Windows Server、Ubuntu、CentOS等)、内网IP地址(如192.168.1.100)、默认登录账户及密码。
- 网络环境信息:确认路由器的管理地址(如192.168.0.1)、登录账户及密码,以及网络的公网IP地址(可通过在浏览器搜索“IP”获取,或登录路由器管理界面查看)。
- 访问需求:明确外网访问的目的(如远程桌面、Web服务、文件传输等),确定所需开放的端口号(如远程桌面默认3389端口、Web服务默认80/443端口、SSH默认22端口等)。
服务器网络配置
设置服务器静态内网IP
若服务器通过路由器动态获取IP(DHCP),重启后IP可能变化,导致外网映射失效,需将其设置为静态内网IP。
- Windows服务器:
进入“控制面板”→“网络和共享中心”→“更改适配器设置”,右键点击“以太网”→“属性”→“Internet协议版本4(TCP/IPv4)”,选择“使用下面的IP地址”,输入内网IP(如192.168.1.100)、子网掩码(通常255.255.255.0)、默认网关(路由器内网IP,如192.168.0.1)、DNS(可填路由器IP或公共DNS,如8.8.8.8),保存设置。 - Linux服务器(以Ubuntu为例):
编辑网卡配置文件(如/etc/netplan/01-netcfg.yaml
如下:network: version: 2 ethernets: eth0: # 网卡名称,可通过ip a查询 dhcp4: no addresses: [192.168.1.100/24] # 内网IP及子网掩码 gateway4: 192.168.0.1 # 路由器内网IP nameservers: addresses: [8.8.8.8, 114.114.114.114]
执行
netplan apply
使配置生效。
开启服务器远程访问服务
根据访问需求开启对应服务,并确保服务监听内网IP(0.0.0.0表示监听所有IP):
- Windows远程桌面(RDP):右键“此电脑”→“属性”→“远程桌面”,允许远程连接。
- Linux SSH服务:安装OpenSSH(
sudo apt install openssh-server
或sudo yum install openssh-server
),启动服务(sudo systemctl start sshd
),设置开机自启(sudo systemctl enable sshd
)。 - Web服务(如Nginx):安装Nginx后,配置文件中
listen
指令默认监听80/443端口,无需修改(若需监听特定IP,可配置listen 192.168.1.100:80;
)。
路由器端口映射
服务器位于局域网内,外网无法直接通过内网IP访问,需通过路由器的“端口映射”(Port Forwarding)功能,将公网端口的请求转发至服务器的内网IP和端口。
- 登录路由器管理界面:在浏览器输入路由器管理地址(如192.168.0.1),输入账户密码登录(默认信息通常在路由器底部标签)。
- 找到端口映射设置:不同品牌路由器路径可能不同,常见路径为“转发规则”→“虚拟服务器”或“端口映射”。
- 添加映射规则:填写以下参数(以映射Web服务80端口为例):
- 服务名称:自定义(如“Web服务”);
- 外部端口:公网访问端口(可填80,若80端口被占用,可填其他端口如8080);
- 内部IP地址:服务器的内网IP(如192.168.1.100);
- 内部端口:服务器实际监听端口(如80);
- 协议:根据服务选择(TCP/UDP/ALL,Web服务选TCP)。
- 保存并启用规则:部分路由器需重启后生效。
常用端口映射示例:
| 访问服务 | 外部端口 | 内部IP | 内部端口 | 协议 |
|—————-|———-|—————-|———-|——|
| Web(HTTP) | 80 | 192.168.1.100 | 80 | TCP |
| Web(HTTPS) | 443 | 192.168.1.100 | 443 | TCP |
| 远程桌面(RDP)| 3389 | 192.168.1.100 | 3389 | TCP |
| SSH | 22 | 192.168.1.100 | 22 | TCP |
动态IP与DDNS配置
若路由器获取的是动态公网IP(重启后IP可能变化),需通过“动态DNS”(DDNS)将变化的IP绑定到固定域名,方便长期访问。
- 选择DDNS服务商:支持免费或付费服务,如花生壳(Oray)、No-IP、Cloudflare等(以花生壳为例)。
- 注册账号并添加域名:登录DDNS服务商官网,注册账号后添加一个免费域名(如
yourname.vicp.net
)。 - 路由器配置DDNS:登录路由器管理界面,找到“DDNS设置”,填写服务商提供的域名、账户、密码,选择“自动更新IP”,保存后路由器会定期将公网IP更新至DDNS服务器。
安全加固配置
外网访问存在安全风险,需采取以下措施保障服务器安全:
- 修改默认端口:避免使用默认端口(如SSH默认22、RDP默认3389),在服务器和路由器中同时修改为非标准端口(如SSH改为2222),降低被扫描攻击的概率。
- 启用防火墙规则:仅开放必要端口,禁用所有其他端口。
- Windows防火墙:进入“高级安全Windows Defender防火墙”→“入站规则”,新建规则,允许特定端口的TCP/UDP流量。
- Linux防火墙(以firewalld为例):执行
sudo firewall-cmd --permanent --add-port=8080/tcp
开放端口,sudo firewall-cmd --reload
重新加载配置。
- 更换默认登录账户:禁用或重命名默认管理员账户(如root、Administrator),创建新账户并分配权限。
- 使用SSH密钥认证:Linux服务器可通过SSH密钥替代密码登录,提升安全性(生成密钥:
ssh-keygen -t rsa
,上传公钥至服务器:ssh-copy-id -i ~/.ssh/id_rsa.pub user@server_ip
)。 - 设置访问IP白名单:在路由器或服务器防火墙中限制仅允许特定IP访问,拒绝其他所有IP(如仅允许公司公网IP访问RDP端口)。
客户端访问测试
完成配置后,通过外网网络访问服务器:
- 通过公网IP访问:在浏览器输入
http://公网IP:外部端口
(如http://123.45.67.89:8080
),或远程桌面工具输入公网IP+端口(如45.67.89:3389
)。 - 通过DDNS域名访问:若配置了DDNS,输入
http://域名:外部端口
(如http://yourname.vicp.net:8080
)。 - 测试连通性:若无法访问,检查以下问题:
- 公网IP是否正确(可通过
curl ipinfo.io
查询); - 路由器端口映射是否保存并启用;
- 服务器防火墙是否开放对应端口;
- 服务是否正常运行(如Nginx、SSH服务状态)。
- 公网IP是否正确(可通过
常见问题排查
- 连接超时/无法访问:
- 确认公网IP是否正确,若为动态IP需检查DDNS是否更新;
- 检查路由器端口映射规则中“内部IP”是否为服务器内网IP,避免IP冲突;
- 在服务器本地使用
telnet 127.0.0.1 端口
测试服务是否监听正常,若失败需重启服务。
- 访问被拒绝(权限错误):
- 确认客户端输入的用户名密码是否正确,或SSH密钥是否已配置;
- 检查服务器防火墙和路由器是否限制客户端IP(如开启IP白名单后,非白名单IP会被拒绝)。
相关问答FAQs
Q1: 外网访问服务器速度慢怎么办?
A: 速度慢可能由以下原因导致:
- 带宽限制:联系ISP确认公网带宽是否达标,或服务器所在局域网带宽是否拥堵;
- 网络延迟:客户端与服务器地理位置过远,可尝试更换服务器机房或使用CDN加速;
- 防火墙或代理影响:关闭不必要的防火墙规则,或检查中间网络设备(如企业防火墙)是否限制流量;
- 服务器性能瓶颈:检查服务器CPU、内存、磁盘IO使用率,若过高需优化服务或升级硬件。
Q2: 如何防止服务器被外网暴力破解?
A: 可采取以下措施提升安全性:
- 修改默认端口:将SSH、RDP等服务的默认端口改为非标准端口(如2222、3344),减少被扫描的概率;
- 启用登录失败锁定:Linux服务器可通过
pam_tally2
模块配置失败登录次数限制(如5次失败后锁定账户),Windows服务器可通过“本地安全策略”设置“账户锁定阈值”; - 使用密钥认证:关闭SSH密码登录(修改
/etc/ssh/sshd_config
中PasswordAuthentication no
),仅允许密钥登录; - 定期更换密码:为服务器账户设置复杂密码(包含大小写字母、数字、特殊符号),并定期更换;
- 安装安全防护软件:如Fail2ban(Linux)可自动封禁频繁失败IP,Windows服务器可开启“账户保护”功能。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/18515.html