共计 1918 个字符,预计需要花费 5 分钟才能阅读完成。
大家好呀,今天来介绍一下搭建 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,添加下面的语段:
- network:
- version: 2
- ethernets:
- 网卡名:
- dhcp4: true
- match:
- macaddress: 网卡 MAC 地址
- set-name: 网卡名
- addresses:
- – 88.88.88.88/32
然后输入命令让 IP 绑定生效:
- netplan try
- netplan apply
此时,如果你用 SSH 登录 88.88.88.88, 你应该能够登录上服务器 A。
2, 启用 GRE 模块,以及前置准备工作
在两台服务器上分别执行
- modprobe ip_gre
- lsmod | grep gre
- apt-get install -y iptables iproute2
如果执行 lsmod 这步的时候看不到相应模块的显示,可能需要换内核。
然后,在服务器 A 上执行
- echo ‘net.ipv4.ip_forward=1’ >> /etc/sysctl.conf
- sysctl -p
3, 搭建 GRE 隧道
服务器 A 上执行:
- ip tunnel add qing.su mode gre local 88.88.88.88 remote 99.99.99.99 ttl 255
- ip addr add 10.0.0.1/30 dev qing.su
- ip link set qing.su up
服务器 B 上执行:
- ip tunnel add qing.su mode gre local 99.99.99.99 remote 88.88.88.88 ttl 255
- ip addr add 10.0.0.2/30 dev qing.su
- ip link set qing.su up
此时,在服务器 A 上 ping 10.0.0.2 或者在服务器 B 上 ping 10.0.0.1,应该都能 ping 通。
4, 设置路由表、数据与端口转发
服务器 B 上执行:
- echo ‘100 SHC’ >> /etc/iproute2/rt_tables
- ip rule add from 10.0.0.0/30 table SHC
- ip route add default via 10.0.0.1 table SHC
服务器 A 上执行:
- iptables -t nat -A POSTROUTING -s 10.0.0.0/30 ! -o gre+ -j SNAT –to-source 88.88.88.88
- iptables -A FORWARD -d 10.0.0.2 -m state –state NEW,ESTABLISHED,RELATED -j ACCEPT
- iptables -A FORWARD -s 10.0.0.2 -m state –state NEW,ESTABLISHED,RELATED -j ACCEPT
- iptables -t nat -A PREROUTING -d 88.88.88.88 -p TCP -m TCP -j DNAT –to-destination 10.0.0.2
- 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,转载需注明原文链接。谢谢大家的支持!