银河麒麟需通过端口映射、防火墙放行、SMB安全加固及DDNS配置实现外网访问内网Samba共享:开放137/udp、138/udp、139/tcp、445/tcp端口,路由器NAT映射至主机IP,禁用SMBv1并强制用户认证,配合公网IP或DDNS域名访问。

银河麒麟怎么配置外网访问内网Samba共享
要在公网环境下通过互联网访问部署在银河麒麟系统上的内网Samba共享文件夹,必须在保障安全的前提下打通网络路径、暴露服务端口并完成协议级适配,不能仅依赖局域网内的smb://直连方式。
确认Samba服务已在内网正常运行
先确保Samba共享本身在局域网内已可稳定访问:打开终端执行 sudo systemctl status smbd,输出中需含 active (running);再用本地文件管理器输入 smb://127.0.0.1 回车,能列出共享名即表示服务就绪。若失败,说明外网配置无意义,必须先解决内网基础问题。
检查防火墙是否放行关键端口:银河麒麟默认使用ufw,运行 sudo ufw status verbose,确认 137/udp、138/udp、139/tcp、445/tcp 四个端口状态为 ALLOW。若未开放,逐条执行:sudo ufw allow 137/udp、sudo ufw allow 138/udp、sudo ufw allow 139/tcp、sudo ufw allow 445/tcp。
配置路由器端口映射(NAT)
登录家用或企业路由器管理界面(通常地址为 192.168.1.1 或 192.168.0.1),进入【高级设置】→【NAT转发】或【虚拟服务器】页面。
添加四条映射规则,全部指向银河麒麟主机的局域网IP(例如 192.168.1.105):
① 外部端口 137 → 内部端口 137,协议选 UDP;
② 外部端口 138 → 内部端口 138,协议选 UDP;
③ 外部端口 139 → 内部端口 139,协议选 TCP;
④ 外部端口 445 → 内部端口 445,协议选 TCP。
注意:部分运营商封锁了445端口,若外网始终无法连接,可尝试将外部445映射为其他高位端口(如5445),但客户端访问时必须显式指定端口,例如 smb://your-public-ip:5445 —— 此操作需同步修改银河麒麟上 /etc/samba/smb.conf 中的 bind interfaces only = yes 及 interfaces = lo eth0,并重启服务。
加固Samba全局安全策略
直接暴露Samba到公网存在高风险,必须禁用游客访问、强制用户认证,并限制协议版本。用 sudo nano /etc/samba/smb.conf 编辑主配置,在 [global] 段末尾追加:
security = user
map to guest = never
min protocol = SMB2
max protocol = SMB3
server min protocol = SMB2
server max protocol = SMB3
这几项能有效阻止老旧SMBv1协议带来的永恒之蓝类漏洞利用。保存后务必运行 testparm -s 验证语法,无报错再执行 sudo systemctl restart smbd nmbd。
获取并验证公网IP与域名(可选但推荐)
在银河麒麟终端中执行 curl ifconfig.me 获取当前公网IPv4地址。若该IP为动态分配(绝大多数家庭宽带),必须注册DDNS服务:访问花生壳、No-IP或阿里云DDNS平台,创建免费二级域名(如 kylinshare.ddns.net),并按其文档在路由器或银河麒麟本机部署更新脚本。
验证域名解析是否生效:在另一台外网设备(如手机4G网络)上执行 ping kylinshare.ddns.net,返回的IP应与 curl ifconfig.me 一致。不一致则DNS未刷新,需等待或手动触发更新。
外网客户端访问方式
方法一(Windows):打开【此电脑】→【映射网络驱动器】→文件夹栏输入 \your-public-ipsharename(如 \203.123.45.67kylinshare),勾选“登录时重新连接”,点击完成;弹出窗口中输入银河麒麟上已配置的Samba用户名和密码(非系统登录密码)。
方法二(macOS/Linux):在文件管理器地址栏输入 smb://your-public-ip/sharename 回车;若提示连接失败且确认端口映射无误,大概率是运营商屏蔽了445端口,此时改用 smb://your-public-ip:5445/sharename 并确保服务端已绑定该端口。
方法三(命令行验证):在外网Linux机器执行 smbclient -L //your-public-ip -U username,输入密码后若能列出共享列表,证明通路已通。

















