什么是GRE隧道?
类似于代理,GRE隧道使您可以将来自VPS的流量(包括DDoS过滤)传递到另一个远程目标。GRE隧道允许所有流量通过,而不仅仅是HTTP。借助GRE隧道,您可以提供服务,并从任何类型的服务器(音频,FTP,SSH,SCP,视频等)传递任何类型的内容。
可以使用GRE隧道做什么?
当您想使用我们的DDoS过滤服务来保护太大的服务(例如游戏服务器,Java应用程序,大型数据库驱动的应用程序等)时,GRE隧道非常方便。没有对目标服务器的root访问权,或者正在运行大型Windows部署?查看我们将流量重定向牵引到您的远程服务器的替代方法。
注意:如果您正在隧道连接到OVH服务器,则您的内核很可能没有GRE支持。您将需要使用IPIP隧道。
支持的操作系统
可以使用Windows创建和转发GRE隧道
在本文档中,我们仅介绍Linux的GRE隧道配置。
本指南在KVM或者OpenVZ的服务器上都可以起作用
前提
- BuyVM VPS上安装的iptables(大多数情况下已包括在内)
- iproute2(几乎所有最新的Linux发行版中都包含)
- 具有GRE支持的内核(Linux默认包含该组件-ip_gre内核模块)
- 您需要转发到目的地的端口列表
隧道设置
首先,我们需要建立隧道。
在BuyVM VPS上,请执行以下命令:
echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf sysctl -p iptunnel add gre1 mode gre local YOUR_UNFILTERED_IP remote DESTINATION_SERVER_IP ttl 255 ip addr add 192.168.168.1/30 dev gre1 ip link set gre1 up
在要保护的远程服务器上,运行以下命令:
iptunnel add gre1 mode gre local DESTINATION_SERVER_IP remote YOUR_UNFILTERED_IP ttl 255 ip addr add 192.168.168.2/30 dev gre1 ip link set gre1 up
您将始终希望使用所有GRE隧道的未过滤 IP地址来形成GRE,以确保您不会遇到任何类型的MTU问题或触发DDOS保护。
请注意每个更改的第一行,以标记要在本地和远程使用的IP。第二行记录每个端点。在/ 30中,可以使用2个IP:.1和.2。
使用Ping测试您的新GRE隧道
在VPS上,您现在应该可以ping了192.168.168.2
。
为了完整起见,请192.168.168.1
从目标服务器测试ping 。
设置源路由表
需要源路由条目,以确保通过GRE隧道传入的数据被发回GRE隧道。
请在目标服务器上执行以下命令。
echo '100 BUYVM' >> /etc/iproute2/rt_tables ip rule add from 192.168.168.0/30 table BUYVM ip route add default via 192.168.168.1 table BUYVM
请注意,echo命令只需要运行一次。该条目将保存到/ etc / iproute2 / rt_tables中,直到您手动将其删除。
初始NAT条目以通过GRE隧道移动数据
NAT用于通过GRE将数据传递到另一端。
虽然可以使用已购买的/ 29分配的基于KVM的VPS,但本指南不涵盖此内容。
在VPS上,运行以下命令:
iptables -t nat -A POSTROUTING -s 192.168.168.0/30 ! -o gre+ -j SNAT --to-source 源ip
测试出站连接
在目标服务器上,您可以运行以下命令之一,以查看隧道是否正确传递了流量:
curl http://www.cpanel.net/showip.cgi --interface 192.168.168.2
wget http://www.cpanel.net/showip.cgi --bind-address = 192.168.168.2 -q -O-
IP应该是您的防御节点的IP。
通过GRE隧道转发端口
为了使事情变得容易,我们将所有端口转发到后端服务器。
在VPS上运行以下命令:
iptables -t nat -A PREROUTING -d YOUR_FILTERED_IP -j DNAT --to-destination 192.168.168.2 iptables -A FORWARD -d 192.168.168.2 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
如果您想更具体一点,可以添加:
-p tcp --dport 25565
例如,如果您只是想保护Minecraft服务器。
第一条规则设置实际的端口转发,第二条规则确保连接获得NAT,并正确匹配。
在这一点上,您应该能够YOUR_FILTERED_IP
使用您的应用程序连接到目标端口,并通过GRE隧道传递而不会出现问题。
重新启动后重新启动GRE隧道
可以/etc/rc.local
使用自己喜欢的编辑器进行编辑(甚至使用WINSCP),并将刚运行的所有命令exit 0
放在底部。
选择发行版(如Debian)可能/etc/network/interfaces
在启动时加入了GRE隧道,但这超出了本指南的范围。