当前位置: 首页 > news >正文

Linux IPIP隧道连通两个局域网

拓扑结构

现有两台主机,它们具有两个网口分别接入到不同网络中。

  • 主机A:
    • eth0:处于 10.0.1.2/24 网段
    • eth1: 处于192.168.1.100/24 网段
  • 主机B:
    • eth0:处于10.0.2.3/24 网段
    • eth1: 处于192.168.2.200/24 网段

主机A、B通过eth0 网口连接的网络可以相互访问,现在需要连通两台主机的两个局域网络使 192.168.1.0/24192.168.2.0/24 互通。

在这里插入图片描述

Linux IPIP隧道

由于主机A、B 的 eth0网口连接的网络中间跨越了多个路由,因此无法直接配置该网络中的路由来实现两个网络互通的效果。

因此我们需要在A、B之间建立一条隧道,通过隧道传输两个网络的数据包。

在这里插入图片描述

最简单的隧道就是IP隧道:

  • 在要传输的IP数据包上在额外添加一个用于隧道传输的包头。
  • 对端主机接受到来自于隧道IP数据包后,主动移除隧道包头。
  • 移除后IP包重新投入到隧道目的地网络。
  • 反之亦然。

如下所示:

在这里插入图片描述

配置

下面配置需要在两个主机上都配置

Linux 内核自带了 ipip隧道模块,首先加载模块到内核:

sudo modprobe ipip

打开IPv4的转发:

sudo sysctl -w net.ipv4.ip_forward=1

注意:动态加载的模块重启后不会自动加载,需要通过启动脚本方式加载。

主机个网口配置如下:
在这里插入图片描述

主机A配置

步骤如下:

  • 创建IPIP类型隧道,设置隧道的 起点IP(local) 和 目的地IP(remote)。
    • 起点:eth0 10.0.1.2
    • 重点:eth0 10.0.2.2
  • 启动虚拟网卡。
  • 在虚拟网卡上 配置 到 目的网络(192.168.2.0/24) 的路由。
ip tunnel add mytunnel mode ipip remote 10.0.2.2 local 10.0.1.2 ttl 64
ip link set mytunnel up
ip route add 192.168.2.0/24 dev mytunnel

主机B配置

步骤如下:

  • 创建IPIP类型隧道,设置隧道的 起点IP(local) 和 目的地IP(remote)。
    • 起点:eth0 10.0.2.2
    • 重点:eth0 10.0.1.2
  • 启动虚拟网卡。
  • 在虚拟网卡上 配置 到 目的网络(192.168.2.0/24) 的路由。
ip tunnel add mytunnel mode ipip remote 10.0.1.2 local 10.0.2.2 ttl 64
ip link set mytunnel up
ip route add 192.168.1.0/24 dev mytunnel

连通性测试

在主机A上PING 主机B 的目的网络

ping 192.168.2.100

若无法PING通,请检查防火墙策略是否有配置DENY 或 DROP。

你可以通过 iptables -F 快速清除所有策略来完成测试。

配置持久化

上述配置在系统重启后将无效,因此我们需要在开机时重新执行配置内容对系统进行配置。

这里使用Systemd开机脚本的方式实现,下面以 主机A 的配置讲解如何实现。

创建开机配置脚本config_tunnel.sh

mkdir -p /etc/tunnel_cfg/
vi /etc/tunnel_cfg/config_tunnel.sh

config_tunnel.sh内容如下:

#!/bin/bashmodprobe ipipip tunnel add mytunnel mode ipip remote 10.0.2.2 local 10.0.1.2 ttl 64
ip link set mytunnel up
ip route add 192.168.2.0/24 dev mytunnel

创建systemd服务文件config_tunnel.service

vi /etc/tunnel_cfg/config_tunnel.service

config_tunnel.service内容如下:

