家庭Ubuntu服务器利用公网IPV6开幻兽帕鲁私服攻略

本文介绍了一个使用Ubuntu22.04Server搭建的家庭服务器,重点在于如何解决游戏《幻兽帕鲁》不支持IPV6的问题,通过Python工具ip64bridge实现在客户端和服务器间进行端口映射,同时涉及防火墙设置和优化服务器性能等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

硬件:一个在淘宝花了1200大洋买的4核CPU :N100 + 32G内存 + 512GNVME盘的小PC盒子

带宽:
在这里插入图片描述
上行有50M肯定够用了

系统:Ubuntu22.04 Server版,自己重装的系统

服务器基本的功能和服务开通可以看我另一篇文章:家庭服务器搭建(包含将动态IPV6绑定到固定域名的流程)

思路

幻兽帕鲁这叼毛游戏居然不支持IPV6连接,就很难受。于是我就在网上找了一堆攻略,基本的思路就是在客户端连接时,填写本机的IPV4+端口,然后用程序把这个端口上的数据都截胡了,再转发到远端服务器的IPV6+端口上,当然反向的数据也是这样转发;在服务端上,将IPV6+端口收到的数据再转发到服务端的0.0.0.0:8211上;通俗来讲就是把客户端(玩家电脑)的8211端口映射到家庭服务器的IPV6端口上(域名:你设置的自定义端口),家庭服务器再将【域名:你设置的自定义端口】映射到【0.0.0.0:8211】上。
网上有很多资料讲windows服务器、windows客户端怎么实现上述端口映射的过程,但是目前好像还没有讲Ubuntu是咋搞的(其他发行版也可以用我这个思路)。
我也是在B站找了个大佬用了他的工具实现的,不过他没详细说明Linux的做法:用了他建议的ip64bridge工具
其中玩家的windows系统还是用他说的这个GUI工具就行了,Ubuntu上用了他的python代码,使用了其中的server.py。

做法

客户端

在这里插入图片描述
按图片设置后connect就行了

服务端


把python包上传到服务器上进入这个目录,方法很多这里就不讲了

cd /home/liuyc/ip64bridge-1.0.0/python
vi sever.py

修改下这个server代码,方便把它做成服务,主要修改了主线程循环的部分。

from UDPbridge import UDPbridge
from TCPbridge import TCPbridge
import socket
import argparse
from multiprocessing import Process
import logging
from info import VERSION
import time

class Server:
    def __init__(self, srcPort=12345, dstPort=7777, udp=True, tcp=True) -> None:
        self.processes = []
        if udp or not tcp:
            bridge = UDPbridge(srcType=socket.AF_INET6, srcPort=srcPort,
                               dstType=socket.AF_INET, dstPort=dstPort, dstAddr="127.0.0.1")
            self.processes.append(Process(target=bridge.run, daemon=True))
        if tcp or not udp:
            bridge = TCPbridge(srcType=socket.AF_INET6, srcPort=srcPort,
                               dstType=socket.AF_INET, dstPort=dstPort, dstAddr="127.0.0.1")
            self.processes.append(Process(target=bridge.run, daemon=True))

    def run(self):
        for process in self.processes:
            process.start()
        while True:
            time.sleep(5) #这里原来是退出的机制,我因为要做成系统服务就不需要退出了,这边直接延迟循环就行,不加延迟会导致CPU占用过高
            continue

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("-s", "--src", type=int, default=54321, help="Public IPv6 port")
    parser.add_argument("-d", "--dst", type=int, default=7777, help="Local server port")
    parser.add_argument("-u", "--udp", action="store_true", help="Enable UDP traffic forwarding")
    parser.add_argument("-t", "--tcp", action="store_true", help="Enable TCP traffic forwarding")
    parser.add_argument("-v", "--version", action='version', version=f"ip64bridge_py {VERSION}")
    args = parser.parse_args()
    logging.basicConfig(level=logging.INFO)
    Server(args.src, args.dst, args.udp, args.tcp).run()

修改成这样保存就OK了。

然后创建这个端口转发的服务
服务里的目录根据自己需求可以修改下

