You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为同一目标后端服务器配置两个不同IP的GRE隧道?

如何为同一目标后端服务器配置两个不同IP的GRE隧道?

我手里有一台BuyVM的KVM VPS,它带两个DDoS防护IP,我的需求是通过GRE隧道,用BuyVM的防护IP来替代我的主服务器(后面都叫它「后端服务器」)的IP。研究了GRE隧道的配置方法后,我整理出了下面的脚本,分两端来操作:

BuyVM VPS端配置脚本

把下面的脚本保存到BuyVM VPS上,记得替换掉变量里的占位内容:

#!/bin/bash

# 此脚本部署在BuyVM的GRE VPS上

# 配置变量
GRE_VPS_IP="[替换为BuyVM的DDoS防护IP]"
BACKEND_IP="[替换为后端服务器的公网IP]"
GRE_VPS_MAIN_INTERFACE="eth0" # 根据VPS实际网卡调整,一般是eth0

GRE_TUNNEL_NAME="gre1"
GRE_TUNNEL_SUBNET="192.168.168.0/30"
GRE_TUNNEL_LOCAL_IP="192.168.168.1"
GRE_TUNNEL_REMOTE_IP="192.168.168.2"

# 开启IP转发
echo 1 > /proc/sys/net/ipv4/ip_forward

# 创建GRE隧道
ip tunnel add $GRE_TUNNEL_NAME mode gre remote $BACKEND_IP local $GRE_VPS_IP ttl 255

# 为隧道接口分配IP
ip addr add $GRE_TUNNEL_LOCAL_IP/30 dev $GRE_TUNNEL_NAME

# 启用隧道接口
ip link set $GRE_TUNNEL_NAME up

# 添加路由,让后端服务器的流量走隧道
ip route add $BACKEND_IP dev $GRE_TUNNEL_NAME

# 配置iptables NAT转发,让隧道流量能通过主网卡出去
iptables -t nat -A POSTROUTING -o $GRE_VPS_MAIN_INTERFACE -j MASQUERADE
iptables -A FORWARD -i $GRE_VPS_MAIN_INTERFACE -o $GRE_TUNNEL_NAME -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i $GRE_TUNNEL_NAME -o $GRE_VPS_MAIN_INTERFACE -j ACCEPT

后端服务器端配置脚本

同样,把下面的脚本部署到你的后端服务器上,替换对应变量:

#!/bin/bash

# 此脚本部署在后端服务器上

# 配置变量
BACKEND_IP="[替换为后端服务器的公网IP]"
GRE_VPS_IP="[替换为BuyVM的DDoS防护IP]"
BACKEND_MAIN_INTERFACE="eth0" # 根据服务器实际网卡调整

GRE_TUNNEL_NAME="gre1"
GRE_TUNNEL_LOCAL_IP="192.168.168.2"
GRE_TUNNEL_REMOTE_IP="192.168.168.1"

# 开启IP转发
echo 1 > /proc/sys/net/ipv4/ip_forward

# 创建GRE隧道
ip tunnel add $GRE_TUNNEL_NAME mode gre remote $GRE_VPS_IP local $BACKEND_IP ttl 255

# 为隧道接口分配IP
ip addr add $GRE_TUNNEL_LOCAL_IP/30 dev $GRE_TUNNEL_NAME

# 启用隧道接口
ip link set $GRE_TUNNEL_NAME up

# 添加路由,让BuyVM VPS的流量走隧道
ip route add $GRE_VPS_IP dev $GRE_TUNNEL_NAME

# (可选)如果需要把特定端口的流量转发到本地服务,可以添加下面的iptables规则
# 比如转发80端口到本地服务IP:
# iptables -t nat -A PREROUTING -i $BACKEND_MAIN_INTERFACE -p tcp --dport 80 -j DNAT --to-destination [你的服务内网IP]
# iptables -A FORWARD -i $GRE_TUNNEL_NAME -o $BACKEND_MAIN_INTERFACE -j ACCEPT

配置第二个DDoS防护IP的隧道

如果要给第二个BuyVM的DDoS防护IP也配置隧道,只需要复制上面的两组脚本,做以下修改:

  • 把隧道接口名改成gre2(避免冲突)
  • 更换隧道子网,比如用192.168.169.0/30,对应本地IP设为192.168.169.1(BuyVM端)和192.168.169.2(后端服务器端)
  • 把GRE_VPS_IP替换成第二个DDoS防护IP

这样就能实现用两个不同的BuyVM防护IP通过GRE隧道转发到同一台后端服务器了。

备注:内容来源于stack exchange,提问作者Mario

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 07:18:15