
Linux
文章平均质量分 57
易生一世
spring-petclinic-graphql开源项目的贡献者
展开
-
Java 7的javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake异常分析
Java7通过httpsURLConnection建立HTTPS连接,异常如下:javax.net.ssl.SSLHandshakeException: Caused by: Remote host closed connection during handshake Caused by: SSL peer shut down incorrectly解决方案似乎是明显的,客户端需要提高版本...原创 2019-09-24 17:29:53 · 6350 阅读 · 0 评论 -
NAT及跨网络命名空间的网络地址转换
NAT (Network Address Translation)即网络地址转换,最初的目的是在路由器上,修改IP报文头中的源地址(source address)或目标地址(destination address),以转发报文。通过NAT,实现了私有子网中与公共网络的连接,也间接延续了IPv4的生命,推迟了IPv6的到来。1. NAT可以分为如下几类1) Source NAT (SNAT)...原创 2019-05-01 00:00:20 · 1174 阅读 · 0 评论 -
Docker容器实例通过非默认的网络命名空间访问外部网络
Docker为所有容器实例建立了独立的网络命名空间中,并通过docker0桥接到宿主机的默认网络命名空间。如果容器实例要通过宿主机上的一个定制网络命名空间oam,而非宿主机的默认网络命名空间,访问外部网络,示意图如下所示。对于上述图示,Docker宿主机上的配置比较复杂,大致可以归纳为如下几步。1.创建并配置虚拟网卡veth0/veth1的IPs;2.配置默认网络命名空间...原创 2019-05-06 00:32:16 · 701 阅读 · 0 评论 -
虚拟网络设备及其在Linux网络命名空间中的应用
Linux的网络命名空间用以隔离Linux主机上的不同的网络环境。但是有时候,我们又需要从一个网络命名空间中访问另一个网络命名空间中的网络,这就需要用到虚拟网络设备。虚拟网络设备(Virtual Network Device)是一种抽象的网络设备,类似网络管道,用以在不同的网络命名空间之间建立传输隧道,也可以用以创建网桥以连接到多个其他网络命名空间。虚拟网络设备在Linux中的实现就是veth...原创 2019-04-29 23:43:31 · 668 阅读 · 0 评论 -
Linux内核的网络命名空间的概念及常用命令
命名空间(namespace)的概念已经非常常见了,通常用以区分不同范畴内的各种资源。在Linux内核中,命名空间用以隔离多种Linux内核的资源,如进程、进程间通信、网络、挂载路径等。通过Linux命名空间,能够把Linux有限的内核资源(进程号、通信资源、网络资源等)合理分配给各个用户的进程,而不互相干扰。Linux的网络命名空间(network namespace)用以在一个Linux主...原创 2019-04-29 23:29:23 · 1947 阅读 · 0 评论 -
iptables及其过滤规则
1. iptables是Linux内核的一个模块,用以管理对网络设备(网卡)的访问,如路由过滤、端口转发、NAT等,root用户可以通过iptables配置操作系统的路由表。在当前的主流Linux发布系统中,都默认安装了iptables。为了适应IPv6,事实上iptables用以管理IPv4数据包的过滤和地址转换,ip6tables用以管理IPv6数据包的过滤和地址转换。后文将其统一称为ip...原创 2019-03-19 00:01:07 · 5349 阅读 · 0 评论 -
openssh-client amd64 1:7.2p2-4ubuntu2.4 404 Not Found
一直运转良好的Docker自动发布突然出现了如下异常,导致无法准确构建image。Step 3 : RUN apt-get update...Step 8 : RUN apt-get install -y openssh-client ---> Using cacheThe following NEW packages will be installed: krb5-lo...原创 2018-12-25 06:55:24 · 1580 阅读 · 0 评论 -
Ubuntu的安装参数DEBIAN_FRONTEND详解
1. Debian系列的操作系统在Debian系列的操作系统中,内核支持多个安装参数,DEBIAN_FRONTEND就是其中之一,用以设置安装过程中的用户界面类型。DEBIAN_FRONTEND=noninteractive|text|newt|gtk|corba默认值为newt。对于串口安装,推荐值为text。而在自动化安装过程中,使用最频繁的还是noninteractive。2. Ubuntu...原创 2018-05-31 00:35:18 · 10241 阅读 · 0 评论 -
Time Zone Database及tzdata详解
Time Zone Database,简称tz或tzinfo,是一组表示地球上各地的时间历史的代码和数据,目前由IANA维护。IANA会根据各地政体的变化而定期更新关于时区边界、UTC和夏令时等的规则。对tz的更新遵循BCP 175流程进行管理。当前的最新版本是2018.5.1发布的2018e,其他版本还有:2018e 2018d 2018c 2017c 2017b 2017...原创 2018-05-30 23:59:45 · 18490 阅读 · 0 评论 -
在自动化运维中设置apt-get install tzdata的noninteractive方法
在Ubuntu系统中,执行命令apt-get install -y tzdata以安装tzdata软件包。但是,最近我们发现,在Ubuntu 18.04 (Bionic Beaver)上无法自动安装该软件包。在tzdata 2017的各个版本中(如2017c),安装过程中采用默认的系统时区,所以可以无交互地顺利安装完毕,输出信息如下。Current default time zone: 'Etc/...原创 2018-05-30 17:31:43 · 17812 阅读 · 1 评论 -
RHEL/CentOS 7的FirewallD及其firewall-cmd命令概述
FirewallD是RHEL/CentOS 7+的一个防火墙服务的守护进程,对应系统的firewalld.service。其与iproute2软件包的iptables/ip6tables的关系如下,实质上都是通过iptables模块配置内核的netfilter模块:在RHEL/CentOS 7中,iptables.service/ip6tables.service已经被firewalld....原创 2019-05-14 23:10:35 · 2713 阅读 · 0 评论 -
RHEL/CentOS 7的kernel tunables及其sysctl命令概述
众所周知,Linux kernel是单体的设计(非微内核的设计),但是在编译时加入了大量可选的、附加的模块modules。这样,在启动Linux kernel时,就可以通过kmod动态选择加载不同的模块(modules),而且模块还可以设置不同的参数。1. Linux kernel通过tunables设置Linux系统的启动行为,对应/proc/sys路径下的虚拟文件系统。根据Linux ...原创 2019-05-26 21:12:29 · 3889 阅读 · 0 评论 -
SELinux检查与Apache HTTP服务器的文件访问典型错配案例及解决
在CentOS 7.5配置Apache HTTP服务器后,看到如下错误:Permission denied查看Apache HTTP服务器的错误日志/var/log/httpd/error_log如下:[Wed May 06 23:00:54 2019] [error] [client 127.0.0.1] (13) Permission denied: access to /www...原创 2019-07-16 00:14:49 · 768 阅读 · 0 评论 -
Linux资源的SELinux context详解
Linux操作系统中的每个资源(如进程、文件描述符、文件、网络等),也被称为SELinux对象,都拥有一个特别的security label,也被称为SELinux label,或SELinux context,以表示该对象能够执行的permissions和operations。这是一个标识符,从Linux系统的细节中抽象出,只聚焦于系统资源的安全属性。通过使用SELinux context,就可...原创 2019-06-30 23:45:55 · 6080 阅读 · 1 评论 -
SELinux检查与Nginx的反向代理的典型错配案例及解决
在CentOS 7.5配置并启动Nginx后,却总是看到如下异常Permission denied查看Nginx的错误日志如下:[root@mylocal ~]# grep Permission /var/log/nginx/error.log2019/05/30 03:51:21 [crit] 4331#0: *6 " connect() to 127.0.0.1:8080/re...原创 2019-07-08 23:12:49 · 2220 阅读 · 0 评论 -
SELinux的运行模式与安全策略详解
1. SELinux在Linux系统中的运行状态可以划分为如下3种运行模式(run modes)enforcing默认模式,SELinux会根据安全策略对到达的访问请求进行检查。permissiveSELinux假装在进行安全策略的检查,甚至会将access denial写入日志文件,但实际不会拒绝任何访问请求。这种模式适合开发调试阶段。disabled强烈不建议这种模式。...原创 2019-06-26 23:43:33 · 2253 阅读 · 0 评论 -
RHEL/CentOS 7中的iptables.service与firewalld.service概述
在RHEL/CentOS 7中,曾经的iptables.service/ip6tables.service已经被firewalld.service所替代。但两者在本质上是一致的,都是通过iptables工具操作Linux kernel的netfilter,实现对IP数据包的过滤。两者只是在实现上有如下不同:iptables/ip6tables的配置默认存储到/etc/sysconfig/ipt...原创 2019-06-17 22:36:37 · 3634 阅读 · 1 评论 -
RHEL/CentOS 7中的SELinux概述
Security Enhanced Linux (SELinux)是一个访问控制服务,基于安全策略加强对系统资源的访问控制。在系统安全的基础上,解决“May <subject> do <action> to <object>”的访问控制问题。SELinux是一个Linux内核的扩展模块,通过LSM(Linux Security Module)框架在链接时被加...原创 2019-06-21 00:05:22 · 1197 阅读 · 0 评论 -
RHEL/CentOS 7中通过systemd service持久化网络命名空间
对于Linux系统中创建的定制的网络命名空间,目前没有理想的方法使其持久化,即能够在Linux系统启动时应用定制的网络命名空间的配置。本文创建了一个systemd service,通过在Linux系统启动时执行其ExecStart脚本,从而实现了每次Linux系统启动时对定制的网络命名空间的配置。创建一个systemd service的过程如下:1. 定义一个可执行的脚本文件,用以配置网络...原创 2019-06-04 23:44:11 · 953 阅读 · 1 评论 -
RHEL/CentOS 7的systemd target及其中的multi-user.target
在RHEL/CentOS 6中,使用SysV init和Upstart,通过预定义一组Runlevels(从0到6)表示不同的执行模式。[root@myhost app]# ll /etc/rc.d/total 4drwxr-xr-x. 2 root root 148 May 28 05:40 init.d-rwxr-xr-x. 1 root root 503 May 27 11:29...原创 2019-06-03 23:18:35 · 14054 阅读 · 0 评论 -
RHEL/CentOS 7中的网络暨network.service与NetworkManager.service详解
在RHEL/CentOS 6及以前的版本中,网络功能是通过一系列网络相关的脚本文件实现,如/etc/init.d/network文件,及如下/sbin/if*文件等。[root@myserver ~]# ll /sbin/if*-rwxr-xr-x. 1 root root 3056 Apr 11 2018 /sbin/ifcfg-rwxr-xr-x. 1 root root 820...原创 2019-06-13 21:39:37 · 15714 阅读 · 0 评论 -
RHEL/CentOS 7的systemd及其systemctl命令概述
systemd是Linux的系统服务管理器,也是默认的初始化系统,并且向后兼容SysV初始化系统的init脚本,能够在启动Linux系统的时候并发启动系统服务。systemd的配置文件/etc/systemd/system.conf。systemd提出了units的概念,一个unit代表着一种systemd管理的系统资源。每个unit都是通过unit配置文件定义的。一个unit的类型是由其un...原创 2019-05-31 00:23:12 · 2199 阅读 · 1 评论 -
RHEL/CentOS 7中Nginx的systemd service
在线安装预构建的Nginx,默认会创建Nginx的systemd服务,对应的服务文件是/usr/lib/systemd/system/nginx.service。文件内容如下:[Unit]Description=The NGINX HTTP and reverse proxy serverAfter=syslog.target network.target remote-fs.targe...原创 2019-05-27 23:28:01 · 1471 阅读 · 0 评论 -
SSL/TLS的Handshake过程与javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure异常
一.SSL/TLS的Handshake过程在SSL/TLS的Handshake过程中,客户端与服务器之间需要交换参数,具体过程如下:客户端提供其所支持的各种cipher suites(包含加密算法和Hash函数) 服务器从中选择自己也支持的cipher suite,并通知客户端,表明两者将以此进行数据传输 服务器同时将自己的数字证书(包括服务器名称、CA和公钥)作为标识符发给客户端 ...原创 2017-01-24 13:43:03 · 57975 阅读 · 5 评论 -
SSL、TLS、HTTPS、SSH综述
1.Secure Socket Layer (SSL)SSL是传输层之上,对Socket连接的加密协议。SSL多用于Internet上,在浏览器和服务器之间的安全传输。SSL最初是由Netscape研发,版本演变如下:SSLv1(1994)未正式发布 SSLv2(1995) SSLv3(1996,RFC6101)2014年,人们发现POODLE攻击会造成SSL 3.0的bloc...原创 2017-01-24 13:18:11 · 11284 阅读 · 1 评论 -
Virtual Environment用法详解
Virtual Environment是一款工具,用以创建独立的虚拟环境。Virtual Environment主要解决的库依赖和版本依赖、以及间接授权等问题。virtualenv,是一款Python工具,用以创建独立的Python虚拟环境。在一个Python虚拟环境中,持有Python所必须的依赖库,形成Python的虚拟运行空间。virtualenv的使用方法如下:1.通过pi原创 2016-12-26 15:52:16 · 15387 阅读 · 0 评论 -
连接Linux服务器的终端仿真软件的termianl type详解
1.物理的terminal在历史上的客户机/服务器连接中,客户机是一种独立的硬件设备(包含键盘和显示屏)。一个客户机就作为一个terminal,用以连接、访问远程的服务器。客户机与服务器的通信协议:Telnet SSH客户机与服务器之间的文件传输的方式:FTP SCP常见的terminal就是DEC公司的VT(Video-Terminal)系列,如:VT102, VT220...原创 2016-11-14 23:15:43 · 8618 阅读 · 0 评论 -
lsof命令与fuser命令详解
如果要查看当前系统中打开的文件,lsof命令与fuser命令都可以实现。1.lsof命令lsof是LiSt Open Files的简写。该用以给出系统中打开的文件的列表,并给出关联的进程和用户;此外还可以用以采集系统的网络连接信息。该命令的常用参数说明:+d d_path 只扫描给出的目录+D d_path 递归扫描所有子目录-i IP@host:port扫原创 2016-10-11 23:15:47 · 2556 阅读 · 0 评论 -
Linux下的cURL工具概述
cURL包含一个命令行工具curl和一个类库libcurl,能够以非交互的模式通过URL传输数据。1.官网https://curl.haxx.se/源代码https://github.com/curl/curl最新版本:2016年9月发布的7.50.22.cURL支持多种主流的传输协议HTTPHTTPSFTPSFTPSCP3.cURL可以通过命令行或原创 2016-09-18 23:10:12 · 736 阅读 · 0 评论 -
在Suse Linux 11 SP4中启动eclipse时的Failed to load module "pk-gtk-module"异常
在SUSE Linux 11 SP4中,执行eclipse &以启动Eclipse时出现如下警告(Eclipse可以正常启动,但是在Shell中会提示如下异常):Gtk-Message: Failed to load module "pk-gtk-module": libpk-gtk-module.so: cannot open shared object file: No such file原创 2016-09-18 22:58:00 · 3784 阅读 · 0 评论 -
PackageKit概述
PackageKit是一款以方便Linux软件安装与升级为目的的系统,其设计初衷是在不同的Linux发布版中统一软件图形工具。1. PackageKit的官网旧官网http://www.packagekit.org最新官网https://www.freedesktop.org/software/PackageKit/2. PackageKit的源代码git clone ht原创 2016-09-17 00:04:26 · 5955 阅读 · 0 评论 -
Linux的环境模块Environment Modules软件包
Environment Modules软件包以模块为单位,为用户动态设置Linux或UNIX的环境变量的软件。模块的概念,“应用名”和“应用的版本”的二元组,即一个模块对应的是一个特定版本的应用。Environment Modules软件包独立于具体使用的Shell,支持多种主流的Shell。最新版本:2012.12发布的modules-3.2.10官网http://modules原创 2016-09-14 10:57:26 · 10825 阅读 · 0 评论 -
Secure Copy概述
1. SCP(Secure Copy)简介:SCP命令是内置于SSH命令之中的,用于在两个服务器之间安全地复制文件。2. SCP命令的常用参数“-r” parameter to copy directory and all files / directories inside“-P a_number” parameter to specify a specific port原创 2016-09-10 22:32:37 · 1562 阅读 · 0 评论 -
EJBCA简介
EJBCA是一款PKI方案的JavaEE实现软件,主要是提供CA实现,也包括RA和VA。可以为中小企业或组织构建完整的PKI基础设施。1.版本2017-02-20,EJBCA Enterprise 6.6.42017-02-13,EJBCA Community 6.5.0.42.用法EJBCA可以独立作为CA使用,也可以集成其他应用使用。EJBCA CA与RA可以在一起,也原创 2017-03-10 23:49:45 · 3413 阅读 · 1 评论 -
Linux下的rsync命令详解(受不了网上以讹传讹的翻译)
rsync是一款UNIX系统中的开源工具,提供增量的文件传输功能。rsync采用GNU GPL许可证。rsync的最新版本是2015.12.21发布的3.1.2。1.rsync工具的组成rsync文件,实现远程文件复制的命令rsync.conf文件,在Daemon模式中的rsync命令所使用的配置文件2.rsync的使用1) rsync server一台机器原创 2017-04-14 15:58:24 · 3382 阅读 · 1 评论 -
Shell终端输出字符的颜色总结
Shell终端输出的字符默认为黑底灰字。如何能够通过Shell的属性改变其颜色呢?这就需要使用颜色相关的控制串(control sequences)。Shell的control sequences位于\[\033[与\]之间,而与颜色相关的control sequences位于\[\033[与m\]之间。在Python中,直接以'\033[字体风格;前景色;背景色m'的形式设置终端输出原创 2017-09-29 13:15:04 · 1699 阅读 · 0 评论 -
Putty连接的Couldn't agree a client-to-server cipher错误
Putty连接服务器时出现如下提示错误:没别的办法,升级Putty是最简单的解决办法。参考链接:http://www.putty.org/原创 2017-09-20 10:28:11 · 8445 阅读 · 0 评论 -
Curl命令的data, data-ascii, data-binary, data-raw和data-urlencode选项详解
Curl命令为HTTP POST方法提供了若干种设置数据的选项,这里比较一下。1. 首先说明如下给出的选项的相同点模拟Web页面中提交表单,用于POST请求 默认Content-type为application/x-www-form-urlencoded 选项的value如果是@a_file_name,表示数据来自一个文件 选项的value如果是-,表示读取stdin作为提交的数据,...原创 2017-08-10 09:07:42 · 84427 阅读 · 4 评论 -
Secure Shell概述
SSH(Secure Shell),IETF为远程登录会话和其他网络服务提供安全性的协议,用以替代Telnet和POP3。1. SSH的版本SSH 1.xSSH 2.x2. SSH的构成层次连接协议 [SSH-CONNECT]用户认证协议 [SSH-USERAUTH]传输层协议 [SSH-TRANS]3. SSH的服务端sshd守护进程处原创 2016-09-10 22:26:57 · 1569 阅读 · 0 评论