Google Cloud VM通过OpenVPN将minecraft流量转发到一个客户端,而不是另一个

吴镇宇|

可从以下问题获得背景信息:如何使Google Cloud VM将Minecraft流量转发到OpenVPN客户端?

我目前有一个以“ tap”模式设置的OpenVPN网络,其中Google VM作为服务器,而运行Minecraft服务器的Raspberry Pi 3客户端。我想通过将Pi 3替换为新的openVPN客户端来将其替换为Pi 4。

我成功地为所有机器设置了openVPN配置,Pi 4可以ping通云虚拟机和其他客户端,反之亦然。

为了从Pi 3转到Pi 4,我执行了以下命令:

# iptables -F
# iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 25565 -j DNAT --to-destination 10.8.0.6:25565
# iptables -A FORWARD -p tcp -d 10.8.0.6 --dport 25565 -j ACCEPT
# iptables -A POSTROUTING -t nat -s 10.8.0.6 -o eth0 -j MASQUERADE
# iptables -t nat -A POSTROUTING -d 10.8.0.6 -o tap0 -j MASQUERADE

请注意,Pi 3的本地IP是10.8.0.3,而Pi 4的是10.8.0.6

我使用保存设置iptables-save并重新启动。但是,nmap将端口25565显示为VM的“关闭”状态,并且我无法连接Minecraft客户端。

当我重做上述步骤10.8.0.3而不是10.8.0.6并使用Pi 4的Pi 3配置文件时,就可以连接了。

这是输出iptables-save

# Generated by iptables-save v1.6.0 on Sun Dec  1 08:08:18 2019
*filter
:INPUT ACCEPT [269:342903]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [246:49036]
-A FORWARD -d 10.8.0.6/32 -p tcp -m tcp --dport 25565 -j ACCEPT
COMMIT
# Completed on Sun Dec  1 08:08:18 2019
# Generated by iptables-save v1.6.0 on Sun Dec  1 08:08:18 2019
*nat
:PREROUTING ACCEPT [26:6833]
:INPUT ACCEPT [7:482]
:OUTPUT ACCEPT [22:1420]
:POSTROUTING ACCEPT [22:1420]
-A PREROUTING -i eth0 -p tcp -m tcp --dport 25565 -j DNAT --to-destination 10.8.0.3:25565
-A PREROUTING -i eth0 -p tcp -m tcp --dport 25565 -j DNAT --to-destination 10.8.0.6:25565
-A POSTROUTING -s 10.8.0.3/32 -o eth0 -j MASQUERADE
-A POSTROUTING -d 10.8.0.3/32 -o tap0 -j MASQUERADE
-A POSTROUTING -s 10.8.0.6/32 -o eth0 -j MASQUERADE
-A POSTROUTING -d 10.8.0.6/32 -o tap0 -j MASQUERADE
COMMIT
# Completed on Sun Dec  1 08:08:18 2019

diff 除了私钥和时间戳之外,这两个配置文件中的:

216c216
<                 DNS:rpi4
---
>                 DNS:picraft
汤姆·颜

因为您尚未刷新nat表,并且由于DNAT规则的匹配部分相同,所以前面附加的规则(--to-destination 10.8.0.3:25565)将生效,而后面附加的规则()将被--to-destination 10.8.0.6:25565忽略。

因此,也不仅仅是iptables -F-t filter),而且iptables -F -t nat(或iptables-restore来自/usr/share/iptables/empty-filter.rules/usr/share/iptables/empty-nat.rules)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将Google Cloud功能从一个项目迁移到GCP中的另一个项目?

将 Google Cloud Platform 项目从一个帐户移动到另一个帐户

如何通过Python将Google Cloud Storage中的文件从一个存储桶移动到另一个存储桶

Google Cloud DNS-如何将子域指向另一个实例(也在Google Cloud上)

将Google Cloud Storage存储桶移至另一个项目

您能否将一个项目从一个Google Cloud Platform组织转移到另一个组织

Google Cloud Platform中另一个用户的IAM权限重复

另一个路径中的 Google Cloud Build 挂载卷

实体的属性可以是Google Cloud Datastore中的另一个实体吗?

从另一个应用程序/项目访问Google Cloud Datastore

Google Cloud Endpoints-在资源获取器中返回另一个资源

Google Cloud单节点文件服务器添加另一个磁盘

使用Apache Airflow将文件从一个Google Cloud Storage Bucket复制到另一个文件

使用 Django 将目录从 Google Cloud Storage Bucket 递归复制到另一个 Google Cloud Storage Bucket

使用另一个具有虚拟机的 Google Cloud (gcp) 帐户从 Google Cloud (gcp) 帐户访问 Postgres SQL Server

我可以运行Docker容器以在另一个Google Cloud Build步骤中使用吗?

如何在Google Cloud Datalab的另一个笔记本中执行python笔记本

如何从另一个节点事件触发的onWrite函数中到达Google Cloud Function中的特定节点?

使用Google Cloud Dataflow从一个数据存储读取数据并写入另一个数据

在Google Cloud Platform上运行一个Docker容器

Google Cloud上的每个WordPress实例都需要一个VM实例吗?

Google Cloud Storage客户端

Virtualbox使用1个VM通过另一个VM(跳转VM)通过HostOnly Net ping Google

通过Google Cloud Build步骤创建一个zip存档,将其作为工件发布

制作一个将文本转换为音频的网站 [Google Cloud Text to Speech API]

如何将 Google Cloud OCR 计算限制在一个区域内

如何创建一个从 Cloud Storage 返回对象列表的 Google Cloud Function

gRPC / proto Google Cloud客户端库与GAPIC Google Cloud客户端库

iptables将发往一个ip的流量转发到另一个ip