首页 > 系统相关 >Linux 虚拟网络 IPIP

Linux 虚拟网络 IPIP

时间:2024-06-18 18:13:07浏览次数:28  
标签:10.1 24 set ip IPIP dev 虚拟 Linux ipip

IPIP

img

  • IPIP隧道是一种点对点的隧道协议,用于在IPv4网络上传输IPv4或IPv6数据包。
  • IPIP隧道的工作原理是将源主机的IP数据包封装在一个新的IP数据包中,新的IP数据包的目的地址是隧道的另一端。在隧道的另一端,接收方将解封装原始IP数据包,并将其传递到目标主机。IPIP隧道可以在不同的网络之间建立连接,例如在IPv4网络和IPv6网络之间建立连接。

一、使用 Containerlab 模拟网络

a | 拓扑

拓扑

b | 网络拓扑文件

# ipip.clab.yml
name: ipip
topology:
  nodes:
    gw1:
      kind: linux
      image: vyos/vyos:1.2.8
      cmd: /sbin/init
      binds:
        - /lib/modules:/lib/modules
        - ./startup-conf/gw1.cfg:/opt/vyatta/etc/config/config.boot

    gw2:
      kind: linux
      image: vyos/vyos:1.2.8
      cmd: /sbin/init
      binds:
        - /lib/modules:/lib/modules
        - ./startup-conf/gw2.cfg:/opt/vyatta/etc/config/config.boot

    server1:
      kind: linux
      image: harbor.dayuan1997.com/devops/nettool:0.9
      exec:
      - ip addr add 10.1.5.10/24 dev net0
      - ip route replace default via 10.1.5.1

    server2:
      kind: linux
      image: harbor.dayuan1997.com/devops/nettool:0.9
      exec:
      - ip addr add 10.1.8.10/24 dev net0
      - ip route replace default via 10.1.8.1


  links:
    - endpoints: ["gw1:eth1", "server1:net0"]
    - endpoints: ["gw2:eth1", "server2:net0"]
    - endpoints: ["gw1:eth2", "gw2:eth2"]

c | VyOS 配置文件

  • gw1.cfg
配置文件
# ./startup-conf/gw1.cfg
interfaces {
    ethernet eth1 {
        address 10.1.5.1/24
        duplex auto
        smp-affinity auto
        speed auto
    }
    ethernet eth2 {
        address 172.12.1.10/24
        duplex auto
        smp-affinity auto
        speed auto
    }
    loopback lo {
    }
    tunnel tun0 {
        # 配置 ipip 设置本端地址,远端地址
        address 1.1.1.1/24
        encapsulation ipip
        local-ip 172.12.1.10
        multicast disable
        remote-ip 172.12.1.11
    }
}
protocols {
    static {
        # 静态路由,指定到达 10.1.8.0/24 网络的下一条为 1.1.1.2, 1.1.1.2 和 1.1.1.1 组成了 ipip
        route 10.1.8.0/24 {
            next-hop 1.1.1.2 {
            }
        }
    }
}
system {
    config-management {
        commit-revisions 100
    }
    console {
        device ttyS0 {
            speed 9600
        }
    }
    host-name vyos
    login {
        user vyos {
            authentication {
                encrypted-password $6$QxPS.uk6mfo$9QBSo8u1FkH16gMyAVhus6fU3LOzvLR9Z9.82m3tiHFAxTtIkhaZSWssSgzt4v4dGAL8rhVQxTg0oAG9/q11h/
                plaintext-password ""
            }
            level admin
        }
    }
    ntp {
        server 0.pool.ntp.org {
        }
        server 1.pool.ntp.org {
        }
        server 2.pool.ntp.org {
        }
    }
    syslog {
        global {
            facility all {
                level info
            }
            facility protocols {
                level debug
            }
        }
    }
    time-zone UTC
}


/* Warning: Do not remove the following line. */
/* === vyatta-config-version: "dns-forwarding@1:mdns@1:ssh@1:webproxy@1:webgui@1:zone-policy@1:broadcast-relay@1:l2tp@1:cluster@1:snmp@1:pppoe-server@2:conntrack@1:wanloadbalance@3:webproxy@2:firewall@5:ntp@1:dhcp-server@5:dhcp-relay@2:system@10:nat@4:quagga@7:qos@1:ipsec@5:conntrack-sync@1:config-management@1:vrrp@2:pptp@1" === */
/* Release version: 1.2.8 */
  • gw2.cfg