[Unit]
Description=my ipip tunnel.
After=network.target[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/etc/tunnel_cfg/config_tunnel.sh[Install]
WantedBy=multi-user.target

将配置复制至系统目录,重新加载,并设置开机启动:

cp /etc/tunnel_cfg/config_tunnel.service /usr/lib/systemd/system/systemctl daemon-reload
systemctl enable config_tunnel.service

运行脚本检查状态

systemctl start config_tunnel.service
systemctl status config_tunnel.service

查看路由以及隧道

route -n
ip tunnel show

参考文献

[1]. Linux ipip隧道技术测试一(双主机、双网卡) . olivee . 2020 . http://www.asznl.com/post/81

相关文章:

Linux IPIP隧道连通两个局域网

拓扑结构 现有两台主机,它们具有两个网口分别接入到不同网络中。 主机A: eth0:处于 10.0.1.2/24 网段eth1: 处于192.168.1.100/24 网段 主机B: eth0:处于10.0.2.3/24 网段eth1: 处于192.168.2…...

华为QinQ技术的基本qinq和灵活qinq 2种配置案例

基本qinq配置: 运营商pe设备在收到同一个公司的ce发来的的包,统一打上同样的vlan ,如上图,同一个家公司两边统一打上vlan 2,等于在原内网vlan 10或20过来的包再统一打上vlan 2的标签,这样传输就不会和其它…...

python爬虫1:基础知识

python爬虫1:基础知识 前言 ​ python实现网络爬虫非常简单,只需要掌握一定的基础知识和一定的库使用技巧即可。本系列目标旨在梳理相关知识点,方便以后复习。 目录结构 文章目录 python爬虫1:基础知识1. 基础认知1.1 什么是爬虫&…...

【FAQ】安防监控视频EasyCVR平台分发的FLV视频流在VLC中无法播放

众所周知,TSINGSEE青犀视频汇聚平台EasyCVR可支持多协议方式接入,包括主流标准协议国标GB28181、RTSP/Onvif、RTMP等,以及厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。在视频流的处理与分发上,视频监控…...

python爬虫2:requests库-原理

python爬虫2:requests库-原理 前言 ​ python实现网络爬虫非常简单,只需要掌握一定的基础知识和一定的库使用技巧即可。本系列目标旨在梳理相关知识点,方便以后复习。 目录结构 文章目录 python爬虫2:requests库-原理1. 概述2. re…...

纹理贴图和渲染

纹理贴图 纹理映射(也就是纹理图或者叫做纹理贴图)是一种在计算机图形学中常用的技术,它可以将二维的图像(纹理)映射到三维物体的表面上,以增强视觉效果。“atlas”通常是指纹理图集,也就是将多…...

BLIP2

BLIP2的任务是基于已有的固定参数的图像encoder和语言大模型(LLM)搭建一个具有图像理解能力的图文模型,输入是图像和文本,输出是文本。 BLIP2基于Q-Former结构,如下图所示。Q-Former包含图像transformer和文本transfo…...

陀螺玩具跨境电商亚马逊CPC认证

陀螺指的是绕一个支点高速转动的刚体。陀螺是中国民间最早的娱乐工具之一.形状上半部分为圆形,下方尖锐。从前多用木头制成,现代多为塑料或铁制。玩时可用绳子缠绕,用力抽绳,使直立旋转。或利用发条的弹力旋转。传统古陀螺大致是木…...

TS学习02-接口

接口 ts原则之一就是对值所具有的结构进行类型检查。 结构的左右就是为了这些类型命名和代码定义契约 interface LabelValue {label: string } function point(label: LabelValue) {} let obj {label:标题,age: 18} point(obj)类型检查器不会去检查属性的顺序&a…...

WuThreat身份安全云-TVD每日漏洞情报-2023-08-09

漏洞名称:致远OA文件上传漏洞 漏洞级别:高危 漏洞编号:NULL 相关涉及:1. A6、A8、A8N的V8.0SP2、V8.1、V8.1SP1 漏洞状态:POC 参考链接:https://tvd.wuthreat.com/#/listDetail?TVD_IDTVD-2023-19494 漏洞名称:Microsoft Exchange Server 欺骗漏洞 漏洞级别:高危 漏洞编号:CV…...

6. C++类的静态成员

一、对象的生产期 生存期:对象从诞生到结束的这段时间生存期分为静态生存期和动态生存期 1.1 静态生存期 对象的生存期与程序的运行期相同,则称它具有静态生存期在文件作用域中声明的对象都是具有静态生存期的若在函数内部的局部作用域中声明具有静态…...

如何使Python Docker镜像安全、快速、小巧

一、说明 在微服务领域,拥有安全、高效和紧凑的 Docker 映像对于成功部署至关重要。本博客将探讨有助于构建此类映像的关键因素,包括不以 root 用户身份运行映像的重要性、在构建映像时更新和升级包、在编写 Dockerfile 指令时考虑 Docker 的层架构&…...

AWS——03篇(AWS之Amazon S3(云中可扩展存储)-01入门)

AWS——03篇(AWS之Amazon S3(云中可扩展存储)-01入门) 1. 前言2. 关于 Amazon S32.1 介绍2.1.1 简述2.1.2 详细介绍 2.2 Amazon S3 好处和功能2.3 3. 创建S3存储桶3.1 创建存储桶3.2 修改访问权限 4. 简单实用4.1 上传图片文件4.2…...

没有synchronized,rust怎么防并发?

学过Java的同学对synchronized肯定不陌生,那么rust里怎么办呢? 在Rust中,可以使用标准库提供的 std::sync::Mutex 来实现加锁功能。Mutex是互斥锁的一种实现,用于保护共享数据在并发访问时的安全性。 下面是一个简单的示例代码&a…...

1.Python简介及安装(3.11.4)

简介 Python 是一种解释型、面向对象、动态数据类型、高级、通用、解释型的高级程序设计语言。 Python 由 Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 1991 年。 像 Perl 语言一样, Python 源代码同样遵循 GPL(GNU General Public License) 协议。 官方宣布,…...

face_recognition人脸识别与人脸检测

1、安装face_recognition库 pip install face_recognition face_recognition库的人脸识别是基于业内领先的C开源库dlib中的深度学习模型,安装face_recognition库的同时会一并安装dlib深度学习框架。 2、face_recognition库的使用 1)load_image_file加…...

