Openswan安装和简单配置

news/2024/4/25 13:20:24/文章来源:https://blog.csdn.net/qq_36833548/article/details/130375242

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.5version 2.0     # conforms to second version of ipsec.conf specification# basic configuration
config setupdumpdir=/var/run/pluto/nat_traversal=yesvirtual_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::/8oe=offprotostack=netkeyconn test						# 定义连接名称为openswan_IPsecauto=start				# 可选择add、route和startpfs=no                  # PFS(Perfect Forward Secrecy)compress=no             # 是否压缩type=tunnel				# 开启隧道模式authby=secret			# 定义认证方式为PSK## phase 1 ##ike=aes128-sha1;modp1024  # 按照对端配置定义ike阶段算法和groupikelifetime=86400s        # ike阶段生命周期keyexchange=ike			  # ike密钥交换方式## phase 2 ##phase2alg=aes128-sha1;modp1024     # 按照对端配置定义IPsec阶段算法和groupsalifetime=3600s          		   # 二阶段生命周期phase2=esp				  		   # 二阶段传输格式# IP配置阶段left=192.168.3.208				# 本地IP,nat场景选择真实的主机地址leftid=@left					# 本地标识ID(可以是@开头的标识,也可以是你的本地IP地址)leftsourceip=192.168.3.208		# 存在nat源地址选择nat后IPleftsubnet=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后IPrightsubnet=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安装和简单的相关配置,具体情况请按照你所需要的场景进行布置,本文档仅作为一个参考。

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

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

相关文章

银行数字化转型导师坚鹏:商业银行数字化风控(2天)

商业银行数字化风控 课程背景: 数字化背景下,很多银行存在以下问题: 不清楚商业银行数字化风控发展现状? 不清楚对公业务数字化风控工作如何开展? 不知道零售业务数字化风控工作如何开展? 课程特色…

海光信息业绩高歌猛进,但其作为国产CPU龙头的“地基”并不牢固

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 在“芯片寒冬”的大背景下,2022年全球头部芯片半导体公司纷纷下调业绩预期,英特尔、英伟达、美光等无一幸免。但是随着AIGC异军突起,仿佛寒冬中的一股暖流,催生着半导体市场行…

C. Trailing Loves (or L‘oeufs?)(求某个质因子在n的阶乘中的个数 + 思维)

Problem - C - Codeforces Aki喜欢数字,尤其是那些带有尾随零的数字。例如,数字9200有两个尾随零。Aki认为数字拥有的尾随零越多,它就越漂亮。 然而,Aki认为,一个数字拥有的尾随零的数量并不是固定的,而是…

idea中导入spring源码;在spring源码中添加注释

标题:idea中导入spring源码;在spring源码中添加注释 我是跟着他操作的,下文是一些补充说明: 这个也可以借鉴 gradle下载链接【使用网盘下载】,不过有的没有, gradel下载链接:这个比较全 1.Spring源码编译环境 spr…

Karl Guttag:现有Micro LED/LCoS+光波导AR眼镜对比解析

轻量化是未来AR眼镜的发展趋势,为了缩减尺寸,AR眼镜厂商尝试了多种方案,长期来看Micro LED光机在小型化上更有优势,但现阶段LCoS光机的图像表现更好。在CES 2023期间,DigiLens、Lumus、Vuzix、OPPO、Avegant也展出了不…

linux编译安装python的全过程,pip python不与linux系统环境混乱

因为使用要求,使得我需要在linux环境下安装一个独立的python环境,不干扰其他环境。 预安装 在安装python之前,请在linux系统下安装下面这些包: sudo apt-get install namelibssl-dev libcurl4 libcurl4-openssl-dev zlib-devel…

27-Servlet执行原理

目录 1.Tomcat详解 ①接收请求: ②根据请求计算响应: ③返回响应: 2.Tomcat执行流程 2.1.Tomcat 初始化流程 2.2.Tomcat 处理请求流程 2.3.Servlet 的 service 方法的实现 在 Servlet 的代码中并没有写 main ⽅法,那么对应…

【C++关联容器】map的成员函数

