我目前所做的:

我目前所做的:

过去一周,我一直尝试利用从 VPS 到专用机器的 GRE 隧道来保护服务器免受 DOS 攻击,但没有取得多大成功。

视觉的:

User --> VPS --> Dedicated Server

我遵循了几个指南购买VMMinecraft DDOS 保护并根据需要进行修改。

我目前所做的:

两台机器都加载了以下内核模块

ip_gre
ip_nat_pptp
ip_conntrack_pptp

此外,两台机器都启用了 IPv4 端口转发。

在专用机器上设置 GRE:

ip tunnel add veridian mode gre remote VPS_EXTERN_IP local DEDICATED_EXTERN_IP ttl 255
ip link set veridian up
ip addr add 10.10.10.1/24 dev veridian

这将产生界面:

veridian  Link encap:UNSPEC  HWaddr 3F-8D-F2-FA-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.10.10.1  P-t-P:10.10.10.1  Mask:255.255.255.0
          inet6 addr: fe80::200:5efe:3f8d:f2fa/64 Scope:Link
          UP POINTOPOINT RUNNING NOARP  MTU:1476  Metric:1
          RX packets:4016 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3970 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:338404 (338.4 KB)  TX bytes:359357 (359.3 KB)

在 VPS 上设置 GRE

ip tunnel add gre1 mode gre remote DEDICATED_EXTERN_IP local VPS_EXTERN_IP ttl 255
ip link set gre1 up
ip addr add 10.10.10.2/24 dev gre1

这将产生界面:

gre1      Link encap:UNSPEC  HWaddr 68-83-98-C8-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.10.10.2  P-t-P:10.10.10.2  Mask:255.255.255.0
          inet6 addr: fe80::200:5efe:6883:98c8/64 Scope:Link
          UP POINTOPOINT RUNNING NOARP  MTU:1476  Metric:1
          RX packets:3743 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3811 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:314188 (314.1 KB)  TX bytes:335587 (335.5 KB)

将 VPS 接口 IP 添加到专用服务器上的源路由表:

echo '100 VERIDIAN' >> /etc/iproute2/rt_tables
ip rule add from 10.10.10.0/24 table VERIDIAN
ip route add default via 10.10.10.2 table VERIDIAN

什么有效

从这里我可以从 VPS 成功 ping 专用服务器

ping 10.10.10.1

反之亦然

ping 10.10.10.2

此外,当我在 VPS 上设置 NAT 条目时

iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -j SNAT --to-source VPS_EXTERN_IP

我可以通过运行以下命令从专用服务器成功检索 VPS 的外部 IP:

curl http://www.cpanel.net/showip.cgi --interface 10.10.10.1

不起作用的方法——端口转发

我现在在 VPS 上运行:

iptables -t nat -A PREROUTING -p tcp -d VPS_EXTERN_IP --dport 25565 -j DNAT --to-destination 10.10.10.1:25565

iptables -A FORWARD -p tcp -d 10.10.10.1 --dport 25565 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

我现在尝试通过 VPS 的外部 IP 地址连接到游戏服务器,但没有成功。

我已经与此斗争了一个多星期,任何帮助都将不胜感激。

更新

以上所有内容均正确。

经过更多的调试,我发现当为游戏实例设置外部 IP 时,游戏服务器的包装器守护进程(Multicraft)会阻止本地主机连接。

解决方案是将 IP 设置为 0.0.0.0,端口转发即可完美运行。

多工艺

答案1

由于我在您显示的文档中没有看到它,所以我假设您忘记启用 IP 转发。

运行以下命令来验证确实如此:

sysctl net.ipv4.ip_forward

如果 IP 转发确实被禁用,您应该看到:

net.ipv4.ip_forward = 0

如果这是您的问题,请运行:

sysctl -w net.ipv4.ip_forward=1

您的问题可能是端口未打开/防火墙阻止了端口。
您可以使用 nmap 轻松地从 VPS 到专用机器进行测试:

nmap -A 10.10.10.2/24 -p 25565

并以相同的方式从您的客户端机器到您的外部可访问的机器,但10.10.10.2用您的 VPS 外部地址替换。

相关内容