Openswan安装和简单配置

Openswan安装和简单配置

安装环境:

操作系统:Ubuntu20.0.4TLS
用户权限:root

下载Openswan:

wget https://github.com/xelerance/Openswan/archive/refs/tags/v3.0.0.zip

安装Openswan:

解压Openswan:(PS:刚刚下载的是一个zip包)

unzip v3.0.0.zip

解压后我的源码目录为:

/root/openswan-3.0.0

在这里插入图片描述

进入Openswan目录:

cd Openswan-3.0.0

下载相关库依赖:

apt-get install libgmp-dev
apt-get install bison
apt-get install flex

安装Openswan:

(PS:安装需要C++环境,没有环境,请下载:sudo apt-get install gcc)

make programs install

检查是否安装成功:

ipsec --version

在这里插入图片描述

配置Openswan:

检查配置信息:

ipsec verify

(这是一个python脚本,运行脚本需要python2的环境)

出现问题:

在这里插入图片描述

原因:运行需要python2环境

下载python环境:

apt-get install python2

运行python环境:

python

在这里插入图片描述

原因:默认的python不是python2

解决方法:设置python2的优先级,如果你的环境中有多个python环境,或者默认python是python3,请为每一个python环境设置一个

优先级

配置python环境:

(PS:python环境默认自动模式启用最高版本,一般现有的是python3,因此我们需要修改默认环境为python2再进行运行,如果你的环境本身是python2,请省略该步骤)
我的ubuntu环境存在的python环境为:

python2..7,python3.8
配置python2.7的优先级为1:
update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
配置python3.10的优先级为2:
update-alternatives --install /usr/bin/python python /usr/bin/python3.8 2
查看配置列表:
update-alternatives --list python                                         

在这里插入图片描述

配置默认python版本:
update-alternatives --config python

在这里插入图片描述

内核参数调整:

修改内核:
vim /etc/sysctl.conf

添加以下信息

# example entries for /etc/sysctl.conf
# forwarding is needed for subnet or l2tp connections
net.ipv4.ip_forward = 1

# rp_filter is stupid and cannot deal decrypted packets "appearing out of
# nowhere"
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0

# when using 1 interface for two networks when using NETKEY, the kernel
# kernel thinks it can be clever by sending a redirect (cause it cannot
# tell an encrypted packet came in, but a decrypted packet came out),
# so it sends a bogus ICMP redirect
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.conf.default.log_martians = 0
net.ipv4.conf.all.log_martians = 0
# seems the martian settings are not always enough. If not receiving packets
# try running this:
# for n in eth0 mast0 ipsec0 ipsec1 all default ; do sysctl net.ipv4.conf.$n.rp_filter=0; done
#

# these are non-ipsec specific security policies you should use
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
加载内核:
sysctl -p

检查配置信息:

ipsec verify

配置信息检查

在这里插入图片描述

配置信息为上图就没有什么问题

修改ipsec配置文件:

配置文件,我实验的是两台主机,配置文件都保持一致

vim /etc/ipsec.conf

修改相关配置参数,以下是我的配置参数

# /etc/ipsec.conf - Openswan IPsec configuration file

# This file:  /usr/local/share/doc/openswan/ipsec.conf-sample
#
# Manual:     ipsec.conf.5


version 2.0     # conforms to second version of ipsec.conf specification

# basic configuration
config setup
        dumpdir=/var/run/pluto/
        nat_traversal=yes
        virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v4:25.0.0.0/8,%v6:fd00::/8
        oe=off
        protostack=netkey

conn test						# 定义连接名称为openswan_IPsec
        auto=start				# 可选择add、route和start
        pfs=no                  # PFS(Perfect Forward Secrecy)
        compress=no             # 是否压缩
        type=tunnel				# 开启隧道模式
        authby=secret			# 定义认证方式为PSK
        
        ## phase 1 ##
        ike=aes128-sha1;modp1024  # 按照对端配置定义ike阶段算法和group
        ikelifetime=86400s        # ike阶段生命周期
        keyexchange=ike			  # ike密钥交换方式
        
        ## phase 2 ##
        phase2alg=aes128-sha1;modp1024     # 按照对端配置定义IPsec阶段算法和group
        salifetime=3600s          		   # 二阶段生命周期
        phase2=esp				  		   # 二阶段传输格式
		
		# IP配置阶段
        left=192.168.3.208				# 本地IP,nat场景选择真实的主机地址
        leftid=@left					# 本地标识ID(可以是@开头的标识,也可以是你的本地IP地址)
        leftsourceip=192.168.3.208		# 存在nat源地址选择nat后IP
        leftsubnet=0.0.0.0/0			# 本地子网
        leftnexthop=%defaultroute		# nat场景下一跳选择nat后的网关IP(一般按缺省配置)
        right=192.168.3.22				# 远端IP,nat场景选择真实的主机地址
        rightid=@right					# 远端标识ID(可以是@开头的标识,也可以是你的本地IP地址)
        rightsourceip=192.168.3.22		# 存在nat源地址选择nat后IP
        rightsubnet=0.0.0.0/0			# 远端子网
        rightnexthop=%defaultroute		# nat场景下一跳选择nat后的网关IP(一般按缺省配置)