目录 map 1. 构造、析构和赋值运算符重载 1.1 构造函数 1.2 析构函数 1.3 赋值运算符重载 2. 迭代器 3. 容量 4. 元素访问 5. 修改器 6. 观察者 7. 操作 8. 分配器 map map是关联容器,它按照特定的顺序存储由关键字值和映射值的组合形成的元素。 在一…

【Springboot系列】项目启动时怎么给mongo表加自动过期索引

1、前言 在之前操作mongo的过程中,都是自动创建,几乎没有手动创建过表。 这次开发中有张表数据量大,并且不是特别重要,数据表维护一个常见的问题是过期数据没有被及时清理,导致数据量过大,查询变得缓慢。…

LeetCode-242. 有效的字母异位词

题目链接 LeetCode-242. 有效的字母异位词 题目描述 题解 题解一(Java) 作者:仲景 首先,满足条件的情况下,两个字符串的长度一定是相等的,不相等一定不满足条件 使用Hash表来存储字符串s中各个字符出现的…

Spring Security实战(九)—— 使用Spring Security OAuth实现OAuth对接

一、OAuth2.0介绍 OAuth2.0是一种授权协议,允许用户授权第三方应用程序代表他们获取受保护的资源,如个人信息或照片等。它允许用户授权访问他们存储在另一个服务提供商上的资源,而无需将其凭据共享给第三方应用程序。OAuth2.0协议建立在OAuth…

【具体到每一步】从0制作一个uniapp的新闻类页面(界面篇)

目录 项目初始化 / 基础配置 项目创建 配置路由/页面/tabbar pages.json配置tabbar 配置图标/静态资源 导航栏和字体颜色 scroll-view实现横向滚动条样式 公共模块定义components组件 新建组件 使用组件 组件里的结构 布局个人中心页面 组件差异化处理 数据传递 导航…

DevExpress:报表在winform窗体上显示(使用documentViewer控件)

一:控件认识 documentViewer(版本DX22.2),老版本中的可能是printControl(工具箱面板中可能找不到),通过官网搜索发现,这个控件现在继承于documentViewer这个控件。因此,使用documen…

Unity入门(一)

Unity Unity是一套完善体系与编辑器的跨平台游戏开发工具,也可以称之为游戏引擎。游戏引擎是指一些编写好的可以重复利用的代码与开发游戏所用的各功能编辑器。 基于C#编程,易上手,高安全性独特的面向组件游戏开发思想让游戏开发更加简单易…

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

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

十、ElasticSearch 实战 - 源码运行

一、概述 想深入理解 Elasticsearch,了解其报错机制,并有针对性的调整参数,阅读其源码是很有必要的。此外,了解优秀开源项目的代码架构,能够提高个人的代码架构能力 阅读 Elasticsearch 源码的第一步是搭建调试环境&…

思维导图从入门到大神

思维导图怎么做?思维导图是一种发散性思维的图。在我们生活的方方面面都有运用。无论是工作、学习、还是生活,我们都可以用到它。那思维导图是怎么绘制的呢?其实非常简单,只要这简单的几步 1、首先在绘制思维导图前,我…

【网络】-- UDP协议

目录 传输层 再谈端口号 端口号范围划分 认识知名端口号(Well-Know Port Number) 两个问题 netstat pidof UDP协议 UDP的特点 UDP的缓冲区 UDP使用注意事项 基于UDP的应用层协议 传输层 负责数据能够从发送端传输接收端。 再谈端口号 端…

Codeforces Round 861 (Div. 2)(A~D)

A. Lucky Numbers 给出边界l和r,在区间[l, r]之间找到幸运值最大的数字。一个数字的幸运值被定义为数位差的最大值,即数字中最大的数位和最小的数位的差。 思路:因为涉及到至少两位,即个位和十位变化最快,最容易得到相…

07 - 进程创建大盘点

---- 整理自狄泰软件唐佐林老师课程 查看所有文章链接:(更新中)Linux系统编程训练营 - 目录 文章目录 1. 进程创建回顾2. 再论进程创建2.1 思考2.2 vfork()深度分析2.3 vfork()要点分析2.4 fork()的现代优化2.5 编程实验:fork() &…