配置文件
# ./startup-conf/gw2.cfg
interfaces {
    ethernet eth1 {
        address 10.1.8.1/24
        duplex auto
        smp-affinity auto
        speed auto
    }
    ethernet eth2 {        
        address 172.12.1.11/24
        duplex auto
        smp-affinity auto
        speed auto
    }
    loopback lo {
    }
    tunnel tun0 {
        # 配置 ipip 设置本端地址,远端地址
        address 1.1.1.2/24
        encapsulation ipip
        local-ip 172.12.1.11
        multicast disable
        remote-ip 172.12.1.10
    }
}
protocols {
    static {
        # 静态路由,指定到达 10.1.8.0/24 网络的下一条为 1.1.1.1, 1.1.1.1 和 1.1.1.2 组成了 ipip
        route 10.1.5.0/24 {
            next-hop 1.1.1.1 {
            }
        }
    }
}
system {
    config-management {
        commit-revisions 100
    }
    console {
        device ttyS0 {
            speed 9600
        }
    }
    host-name vyos
    login {
        user vyos {
            authentication {
                encrypted-password $6$QxPS.uk6mfo$9QBSo8u1FkH16gMyAVhus6fU3LOzvLR9Z9.82m3tiHFAxTtIkhaZSWssSgzt4v4dGAL8rhVQxTg0oAG9/q11h/
                plaintext-password ""
            }
            level admin
        }
    }
    ntp {
        server 0.pool.ntp.org {
        }
        server 1.pool.ntp.org {
        }
        server 2.pool.ntp.org {
        }
    }
    syslog {
        global {
            facility all {
                level info
            }
            facility protocols {
                level debug
            }
        }
    }
    time-zone UTC
}


/* Warning: Do not remove the following line. */
/* === vyatta-config-version: "dns-forwarding@1:mdns@1:ssh@1:webproxy@1:webgui@1:zone-policy@1:broadcast-relay@1:l2tp@1:cluster@1:snmp@1:pppoe-server@2:conntrack@1:wanloadbalance@3:webproxy@2:firewall@5:ntp@1:dhcp-server@5:dhcp-relay@2:system@10:nat@4:quagga@7:qos@1:ipsec@5:conntrack-sync@1:config-management@1:vrrp@2:pptp@1" === */
/* Release version: 1.2.8 */

d | 部署服务

# tree -L 2 ./
./
├── ipip.clab.yml
└── startup-conf
    ├── gw1.cfg
    └── gw2.cfg

# clab deploy -t ipip.clab.yml
INFO[0000] Containerlab v0.54.2 started                 
INFO[0000] Parsing & checking topology file: clab.yaml  
INFO[0000] Creating docker network: Name="clab", IPv4Subnet="172.20.20.0/24", IPv6Subnet="2001:172:20:20::/64", MTU=1500 
INFO[0000] Creating lab directory: /root/wcni-kind/network/5-demo-cni/7-ipip/1-clab-ipip/clab-ipip 
INFO[0000] Creating container: "gw2"                    
INFO[0000] Creating container: "server1"                
INFO[0000] Creating container: "server2"                
INFO[0000] Creating container: "gw1"                    
INFO[0001] Created link: gw2:eth1 <--> server2:net0     
INFO[0001] Created link: gw1:eth1 <--> server1:net0     
INFO[0001] Created link: gw1:eth2 <--> gw2:eth2         
INFO[0001] Executed command "ip addr add 10.1.5.10/24 dev net0" on the node "server1". stdout: 
INFO[0001] Executed command "ip route replace default via 10.1.5.1" on the node "server1". stdout: 
INFO[0001] Executed command "ip addr add 10.1.8.10/24 dev net0" on the node "server2". stdout: 
INFO[0001] Executed command "ip route replace default via 10.1.8.1" on the node "server2". stdout: 
INFO[0001] Adding containerlab host entries to /etc/hosts file 
INFO[0001] Adding ssh config for containerlab nodes     
INFO[0001] 