上述配置阶段其中最难,网络上资料也没有详细说,现在我将我的理解如下:

1.两台同一私有网络的主机,或者是公网上的两台主机之间建立IPSec;

# 两台主机通信
left=本地IP地址
leftid=本地标识符
rught=远端IP地址
rightid=远端标识符

2.一台公网IP的主机访问一个公网IP下NAT的私有IP的主机之间建立IPSec;

# 公网IP主机访问公有IP网关NAT下的私有IP的服务器
# 注意部署位置公网IP主机,部署IPSec在本机,私有IP主机的IPSec需要部署到它所在的公网IP的主机上
# 假设本地端为私有IP一端,远程端为公有IP一端
left=服务器私有IP地址
leftid=本地标识符
leftsourceip=本地公网IP网关地址
leftsubnet=服务器端子网
right=远端公网IP地址
rightid=远端标识符

3.两台处于公网IP网关NAT下的私有IP地址的主机之间建立IPSec。

# 处于不同的公网IP网关下的两台私有IP地址的主机
# IPSec的部署位置都是公网IP网关
left=本地私有IP地址
leftid=本地标识符
leftsourceip=本地公网IP网关地址
leftsubnet=本地子网
right=远端私有IP地址
rightid=远端标识符
rightsourceip=远端公网IP网关地址
rightsubnet=远端子网

配置共享密钥:

vim /etc/ipsec.secrets

修改为以下信息:

%any %any : PSK "预共享密钥"
# %any %any : PSK "预共享密钥",默认是所有的连接都使用共享密钥
# IP地址(标识符) IP地址(标识符) : PSK "预共享密钥",某个连接共享密钥
# left right : PSK "预共享密钥"
# left,right是上述ipsec.conf中指代的IP地址

运行ipsec:

/etc/init.d/ipsec start
servic ipsec start

运行成功应该显示的信息

在这里插入图片描述

查看状态信息:

查看是否建立通道:

/etc/init.d/ipsec status

在这里插入图片描述

查看隧道建立过程:

ipsec auto status

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

监听IPSec建立过程:

tcpdump -i whlp0s20f3 host 192.168.3.22

在这里插入图片描述

写在最后:

本文档只描述了Openswan安装和简单的相关配置,具体情况请按照你所需要的场景进行布置,本文档仅作为一个参考。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/15230.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Arduino学习笔记4

一.声控灯实验 1.源代码 int led2;//定义板子上数字2口控制小灯 int flag0;//定义一个变量记录小灯是亮起还是熄灭 int shengyin3;//定义声音传感器的控制口void setup() {pinMode(led,OUTPUT);//定义小灯为输出模式pinMode(shengyin,INPUT);//定义声音控制口为输入模式 } vo…

基于天牛须(BAS)与NSGA-Ⅱ混合算法的交直流混合微电网多场景多目标优化调度(Matlab代码实现)

💥 💥 💞 💞 欢迎来到本博客 ❤️ ❤️ 💥 💥 🏆 博主优势: 🌞 🌞 🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 …

SentiBank Dector上手指南

​ 官网链接:https://www.ee.columbia.edu/ln/dvmm/vso/download/sentibank.html SentiBank Detector可以抽取图片中的形容词-名词对,之前一直看到,这次复现模型才第一次用到,上手的时候有点手足无措,因为官网在如何使…

Python入门教程+项目实战-11.4节: 元组与列表的区别

目录 11.4.1 元组与列表的区别 11.4.2 可变数据类型 11.4.3 元组与列表的区别 11.4.4 知识要点 11.4.5 系统学习python 11.4.1 不可变数据类型 不可变数据类型是指不可以对该数据类型进行修改,即只读的数据类型。迄今为止学过的不可变数据类型有字符串&#x…

我做了个GPT3键盘,用了两个月发现它有点傻

自 ChatGPT 出世,各类文本类AI产品层出不穷。甚至接连几日,Producthunt 上新品过半都是AI相关。 这其中部分原因是 OpenAI 公司开放的 GPT3 1API 接口十分易用。只要一个简单的文本请求,就能将现有产品加入AI功能。例如,Notion、…

