Openswan安装和简单配置

news2024/11/24 13:11:44

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安装和简单的相关配置,具体情况请按照你所需要的场景进行布置,本文档仅作为一个参考。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[golang gin框架] 26.Gin 商城项目-前台自定义商品列表模板, 商品详情数据渲染,Markdown语法使用

一.前台自定义商品列表模板 当在首页分类点击进入分类商品列表页面时,可以根据后台分类中的分类模板跳转到对应的模板商品列表页面 1.管理后台商品分类模板设置如下图所示 2.代码展示 (1).商品控制器方法Category()完善 修改controllers/frontend/productController…

大模型竞逐,再造AI新格局

作者 | 辰纹 来源 | 洞见新研社 “面对AI时代,所有产品都值得用大模型重做一次。” 这是阿里巴巴集团董事会主席兼CEO、阿里云智能集团CEO张勇在2023阿里云峰会上对AIGC(生成式AI)进化的判断,在这背后则是由ChatGPT为起始点&…

Shiro学习笔记,一篇就够用了

目录 一、Shiro基础 1.1Shiro定义: 1.2Shiro架构: 1.3快速上手: 二、Spring整合Shiro 2.1导入spring整合shiro的依赖 2.2两个配置类 寻找maven版本号:Maven Repository: org.apache.shiro shiro-core (mvnrepository.com) Shiro官网:Apache Shiro | Simple. Java. Securi…

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

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

微搭低代码调用第三方API

目录 1 创建项目2 获取实时天气API3 创建APIs4 小程序中调用总结 应粉丝要求,我们本篇介绍一下微搭中如何调用第三方API。我们的应用开发中比较常见的一类需求是开发一个天气的功能,方便用户访问应用的时候实时的看到今天最新的天气情况。 第三方的天气…

虚拟机安装使用经验

1 VMware 跟 VirtualBox 在网络上可以看到很多对比的资料,比如这篇: VirtualBox 和 VMware的区别 VMware 分商业版跟非商业版,我们这里仅讨论非商业版,也就是 VMware Workstation Player,支持在 Linux、Windows、Mac OS 等系统上…

docker容器:Docker consul的容器服务更新与发现

目录 一、Docker consul 1、什么是服务注册与发现 2、什么是consul 3、consul部署 ①实验目的 ②实验环境及拓扑 ③consul配置 ④registrator后端配置 ⑤测试发现功能是否正常 4、consul-template部署 ①准备template nginx模板文件 ②编译安装nginx ③安装templa…

LVS-keepalived

文章目录 一、keepalived1、KEEPALIVED作用2、KEEPALIVED原理3、KEEPALIVED工作模式4、KEEPLIVED问题及优化 二、实验1.LVSKeepalived 高可用群集 总结 一、keepalived 1、KEEPALIVED作用 保证负载均衡的高可用性,完美解决了LVS所有问题,可以检查后端服…

【随笔】转发/转向(服务器重定向,服务器转发,服务器跳转)和重定向(客户端重定向,客户端转发,客户端跳转)

文章目录 1.转发(转向)和重定向图解2.例子3.区别 1.转发(转向)和重定向图解 图:转发(转向) 图:重定向 2.例子 转发:A找B要钱,B没钱,于是B向C…

OSPF路由协议解释

目录 OSPF路由协议OSPF数据包类型OSPF邻区状态OSPF的邻接关系建立过程 路由名词解释OSPF开源项目 OSPF路由协议 OSPF简介 1、(Open Shortest Path First),开放式最短路径优先,它属于链路状态路由协议,大部分路由将由O…

ChatGPT进化的过程简介

Chat GPT可以做什么? 分点列条的回答问题 写代码或SQL 翻译 语法检查 ChatGPT官方还未公开论文,ChatGPT有一个“孪生兄弟”InstructGPT,InstructGPT有论文,可以根据InstructGPT论文推导ChatGPT的训练过程: ChatGPT的…

React函数组件语法(N)

文章目录 react学习的说明新的官网全力投入现代React与Hooks React简介概述官网特点生态 React脚手架create-react-app官网创建和启动项目项目结构sass支持 Vite创建和启动项目项目结构常见配置 虚拟DOM什么是虚拟DOM虚拟DOM优缺点优点:缺点: 虚拟DOM实现…

MySQL死锁的原因和处理方法

MySQL死锁的原因和处理方法 表的死锁产生原因解决方案 行级锁死锁产生原因1解决方案1产生原因2产生原因3解决方案 表的死锁 产生原因 用户A访问表A(锁住了表A),然后又访问表B;另一个用户B访问表B(锁住了表B),然后企图访问表A;这时用户A由于用户B已经锁住表B,它必须…

LeetCode349. 两个数组的交集

题目链接 LeetCode349. 两个数组的交集 题目描述 题解 题解一(Java) 作者:仲景 因为数据范围和长度都限制在1000,所以直接使用数组即可 因为数据范围和长度都在1000内,所以碰到数字可以直接arr[i] i来表示这个数字…

如何有效的开展接口自动化测试,一篇就行

一、简介 接口自动化测试是指使用自动化测试工具和脚本对软件系统中的接口进行测试的过程。其目的是在软件开发过程中,通过对接口的自动化测试来提高测试效率和测试质量,减少人工测试的工作量和测试成本,并且能够快速发现和修复接口错误&…

手写Spring框架---IOC容器实现

目录 框架具备的最基本功能 实现容器前奏 创建注解 提取标记对象 extractPacakgeClass里面需要完成的事情 获取项目类加载器的目的 为什么不让用户传入绝对路径 类加载器ClassLoader 统一资源定位符URL ClassUtil提取标记类 获取包下类集合 装载目标类的集合 获取…

Git相关使用

私人博客 许小墨のBlog —— 菜鸡博客直通车 系列文章完整版,配图更多,CSDN博文图片需要手动上传,因此文章配图较少,看不懂的可以去菜鸡博客参考一下配图! 系列文章目录 前端系列文章——传送门 后端系列文章——传送…

APP UI自动化测试思路总结 ,教你彻底学会APP自动化测试

目录 一,开发语言选择 二,UI测试框架选择 1,Appium 2,Airtest 3,选择框架 三,单元测试框架选择 四,测试环境搭建 1,测试电脑选择 2,测试手机选择 3,…

【Redis】Redis管道

面试题 如何优化频繁命令往返造成的性能瓶颈? Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。一个请求会遵循以下步骤: 客户端向服务端发送命令分四步(发送命令→命令排队→命令执行→返回结果),并监听Socket返回&#xf…

基于matlab仿真相控天线阵列在波束成形MIMO-OFDM系统中的使用

一、前言 本例显示了相控阵在采用波束成形的MIMO-OFDM通信系统中的使用。它使用通信工具箱和相控阵系统工具箱中的组件,对组成发射器和前端接收器组件的辐射元件进行建模,用于MIMO-OFDM通信系统。使用用户指定的参数,您可以根据不同空间位置和…