51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

CentOS 和 Ubuntu 建 GRE Tunnel

文章介绍:使用Ubuntu 22.04.4 LTS 与 CentOS Linux release 7.9.2009 (Core) 通过 GRE 建立隧道,实现互通。

yydy_2024-05-28_00-18-28

一、Ubuntu {#一-Ubuntu}

1.1、查看版本 {#1-1-查看版本}

lsb_release -a

1.2、更新系统 {#1-2-更新系统}

sudo apt-get update

1.3、安装相关组件 {#1-3-安装相关组件}

sudo apt-get install iputils-ping iproute2 traceroute iptables-persistent nano

1.4、开启路由转发 {#1-4-开启路由转发}

echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf

1.5、创建gre接口 {#1-5-创建gre接口}

1.5.1、创建 {#1-5-1-创建}

sudo nano /etc/netplan/gre_tun0.yaml

1.5.2、贴入配置 {#1-5-2-贴入配置}

network:
  version: 2
  tunnels:
    tun0:
      mode: gre
      mtu: 1476
      tcp_mss: 1300
      local: 192.168.65.94
      remote: 192.168.65.140
      addresses:
        - 10.0.0.2/24

1.5.3、配置生效 {#1-5-3-配置生效}

sudo netplan apply

1.6、查看接口 {#1-6-查看接口}

ip addr

二、CentOS {#二-CentOS}

2.1、查看版本 {#2-1-查看版本}

cat /etc/redhat-release

2.2、更新系统 {#2-2-更新系统}

sudo yum update

2.3、安装相关组件 {#2-3-安装相关组件}

sudo yum install -y iputils iproute2 traceroute iptables nano

2.4、开启路由转发 {#2-4-开启路由转发}

echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf

2.5、创建gre接口脚本 {#2-5-创建gre接口脚本}

2.5.1、创建 {#2-5-1-创建}

nano gre_tun0.sh

2.5.2、贴入配置 {#2-5-2-贴入配置}

# 添加GRE隧道
/sbin/ip tunnel add tun0 mode gre remote 192.168.65.94 local 192.168.65.140 ttl 255
# 启用隧道
/sbin/ip link set tun0 up mtu 1476
# 添加IP地址
/sbin/ip addr add 10.0.0.1/24 dev tun0

添加iptables规则标记tun0出口的数据包
========================



iptables -t mangle -A OUTPUT -o tun0 -p tcp -m tcp --tcp-flags SYN,RST SYN -j MARK --set-mark 1998


修改tun0出口的TCP MSS
================



iptables -t mangle -A FORWARD -p tcp -m mark --mark 1998 -j TCPMSS --set-mss 1300


输出日志信息
======


`echo "$(date): GRE tunnel completed" >> /var/log/gre_tun0.log
`

2.5.3、脚本赋权 {#2-5-3-脚本赋权}

sudo chmod +x gre_tun0.sh

2.5.4、配置生效 {#2-5-4-配置生效}

bash gre_tun0.sh

2.6、创建gre系统服务 {#2-6-创建gre系统服务}

2.6.1、创建 {#2-6-1-创建}

sudo nano /etc/systemd/system/gre_tun0.service

2.6.2、贴入配置 {#2-6-2-贴入配置}

[Unit]
Description=GRE tunnel
After=network.target

\[Service\]
Type=oneshot
ExecStart=/root/gre_tun0.sh

`[Install]
WantedBy=multi-user.target
`

2.7、重载 systemd 程序 {#2-7-重载-systemd-程序}

sudo systemctl daemon-reload

2.8、开机自启动 {#2-8-开机自启动}

sudo systemctl enable gre_tun0.service

2.9、启动服务器 {#2-9-启动服务器}

sudo systemctl start gre_tun0.service

2.10、查看服务 {#2-10-查看服务}

sudo systemctl status gre_tun0.service

三、静态路由 {#三-静态路由}

3.1、Ubuntu {#3-1-Ubuntu}

3.1.1、添加临时路由 {#3-1-1-添加临时路由}

sudo ip route add 100.64.0.0/16 via 10.0.0.1 dev tun0

3.1.2、添加永久路由 {#3-1-2-添加永久路由}

sudo nano /etc/netplan/gre_tun0.yaml

network:
  version: 2
  tunnels:
    tun0:
      mode: gre
      local: 192.168.65.94
      remote: 192.168.65.140
      addresses:
        - 10.0.0.2/24
      routes:
        - to: 100.64.0.0/16
          via: 10.0.0.1

3.1.3、配置生效 {#3-1-3-配置生效}

sudo netplan apply

3.1.4、删除路由 {#3-1-4-删除路由}

sudo ip route delete 100.64.0.0/16 via 10.0.0.1 dev tun0

3.2、CentOS {#3-2-CentOS}

3.2.1、添加临时路由 {#3-2-1-添加临时路由}

sudo ip route add 172.16.0.0/16 via 10.0.0.2 dev tun0

3.2.2、添加永久路由:方式一 {#3-2-2-添加永久路由-方式一}

3.2.2.1、编辑rc.local {#3-2-2-1-编辑rc-local}
nano /etc/rc.d/rc.local
3.2.2.2、赋权 {#3-2-2-2-赋权}
chmod +x /etc/rc.d/rc.local
3.2.2.3、编辑rc.local服务 {#3-2-2-3-编辑rc-local服务}
nano /lib/systemd/system/rc-local.service
3.2.2.3、修改成如下 {#3-2-2-3-修改成如下}
[Unit]
Description=/etc/rc.d/rc.local Compatibility
ConditionFileIsExecutable=/etc/rc.d/rc.local
After=network.target
`[Service]
Type=forking
ExecStartPre=/bin/sleep 15
ExecStart=/etc/rc.d/rc.local start
TimeoutSec=0
RemainAfterExit=yes
`

3.2.2.4、重载服务+重启服务 {#3-2-2-4-重载服务-重启服务}
sudo systemctl daemon-reload && sudo systemctl restart rc-local.service

3.2.3、添加永久路由:方式二 {#3-2-3-添加永久路由-方式二}

3.2.3.1、创建route脚本 {#3-2-3-1-创建route脚本}
nano route_tun0.sh
3.2.3.2、贴入配置 {#3-2-3-2-贴入配置}
#!/bin/bash

等待 15 秒
=======



sleep 15


添加路由
====



ip route add 172.16.0.0/16 via 10.0.0.2 dev tun0

`exit 0
`

3.2.3.3、配置生效 {#3-2-3-3-配置生效}
bash route_tun0.sh
3.2.3.4、创建系统服务 {#3-2-3-4-创建系统服务}
sudo nano /etc/systemd/system/route_tun0.service

[Unit]
Description=GRE tunnel route
After=network.target

\[Service\]
Type=oneshot
ExecStart=/root/route_tun0.sh

`[Install]
WantedBy=multi-user.target
`

sudo systemctl daemon-reload

sudo systemctl enable route_tun0.service

sudo systemctl start route_tun0.service

sudo systemctl status route_tun0.service

3.2.4、删除路由 {#3-2-4-删除路由}

sudo ip route delete 172.17.0.0/16 via 10.0.0.2 dev tun0
赞(2)
未经允许不得转载:工具盒子 » CentOS 和 Ubuntu 建 GRE Tunnel