提取文本的摘要snownlp模块

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 提取文本的摘要 snownlp模块 [太阳]选择题 关于以下python代码说法错误的一项是? from snownlp import SnowNLP myText """ChatGPT的出现标志着人类科技发…

【flask】三种路由和各自的比较配置文件所有的字母必须大写if __name__的作用核心对象循环引用的几种解决方式--难Flask的经典错误上下文管理器

三种路由 方法1:装饰器 python C#, java 都可以用这种方式 from flask import Flask app Flask(__name__)app.route(/hello) def hello():return Hello world!app.run(debugTrue)方法2: 注册路由 php python from flask import Flask app Flask(__name__)//app…

【JavaWeb】jQuery(上)

本章内容 1.jQuery Hello world 2.jQuery 选择器 3.jQuery 过滤器 4.jQuery 元素筛选 1、jQuery 介绍 什么是 jQuery ? jQuery,顾名思义,也就是 JavaScript 和查询(Query),它就是辅助 JavaScript 开发的 js 类…

Linux 文件内容相关命令使用汇总

Linux操作系统有很多强大的文件内容相关命令,这些命令可以让您查看、分析和编辑文件。其中,最基本和常用的命令包括cat、more、less和head/tail等。除了这些基本命令之外,grep和find命令也是文件搜索和过滤方面的有力工具。 前言 我们这篇主…

根据 vue-grid-layout 动态设置Echarts尺寸大小

文章目录 前言一、vue-grid-layout 是什么?二、正文1.引入vue-grid-layout2.myEcharts组件3. Utils中的debounce防抖函数 总结 前言 此文背景是根据 vue-grid-layout 动态拖拽组件大小里面包含 Echarts 组件情景,也可以单独把监听动态设置Echarts 尺寸抽…

【神经网络】tensorflow实验7--回归问题

1. 实验目的 ①掌握一元线性回归模型的实现方法 ②掌握多元线性回归模型的实现方法 ③掌握三维数据可视化方法 2. 实验内容 ①使用TensorFlow建立一元线性回归模型,使用商品房销售数据训练模型,并使用训练好的模型预测房价 ②使用TensorFlow建立多元线…

企业级VUE前端项目各目录文件的作用

概述 本文项目是基于Vue CLI3构建工具(基于 webpack)生成的脚手架项目。Vue CLI 现已处于维护模式,VUE官方推荐使用 create-vue(基于 Vite)构建工具。 vue-cli2.0与3.0在目录结构方面,有明显的不同,vue-cli3.0移除了…

什么是 MVVM?MVVM和 MVC 有什么区别?什么又是 MVP ?

目录标题 一、什么是MVVM?二、MVC是什么?三、MVVM和MVC的区别?四、什么是MVP? 一、什么是MVVM? MVVM是 Model-View-ViewModel的缩写,即模型-视图-视图模型。MVVM 是一种设计思想。 模型(Model…

国内首款多节点/无需密钥/无需登录的ChatGPT客户端开源项目

在这个AI浪潮推动下,涌现了一大批“参差不齐”的GPT产品,有的一直在更新迭代,有的不断升级乃至付费订阅,有的中途停止运营。在这个AI产品也需要优胜劣汰的时代下,谁能够“谁主沉浮,且看今朝!”&…

目标检测之损失函数

损失函数的作用为度量神经网络预测信息与期望信息(标签)的距离,预测信息越接近期望信息,损失函数值越小。 在目标检测领域,常见的损失分为分类损失和回归损失。 L1损失 L1 Loss也称为平均绝对值误差(MAE&…

跨域融合风口下,又一外资巨头Tier 1+本土供应商“组团”来袭

头部企业正在加速“融合”。 汽车智能化升级对产品创新与多元化需求下,来自技术升级、降本、开发周期缩短等等一系列因素影响,中外供应商们都在积极思变和寻求破局。 随着全球智能汽车产业步入域集中和域融合的新阶段,过去的以硬件&#xf…

【AGC】质量服务数据分析问题

【关键字】 AGC、质量、数据分析 【问题描述】 开发者反馈在应用中集成了AGC的相关服务,在查看平台数据时遇到了一些问题。具体如下所述: 我发现平台的App卸载量每个月都非常高,卸载量/新下载量近80%,很异常,所以想…

Elasticsearch --- DSL、RestClient查询文档、搜索结果处理

一、DSL查询文档 elasticsearch的查询依然是基于JSON风格的DSL来实现的。 1.1、DSL查询分类 Elasticsearch提供了基于JSON的DSL(Domain Specific Language)来定义查询。常见的查询类型包括: 查询所有:查询出所有数据&#xff0c…

后台-husky提交代码规范使用

husky是一个git hook工具,可以帮助我们触发git提交的各个阶段:pre-commit、commit-msg、pre-push 1.如何使用husky呢? npx husky-init && npm installWindows安装不成功试试npx husky-init && npm install 2.git commit规范…

图论 (Java) 从入门到入土 /第一部分 图的基础-图的定义/

零.前言 图,是一种比较复杂的数据结构。和树的一个节点只和上层一个节点相连不同,在图中,任意两个节点都可能相连,且可能具有方向性,并且节点的边具有权重,因此,图被用于描述各种复杂的数据对象…