基于Samba+WireGuard的远程Galgame游玩方案
概览
我们的目标很简单:
- 远程连接主机
- 访问文件系统
由于Samba要求内网环境访问,在学校里无法直接把服务器的硬盘当作本地硬盘(当然,filebrowser等NAS工具依旧可以使用)。
本文假设读者已经有一个远程 Linux 服务器并能够进行 ssh 通信,且主机有一块数据硬盘。
注意 : 我的服务器仅支持 ipv6 ,以下配置均基于 ipv6 进行。
Samba 配置
安装
运行:
1 | sudo apt install samba |
这个命令安装并让 samba 自启。
挂载
使用以下命令查看磁盘:
1 | lsblk |
会看到类似:
1 | sda 4T |
我们在 root 创建一个文件夹
1 | sudo mkdir -p /data/hdd1 |
挂载
1 | sudo mount /dev/sda1 /data/hdd1 |
以上是挂载一块硬盘的示例,挂载更多的硬盘步骤类似。这一步之后我们就能够访问 /data/hdd1 来访问硬盘的数据了。
配置
首先将 samba 与用户绑定。假设主机的用户名是 tomori ,那么执行:
1 | sudo smbpasswd -a tomori |
samba 的配置文件位于 /etc/samba/smb.conf 。使用 vim 进入配置文件,在末尾添加:
1 | [HDD1] |
其中, [HDD1] 表示访问时看到的硬盘名称, path 用于指定共享的文件夹(可以共享其他文件夹), valid users 表示允许的用户。
访问
假设在内网环境,那么直接在资源管理器输入服务器 ip ,输入服务器主机的用户名和密码即可访问。
到这一步为止,已经可以在内网运行服务器的galgame了。
WireGuard 配置
由于 Samba 仅在内网可以访问,我们需要一个隧道访问内网。
服务端
首先在服务端配置 WireGuard 。 运行:
1 | sudo apt install wireguard |
配置文件位于 /etc/wireguard ,首先生成一个密钥
1 | cd /etc/wireguard |
查看并记住服务端的密钥:
1 | sudo cat privatekey |
来到配置文件:
1 | sudo vim /etc/wireguard/wg0.conf |
粘贴以下内容:
1 | [Interface] |
Interface 是服务端的配置。
Address = fd00:1::1/64表示代理服务器 ipv6 内网PostUp, PostDown建议直接照抄,我也不知道什么意思。但 需要配置网卡, 注意其中的-o参数,后面需要添加本机网卡。可以使用ifconfig命令查看,可能会列出多个网卡,找带有公网 ipv6 的那个 (类似inet6 2409:xxxxx prefixlen 128 scopeid 0x0<global>)ListenPort是监听端口,需要确保没有防火墙阻挡。
客户端
下载安装 WireGuard 并新建空隧道。可以看到:

记住客户端的密钥,并编辑配置文件:
1 | [Interface] |
配置好了,就可以开始访问了。在资源管理器中通过以下链接访问服务器共享的文件夹:
1 | \\fd00-1--1.ipv6-literal.net |

为了让其 acts like local driver ,需要右键 -> 映射网络驱动器。接着就可以在远程游玩服务器的galgame了~
注意: 由于运行远程的 exectable 需要将其 requirement 加载在内存,因此游戏体验受网络影响,尤其是刚启动时较为耗时。

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Alphazer01214’s Blog!