大家好呀,今天来介绍一下搭建GRE隧道的简单教程,把一台服务器的IP地址映射给另外一台服务器使用。之前写过一篇IPIP隧道的(https://hostloc.com/forum.php?mod=viewthread&tid=343926),这次介绍更好用的GRE隧道。

典型的使用场景:有一台SoYouStart大盘鸡,它有16个免费的IPv4,然而我们只需要用1个IP地址;另有一台Kimsufi杜甫,我们需要用它来生小鸡,但是没有多余的IP地址给它用。因此,我们就可以搭建GRE隧道,将SoYouStart的免费IPv4映射给Kimsufi杜甫使用。下面开始教程。

提供IP的服务器为A,接受IP的服务器为B。服务器A提供的IP地址为88.88.88.88,服务器B地址为99.99.99.99.

1, 在服务器上绑定IP.

以Ubuntu 20.04为例,编辑文件/etc/netplan/50-cloud-init.yaml,添加下面的语段:

  1. network:
  2.     version: 2
  3.     ethernets:
  4.         网卡名:
  5.             dhcp4: true
  6.             match:
  7.                 macaddress: 网卡MAC地址
  8.             set-name: 网卡名
  9.             addresses:
  10.             – 88.88.88.88/32

然后输入命令让IP绑定生效:

  1. netplan try
  2. netplan apply

此时,如果你用SSH登录88.88.88.88,你应该能够登录上服务器A。

2, 启用GRE模块,以及前置准备工作

在两台服务器上分别执行

  1. modprobe ip_gre
  2. lsmod | grep gre
  3. apt-get install -y iptables iproute2

如果执行lsmod这步的时候看不到相应模块的显示,可能需要换内核。

然后,在服务器A上执行

  1. echo ‘net.ipv4.ip_forward=1’ >> /etc/sysctl.conf
  2. sysctl -p

3, 搭建GRE隧道

服务器A上执行:

  1. ip tunnel add qing.su mode gre local 88.88.88.88 remote 99.99.99.99 ttl 255
  2. ip addr add 10.0.0.1/30 dev qing.su
  3. ip link set qing.su up

服务器B上执行:

  1. ip tunnel add qing.su mode gre local 99.99.99.99 remote 88.88.88.88 ttl 255
  2. ip addr add 10.0.0.2/30 dev qing.su
  3. ip link set qing.su up

此时,在服务器A上ping 10.0.0.2或者在服务器B上ping 10.0.0.1,应该都能ping通。

4, 设置路由表、数据与端口转发

服务器B上执行:

  1. echo ‘100 SHC’ >> /etc/iproute2/rt_tables
  2. ip rule add from 10.0.0.0/30 table SHC
  3. ip route add default via 10.0.0.1 table SHC

服务器A上执行:

  1. iptables -t nat -A POSTROUTING -s 10.0.0.0/30 ! -o gre+ -j SNAT –to-source 88.88.88.88
  2. iptables -A FORWARD -d 10.0.0.2 -m state –state NEW,ESTABLISHED,RELATED -j ACCEPT
  3. iptables -A FORWARD -s 10.0.0.2 -m state –state NEW,ESTABLISHED,RELATED -j ACCEPT
  4. iptables -t nat -A PREROUTING -d 88.88.88.88 -p TCP -m TCP  -j DNAT –to-destination 10.0.0.2
  5. iptables -t nat -A PREROUTING -d 88.88.88.88 -p UDP -m UDP  -j DNAT –to-destination 10.0.0.2

至此,GRE隧道及后续的转发全部配置完毕。此时,原来分配给服务器A的IP地址88.88.88.88已经被映射到IP地址为99.99.99.99的服务器B上了,可以进行后面的做网站、开小鸡等操作了。此时如果你再用SSH登录88.88.88.88,你应该能够登录上服务器B。

如果大家觉得有用或者有什么问题,欢迎在这里或者在我的博客上留言。本文作者为香菇肥牛,原文链接为https://qing.su/article/create-gre-tunnel-for-ipv4-mapping.html,转载需注明原文链接。谢谢大家的支持!

最后修改日期: 2021年12月19日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。