vue3获得url上的参数值

1、引入 import { useRoute } from vue-router2、获得const route useRoute() console.log(route.query.number)...

chapter15:springboot与监控管理

Spring Boot与监控管理视频 1. 简介 通过引入spring-boot-starter-actuator, 可以使用SpringBoot为我们提供的准生产环境下的应用监控和管理功能。我们可以通过http, jmx, ssh协议来进行操作,自动得到审计、健康及指标信息等。 步骤: 引入spring-boo…...

http历史版本

1,HTTP0.9 最早的http版本,后来才被定义为0.9版本。 这时候通信采用的是纯文本格式; 只支持get请求,且在服务器响应之后就关闭连接; 没有请求头的概念,功能比较简单。 2,HTTP1.0 这个版本增…...

【Go语言】Golang保姆级入门教程 Go初学者chapter2

【Go语言】变量 VSCode插件 setting的首选项 一个程序就是一个世界 变量是程序的基本组成单位 变量的使用步骤 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zuxG8imp-1691479164956)(https://cdn.staticaly.com/gh/hudiework/imgmain/image-20…...

关于ETL的两种架构(ETL架构和ELT架构) qt

ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库&#xf…...

【Linux】进程间通信——管道

目录 写在前面的话 什么是进程间通信 为什么要进行进程间通信 进程间通信的本质理解 进程间通信的方式 管道 System V IPC POSIX IPC 管道 什么是管道 匿名管道 什么是匿名管道 匿名管道通信的原理 pipe()的使用 匿名管道通信的特点 拓展代码 命名管道 什么是命…...

Element-plus中tooltip 提示框修改宽度——解决方案

tooltip 提示框修改宽度方法&#xff1a; 在element中&#xff0c;想要设置表格的内容&#xff0c;超出部分隐藏&#xff0c;鼠标悬浮提示 可以在el-table 上添加show-overflow-tooltip属性 同时可以通过tooltip-options配置提示信息 如下图代码 <el-tableshow-overflo…...

java实现当前系统时间格式化

import java.text.SimpleDateFormat; import java.util.Date;public class DateTest {public static void main(String[] args) {Date date new Date();System.out.println("当前系统时间&#xff1a;" date);SimpleDateFormat simpleDateFormat new SimpleDateFo…...

篇十一:享元模式:共享细粒度对象

篇十一&#xff1a;“享元模式&#xff1a;共享细粒度对象” 设计模式是软件开发中的重要工具&#xff0c;享元模式&#xff08;Flyweight Pattern&#xff09;是结构型设计模式的一种。享元模式旨在通过共享细粒度的对象&#xff0c;减少内存消耗和提高性能。在设计模式学习中…...

Dev控件 Gridcontrol,gridview 实现多选功能

在网上看了好多实现dev控件GridControl多选功能的方法&#xff0c;都很麻烦&#xff0c;其实GridControl有一个自带的实现多选功能的控件&#xff0c;很简单。 实现效果如下 无需代码代码&#xff0c;使用GridControl中自带的多选功能&#xff0c;在界面直接设置即可 1.找到要…...

内网穿透:如何通过公网访问本地Web服务器?

文章目录 前言1. 首先安装PHPStudy2.下载一个开源的网页文件3. 选择“创建网站”并将网页内容指向下载好的开源网页文件4. 打开本地网页5. 打开本地cpolar客户端6. 保存隧道设置 生成数据隧道 前言 随着科技进步和时代发展&#xff0c;计算机及互联网已经深深融入我们的生活和…...

在qemu中挂载镜像文件

将镜像文件作为交换分区 创建镜像文件&#xff1a; dd if/dev/zero ofswap.img bs512 count131072 qemu-system-arm -nographic -M vexpress-a9 -m 64M -kernel arch/arm/boot/zImage -append "rdinit/linuxrc consolettyAMA0 loglevel8" -dtb arch/arm/boot/dts/…...

报错注入(主键重复)攻击原理

基本原理 利用数据表中主键不能重复的特点&#xff0c;通过构造重复的主键&#xff0c;使得数据库报错&#xff0c;并将报错结果返回到前端。 SQL说明函数 以pet数据表为例进行说明 rond(): 返回[0,1)区间内的任意浮点数。 count(): 返回每个组的列行数。 如&#xff0…...

Golang基础教程

Golang基础教程 golang简介安装golanggolang开发工具go常用命令golang开发 vscode快捷键如何编写golang代码golang标识符、关键字、命名规则golang变量go语言常量go语言数据类型go语言布尔类型go语言数字类型golang字符串golang格式化输出golang运算符go语言中的流程控制golan…...

怎么做.com的网站/网址注册查询

转载&#xff1a;http://blog.csdn.net/kimmking/article/details/8424319 DOM方式是直接把xml文件全部加载到内存&#xff0c;然后建立dom树&#xff0c;特点&#xff1a;可读可写&#xff0c;支持XPath&#xff0c;但是非常慢&#xff0c;占用内存为xml的10倍数量级&#xff…...

做网站用域名不备案怎么弄/百度seo排名如何提升

MKD编译完成后查看以下数据的大小&#xff1a; Code&#xff1a;表示程序所占用 FLASH 的大小&#xff08; FLASH&#xff09;。 RO-data&#xff1a;即 Read Only-data&#xff0c; 表示程序定义的常量&#xff0c;如 const 类型&#xff08; FLASH&#xff09;。 RW-data&…...

单页面网站怎么做的/百度站长工具

本文实例讲述了python3 deque 双向队列创建与使用方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;创建双向队列import collectionsd collections.deque()append(往右边添加一个元素)import collectionsd collections.deque()d.append(1)d.append(2)print(d)#输出…...

苏州微网站建设/企业为何选择网站推广外包?

参考《导弹飞行力学》 对部分参数的解释: dx/dtf(t,x): 之前一直看不懂f&#xff08;t,x&#xff09;到底指的哪个式子&#xff0c;其实在开头就提出来了&#xff0c;f是dy K2△t*f(tk△t/2,xk1/2*K1)&#xff1a;t在导弹飞行力学&#xff0c;是y(0)(M中是1)&#xff0c;所…...

哪个网站做简历比较好/品牌营销策划公司排名

使用Objective-C的文档生成工具:appledoc FEB 1ST, 2012 前言 做项目的人多了&#xff0c;就需要文档了。今天开始尝试写一些项目文档。但是就源代码来说&#xff0c;文档最好和源码在一起&#xff0c;这样更新起来更加方便和顺手。象Java语言本身就自带javadoc命令&#xff0c…...

wordpress 视频不播放/汨罗网站seo

guava之Multiset一、概述Guava提供了一个新集合类型Multiset&#xff0c;它可以多次添加相等的元素&#xff0c;且和元素顺序无关。Multiset继承于JDK的Cllection接口&#xff0c;而不是Set接口。它和set最大的区别就是它可以对相同元素做一个计数的功能&#xff0c;普通的 Set…...