在过去的一周里,我一直试图通过利用从VPS到专用机器的GRE隧道来保护服务器免受DOS攻击,但没有取得太大的成功。
视觉:
User --> VPS --> Dedicated Server
我遵循了几个指南BUYVM和我的世界 DDOS保护 ,并根据需要进行修改。
ip_gre ip_nat_pptp ip_conntrack_pptp
此外,两台机器都启用了ipv4端口转发function。
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 PtP: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)
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 PtP: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)
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地址连接到游戏服务器,但没有成功。
我已经与这一争取了一个多星期的任何帮助将不胜感激。
以上的一切都是正确的
多一点的debugging,我发现游戏服务器的包装守护进程(Multicraft)在为游戏实例设置外部IP时阻塞本地主机连接。
解决方法是将IP设置为0.0.0.0,端口转发完美。

由于我没有看到它在你的文档中,我会假设你忘了启用IP转发。
运行以下命令来validation确实如此:
sysctl net.ipv4.ip_forward
如果IP转发确实被禁用,您应该看到:
net.ipv4.ip_forward = 0
如果这是您的问题,请运行:
sysctl -w net.ipv4.ip_forward=1
可能你的问题是端口没有打开/防火墙阻塞端口。
您可以使用nmap从VPS轻松testing您的专用机器:
nmap -A 10.10.10.2/24 -p 25565
从您的客户端机器以相同的方式到您的外部可访问的机器,但用您的VPS外部地址replace10.10.10.2 。