Linux中如何配置GRE隧道

Linux中如何配置GRE隧道

 更新时间:2023年12月25日 11:07:14   作者:beeworkshop  
这篇文章主要介绍了Linux中如何配置GRE隧道问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

目录
  • 配置拓扑
  • 具体配置
    • 1. node02
    • 2. node03
    • 3. 查看路由表
    • 4. 验证
    • 5. 配置多个环回地址
  • 总结

    配置拓扑

    这里使用ens33接口地址来建立隧道,使用ens37接口地址做隧道接口标识,使用ens38接口地址来模拟私网业务地址。

    实际场景中,用于建立隧道的地址是公网地址,而业务地址是私网地址,GRE隧道使得私网地址空间不会暴露于公网。

    具体配置

    1. node02

    开启路由转发,加载GRE协议模块。

    # 开启ipv4路由转发
    echo 1 > /proc/sys/net/ipv4/ip_forward
    
    # 查看GRE内核模块信息
    modinfo ip_gre
    
    # 查看GRE内核模块是否安装
    lsmod | grep ip_gre
    
    # 加载GRE内核模块
    modprobe ip_gre
    modprobe --first-time ip_gre
    

    创建隧道虚接口tunnel2并配置隧道接口ip(隧道标识)。

    # 配置GRE隧道的source和destination ip(外部,公网地址)
    ip tunnel add tunnel2 mode gre local 192.168.91.129 remote 192.168.91.130 ttl 255 dev ens33
    
    # 配置GRE tunnel接口的隧道标识(在数通设备上可以通过ip unnumber借用其他接口的primary ip)
    ip addr add 172.16.18.10 dev tunnel2 peer 172.16.20.20/24
    
    # 开启tunnel2接口
    ip link set dev tunnel2 up
    
    # 查看tunnel接口
    ifconfig
    ip a
    

    添加指向隧道接口的路由以引导流量进入隧道。

    # 添加私网路由指向隧道口
    ip route add 10.10.20.20/32 dev tunnel2
    ip route add 172.16.20.20/32 dev tunnel2
    

    2. node03

    开启路由转发,加载GRE协议模块。

    # 开启ipv4路由转发
    echo 1 > /proc/sys/net/ipv4/ip_forward
    
    # 加载GRE内核模块
    modprobe --first-time ip_gre
    

    创建隧道虚接口tunnel2并配置隧道接口ip(隧道标识)。

    # 配置GRE隧道的source和destination ip(外部,公网地址)
    ip tunnel add tunnel2 mode gre local 192.168.91.130 remote 192.168.91.129 ttl 255 dev ens33
    
    # 配置GRE tunnel接口的隧道标识(在数通设备上可以通过ip unnumber借用其他接口的primary ip)
    ip addr add 172.16.20.20 dev tunnel2 peer 172.16.18.10/24
    
    # 开启tunnel2接口
    ip link set dev tunnel2 up
    

    添加指向隧道接口的路由以引导流量进入隧道。

    # 添加私网路由指向隧道口
    ip route add 10.10.10.10/32 dev tunnel2
    ip route add 172.16.18.10/32 dev tunnel2
    

    3. 查看路由表

    route -n  # 推荐此法
    或者
    netstat -nr
    

    4. 验证

    • 隧道建立
    [root@node02 ~]# ping -c3 -I 10.10.10.10 10.10.20.20
    PING 10.10.20.20 (10.10.20.20) from 10.10.10.10 : 56(84) bytes of data.
    64 bytes from 10.10.20.20: icmp_seq=1 ttl=64 time=0.708 ms
    64 bytes from 10.10.20.20: icmp_seq=2 ttl=64 time=0.523 ms
    64 bytes from 10.10.20.20: icmp_seq=3 ttl=64 time=0.555 ms
    
    --- 10.10.20.20 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2001ms
    rtt min/avg/max/mdev = 0.523/0.595/0.708/0.083 ms
    
    [root@node02 ~]# ping -c3 -I 172.16.18.10 172.16.20.20
    PING 172.16.20.20 (172.16.20.20) from 172.16.18.10 : 56(84) bytes of data.
    64 bytes from 172.16.20.20: icmp_seq=1 ttl=64 time=1.12 ms
    64 bytes from 172.16.20.20: icmp_seq=2 ttl=64 time=0.509 ms
    64 bytes from 172.16.20.20: icmp_seq=3 ttl=64 time=0.469 ms
    
    --- 172.16.20.20 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2006ms
    rtt min/avg/max/mdev = 0.469/0.700/1.122/0.298 ms
    
    • 隧道拆除

    将tunnel2接口shutdown

    ip link set dev tunnel2 down

    再进行ping测试

    [root@node02 ~]# ping -c3 -I 10.10.10.10 10.10.20.20  
    PING 10.10.20.20 (10.10.20.20) from 10.10.10.10 : 56(84) bytes of data.
    
    --- 10.10.20.20 ping statistics ---
    3 packets transmitted, 0 received, 100% packet loss, time 2017ms
    
    [root@node02 ~]# ping -c3 -I 172.16.18.10 172.16.20.20
    PING 172.16.20.20 (172.16.20.20) from 172.16.18.10 : 56(84) bytes of data.
    
    --- 172.16.20.20 ping statistics ---
    3 packets transmitted, 0 received, 100% packet loss, time 2023ms
    

    5. 配置多个环回地址

    在上述的配置中可以发现启用了多个物理网卡来提供本地IP,但在实际应用中可能不具备这样的条件。配置多个环回口地址是一个解决思路。

    操作步骤如下:

    cd /etc/sysconfig/network-scripts/
    cp ifcfg-lo ifcfg-lo:1
    
    vim ifcfg-lo:1
    ----------------------------------------------------
    DEVICE=lo:1
    IPADDR=10.199.18.16
    NETMASK=255.255.255.255
    ONBOOT=yes
    NAME=loopback1
    ----------------------------------------------------
    
    systemctl restart network
    
    ifconfig
    ----------------------------------------------------
    lo:1: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 10.199.18.16  netmask 255.255.255.255
            loop  txqueuelen 1000  (Local Loopback)
    ----------------------------------------------------
    
    ip a
    ----------------------------------------------------
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet 10.199.18.16/32 brd 10.199.18.16 scope global lo:1
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    ----------------------------------------------------
    
    [root@node01 network-scripts]# ping -c3 10.199.18.16
    PING 10.199.18.16 (10.199.18.16) 56(84) bytes of data.
    64 bytes from 10.199.18.16: icmp_seq=1 ttl=64 time=0.045 ms
    64 bytes from 10.199.18.16: icmp_seq=2 ttl=64 time=0.050 ms
    64 bytes from 10.199.18.16: icmp_seq=3 ttl=64 time=0.053 ms
    

    如果是非持久化的添加(重启后失效),可以使用如下命令:

    ip addr add 10.199.18.16/32 dev lo:1

    使用上述命令添加的环回接口地址只能使用“ ip a ”命令才可以查看到,使用“ ifconfig ”命令是看不到的。

    但是在系统中可以ping通。

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

    您可能感兴趣的文章:

    • Linux环境下GRE的部署方式
    • 详解linux服务器快速安装PostgreSQL15及pgvector向量插件
    • linux grep查找的结果中显示匹配行的上下行内容方式
    • linux中grep命令数据过滤和筛选方式
    • Linux命令之find 和 grep用法详解


    • Linux
    • GRE
    • 隧道

    相关文章

    • linux查看匹配内容的前后几行方法

      这篇文章给大家分享了linux查看匹配内容的前后几行的方法以及实例代码,有兴趣的朋友可以参考学习下。 2018-07-07

    • Linux学习之mkdir命令详解

      大家好,本篇文章主要讲的是Linux学习之mkdir命令详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览 2021-12-12

    • Linux安装NFS全过程

      这篇文章主要介绍了Linux安装NFS全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教 2023-11-11

    • Linux 新的API signalfd、timerfd、eventfd使用说明

      这篇文章主要介绍了Linux 新的API signalfd、timerfd、eventfd使用说明的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下 2016-10-10

    • linux进行硬盘分区挂载的实现方法

      这篇文章主要介绍了linux进行硬盘分区挂载的实现方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 2018-07-07

    • Linux系统下多版本php共存的解决方案(超简单)

      如何在Linux系统下使多版本php共存,今天为大家介绍一种简单方案 2018-10-10

    • linux memcache安装配置方法

      这篇文章主要介绍了linux memcache安装配置方法,需要的朋友可以参考下 2014-07-07

    • CentOS 7.6 Telnet服务搭建过程(Openssh升级之战 第一任务备用运输线搭建)

      这篇文章主要介绍了CentOS 7.6 Telnet服务搭建过程(Openssh升级之战 第一任务备用运输线搭建),本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友参考下吧 2019-10-10

    • apache开启伪静态的方法分享

      这篇文章主要介绍了apache开启伪静态的方法分享,需要的朋友可以参考下 2014-03-03

    • Apache 认证总结

      经常上网的读者会遇到这种情况:访问一些网站的某些资源时,浏览器弹出一个对话框,要求输入用户名和密码来获取对资源的访问。 2009-05-05

    最新评论

    版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
    文章名称:《Linux中如何配置GRE隧道》
    文章链接:https://zhuji.vsping.com/196604.html
    本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。