标签:10.1,24,set,ip,IPIP,dev,虚拟,Linux,ipip
From: https://www.cnblogs.com/evescn/p/18254864

相关文章

  • Linux项目开发,你必须了解Systemd服务!
    1. Systemd 简介Systemd是什么,以前linux系统启动init机制,由于init一方面对于进程的管理是串行化的,容易出现阻塞情况,另一方面init也仅仅是执行启动脚本,并不能对服务本身进行更多的管理。Systemd就是为了解决这些问题而诞生的。它的设计目标是,为系统的启动和管理提供一套完整的解......
  • Linux命令ldd:深入解析动态链接器依赖关系
    Linux命令ldd:深入解析动态链接器依赖关系在Linux系统中,ldd(ListDynamicDependencies)是一个强大的命令行工具,用于列出可执行文件或共享库所依赖的共享库。虽然ldd在数据处理和分析的直接用途上可能并不明显,但它对于系统管理员、软件开发者以及任何对系统底层工作感兴趣的人......
  • 探索Linux中的`ld`命令:链接器的奥秘
    探索Linux中的ld命令:链接器的奥秘在Linux系统中,ld命令是一个强大的工具,它作为链接器(Linker)的主要实现,负责将编译后的目标文件(objectfiles)链接成可执行文件或共享库。尽管ld在直接数据处理和分析中的用途可能不如其他工具那么直接,但它在软件构建过程中扮演着至关重要的角色......
  • PHP Linux安装扩展(编译安装)
    0x01下载包并解压http://pecl.php.net/package/mailparsetar-xzfmailparse.tgzcdmailparse0x02配置/www/server/php/74/bin/phpize./configure--with-php-config=/www/server/php/74/bin/php-config0x03编译并安装makesudomakeinstall0x04激活编辑php.......
  • 每天学一个 Linux 命令(10):passwd
    Github地址:https://github.com/mingongge/Learn-a-Linux-command-every-day命令简介passwd创建或修改用户的密码,passwd命令用于设置用户的认证信息,包括用户密码、密码过期时间等。系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密......
  • Linux系统概念及命令学习
    1.Linux系统基本概念多用户的系统:允许同时有很多个用户登录系统,使用系统里的资源多任务的系统:允许同时执行多个任务严格区分大小写:命令,选项,参数,文件名,目录名都严格区分大小写一切皆文件:硬件设备(内存、CPU、网卡、显示器、硬盘等等)都是以文件的形式存在的不管是文件还是目录......
  • Linux学习DAY5-vim程序编辑器
    一、vi与vim注:在Linux的系统中使用文本编辑器来编辑Linux参数配置文件在Linux中,绝大多数的配置文件都是以ASCII的纯文本形态存在。因此,可以利用简单的文本编辑软件修改设定。注:什么是纯文本文档?档案记录的是0与1,通过编码系统来将这些0与1转化为文字。学习vim的原因:  ......
  • Linux 虚拟网络 VXLAN
    VXLANVXLAN本质上是一种隧道技术,在源网络设备与目的网络设备之间的IP网络上,建立一条逻辑隧道,将用户侧报文经过特定的封装后通过这条隧道转发VXLAN已经成为当前构建数据中心的主流技术,是因为它能很好地满足数据中心里虚拟机动态迁移和多租户等需求。一、使用Containerlab模......
  • linux内存管理(十一)- 页面迁移
    这里有一篇很好的博客宋宝华:论Linux的页迁移(PageMigration)完整版-CSDN博客为什么需要页面迁移?试想系统在经过长时间运行,内存块趋于碎片化,想要分配一块大的连续内存已经不可能了。此时并非没有足够的内存,而只是内存碎片化。这个时候如果可以是已经分配的内存聚集在一起就可以得到......
  • 搭建PHP开发环境:Linux篇
    目录一、引言二、环境准备三、安装Web服务器(Apache)Ubuntu/Debian系统:CentOS/RedHat系统:四、安装PHP解释器Ubuntu/Debian系统:CentOS/RedHat系统:五、配置Apache以支持PHPUbuntu/Debian系统:CentOS/RedHat系统:六、安装和配置数据库(MySQL/MariaDB)Ubuntu/Debian系统:......