cd /etc/systemd/system
vi port8211forward.service
[Unit]
Description=PortForward ipv6:58211 to 0.0.0.0:8211

[Service]
Type=simple
ExecStart=/usr/bin/python3 /home/liuyc/ip64bridge-1.0.0/python/server.py -s 58211 -d 8211 -u -t
Restart=always

[Install]
WantedBy=multi-user.target

使能下这个服务,出错的话自己定位下故障然后重启服务就行

systemctl enable port8211forward.service
systemctl start port8211forward.service

幻兽帕鲁服务端也做成系统服务

cd /etc/systemd/system
vi palserver.service

幻兽帕鲁的服务端得指定User,就是你安装这个服务端的时候用的什么系统用户就指定谁,这个得关注下,否则会启动失败,其他需要注意的就是改一下目录

[Unit]
Description=PalServer Service
After=network.target

[Service]
Type=simple
ExecStart=/home/liuyc/Steam/steamapps/common/PalServer/PalServer.sh
WorkingDirectory=/home/liuyc/Steam/steamapps/common/PalServer/
User=liuyc

[Install]
WantedBy=multi-user.target

使能下这个服务,出错的话自己定位下故障然后重启服务就行

systemctl enable palserver.service
systemctl start palserver.service

这两个服务正常启动是这样的:
在这里插入图片描述
在这里插入图片描述

别忘了加防火墙,不然你家要被黑客干了

我用的是firewall-cmd,具体好不好用实际上我没测过,不过我感觉应该还行

设置内网白名单,并且开放你自定义的端口,我这里是58211,规则永久生效

sudo firewall-cmd --zone=public --add-port=58211/tcp --add-port=58211/udp --permanent
sudo firewall-cmd --zone=public --add-source=192.168.3.30 --permanent
sudo firewall-cmd --reload

设置完之后可以查一下有没有成功设置

firewall-cmd --list-all

在这里插入图片描述
这个防火墙我也不太熟,你们还是再测下看看外网访问除了这几个端口是不是真的都关了。

最后可以愉快的玩耍了,记得邀请小伙伴(小伙伴也得先把自己电脑的IPV6开启哦)一起哦

在这里插入图片描述
填本机8211端口就行了
在这里插入图片描述
实际服务器占用:
在这里插入图片描述
缓存有点多,我设置了每小时清一次缓存,具体效果不知道,可能会影响性能吧,这个清缓存的攻略大家自己搜一下吧,我就不写了,拜拜~

Ubuntu是一个流行的Linux发行版,常用于服务器环境。搭建“帕鲁服务器通常是指在Ubuntu上安装和配置一个名为“Phantasy Star Online 2”的大型多人在线角色扮演游戏(MMORPG)的游戏服务器。以下是简要步骤: 1. **更新系统**: 首先,确保您的Ubuntu系统是最新的: ```bash sudo apt update && sudo apt upgrade ``` 2. **安装必要的软件包**: 安装游戏服务器相关的软件,如Web服务器(Apache或Nginx)、数据库(MySQL或PostgreSQL)以及游戏客户端支持(如果需要): ```bash sudo apt install apache2 mysql-server php libapache2-mod-php php-mysql ``` 3. **下载并解压游戏文件**: 在官方网站或其他可信源获取游戏服务器文件,并将其解压缩到合适的位置。 4. **设置游戏目录权限**: 确保游戏文件夹拥有适当的权限,以便用户可以访问: ```bash sudo chmod -R 755 /path/to/game/folder ``` 5. **配置游戏服务**: 如果是官方提供的指南,按照指引配置启动脚本、配置文件等,可能涉及修改Apache或PHP-FPM配置以指向游戏资源。 6. **数据库配置**: 创建数据库和用户,并将游戏配置文件中的数据库连接信息填写正确。 7. **防火墙设置**: 可能需要打相应的端口以允许外部连接,例如80(HTTP)和3306(MySQL): ```bash sudo ufw allow <port numbers> sudo ufw reload ``` 8. **测试服务**: 启动服务并检查是否能通过浏览器访问游戏页面,查看日志以确认配置是否正确。 9. **持续监控和维护**: 安装监控工具,定期检查性能和安全性,并根据需要调整设置。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值