存档在 2016年7月

报错:解决OpenSSL文件丢失导致yum和ssh失效

2016年7月31日

可以确定yum安装OpenSSL的库文件位置是:

/usr/lib64/libssl.so.10
/usr/lib64/libcrypto.so.10

参考 http://amon.org/openssl 进行安装,相关库文件位置是:

/usr/lib/libssl.so.1.0.0
/usr/lib/libcrypto.so.1.0.0

建立软链接:

ln -s /usr/lib/libssl.so.1.0.0 /usr/lib64/libssl.so.10
ln -s /usr/lib/libcrypto.so.1.0.0 /usr/lib64/libcrypto.so.10

然后测试yum和ssh,暂时恢复正常。

赶紧yum安装OpenSSL:

yum install openssl

怎样使用iptables防火墙软件

2016年7月29日

【介绍】

iptables是Linux上常用的防火墙软件。

【网络】

如果外网IP不能被访问,可能是因为iptables的原因。

CentOS 7.0之前的系统:

输入:

service iptables stop

CentOS 7.0之后的系统:

输入:

service iptables stop

输出报错:

Redirecting to /bin/systemctl stop  iptables.service
Failed to stop iptables.service: Unit iptables.service not loaded.

原因是CentOS从7开始默认用的是firewalld,这个是基于iptables的,虽然有iptables的核心,但是iptables的服务是没安装的。所以你只要停止firewalld服务即可。

参考:《CentOS 7.2 (mini) 里iptables防火墙怎么关闭? 》

先停止服务,禁用服务:

systemctl stop firewalld.service && systemctl disable firewalld.service

输出:

Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.

查看状态:

systemctl list-unit-files | grep firewalld

输出:

firewalld.service                      disabled

如果需要改用iptables的话,需要安装iptables服务:

yum install iptables-services
systemctl enable iptables
systemctl enable ip6tables
systemctl start iptables
systemctl start ip6tables

查看状态:

systemctl list-unit-files | grep iptables

如果需要启动 firewalld :

systemctl start firewalld.service

【命令】

1. 安装iptables防火墙

yum install iptables

2. 清除已有iptables规则

iptables -F
iptables -X
iptables -Z

3. 开放指定的端口

-A和-I参数分别为添加到规则末尾和规则最前面。

#允许本地回环接口(即运行本机访问本机)

iptables -A INPUT -i lo -j ACCEPT

# 允许已建立的或相关连的通行

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#允许所有本机向外的访问

iptables -A OUTPUT -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

#允许ping

iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

#禁止其他未允许的规则访问

iptables -A INPUT -j REJECT  #(注意:如果22端口未加入允许规则,SSH链接会直接断开。)
iptables -A FORWARD -j REJECT

4. 屏蔽IP

#如果只是想屏蔽IP的话“3. 开放指定的端口”可以直接跳过。

#屏蔽单个IP的命令

iptables -I INPUT -s 123.45.6.7 -j DROP

#封整个段即从123.0.0.1到123.255.255.254的命令

iptables -I INPUT -s 123.0.0.0/8 -j DROP

#封IP段即从123.45.0.1到123.45.255.254的命令

iptables -I INPUT -s 124.45.0.0/16 -j DROP

#封IP段即从123.45.6.1到123.45.6.254的命令是

iptables -I INPUT -s 123.45.6.0/24 -j DROP

4. 查看已添加的iptables规则

iptables -L -n

v:显示详细信息,包括每条规则的匹配包数量和匹配字节数
x:在 v 的基础上,禁止自动单位换算(K、M) vps侦探
n:只显示IP地址和端口号,不将ip解析为域名

5. 删除已添加的iptables规则

将所有iptables以序号标记显示,执行:

iptables -L -n --line-numbers

比如要删除INPUT里序号为8的规则,执行:

iptables -D INPUT 8

6. iptables的开机启动及规则保存

CentOS上可能会存在安装好iptables后,iptables并不开机自启动,可以将其加入开机启动:

chkconfig --level 345 iptables on

保存规则:

service iptables save

参考:http://www.vpser.net/security/linux-iptables
参考:https://www.cnblogs.com/zongfa/p/7967935.html

报错:FAIL: test-script.sh

2016年7月29日

当编译安装libevent2进行make verify时,报错:

make[5]: Entering directory `/root/apache/libevent-2.0.22-stable/test'
FAIL: test-script.sh

参考:https://github.com/libevent/libevent/issues/38

建议忽略这个错误。

From the looks of it, your resolver isn’t answering the PTR requests for the address 127.0.0.1. Those unit tests expect that the resolver will tell it some answer (ideally “localhost”).

Personally, I would recommend instead that you skip this test or ignore the results if it isn’t passing; it was IMO a mistake to have libevent

参考:https://github.com/jedisct1/dnscrypt-proxy/issues/26

怎样编译安装libxml2

2016年7月28日

参考:http://linuxfromscratch.org/blfs/view/svn/general/libxml2.html
参考:https://mail.gnome.org/archives/commits-list/2012-January/msg11021

编译安装spdylay要求:

libxml - version >= 2.7.7.

下载:http://xmlsoft.org/sources/

最高版本:libxml2-2.9.4

wget http://xmlsoft.org/sources/libxml2-2.9.4.tar.gz && tar zxvf libxml2-2.9.4.tar.gz && cd libxml2-2.9.4
export PKG_CONFIG=/usr/bin/pkg-config PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig Z_CFLAGS="-I/usr/include" Z_LIBS="-L/usr/lib -lz" LZMA_CFLAGS="-I/usr/include" LZMA_LIBS="-L/usr/lib -llzma" ICU_CFLAGS="-I/usr/include" ICU_LIBS="-L/usr/lib/icu -licu"
./configure --prefix=/usr --disable-static --with-history
make && make install

为什么解压后从前需要,现在不需要:

sed -i "/seems to be moved/s/^/#/" ltmain.sh

输出:

...
/usr/bin/mkdir -p '/usr/include/libxml2/libxml'
...
libtool: install: /usr/bin/install -c .libs/libxml2.so.2.9.4 /usr/lib/libxml2.so.2.9.4
...
libtool: install: /usr/bin/install -c .libs/libxml2.lai /usr/lib/libxml2.la
...
libtool: install: /usr/bin/install -c .libs/xmllint /usr/bin/xmllint
libtool: install: /usr/bin/install -c .libs/xmlcatalog /usr/bin/xmlcatalog
...
/usr/bin/mkdir -p '/usr/lib/cmake/libxml2'
...
/usr/bin/install -c -m 644 libxml-2.0.pc '/usr/lib/pkgconfig'
...
 /usr/bin/install -c -m 644 drv_libxml2.py libxml2.py '/usr/lib/python2.7/site-packages'
...

安装完成。

相关文件路径:

/usr/include/libxml2
/usr/lib/libxml2.so.2.9.4
/usr/lib/cmake/libxml2
/usr/lib/pkgconfig/libxml-2.0.pc
/usr/lib/python2.7/site-packages/libxml2.py

当编译安装libxml2时,报错:

...
  CC       xmlIO.lo
xmlIO.c: In function ‘xmlXzfileClose’:
xmlIO.c:1450:52: error: ‘LZMA_OK’ undeclared (first use in this function)
     ret =  (__libxml2_xzclose((xzFile) context) == LZMA_OK ) ? 0 : -1;
                                                    ^
xmlIO.c:1450:52: note: each undeclared identifier is reported only once for each function it appears in
make[2]: *** [xmlIO.lo] Error 1
make[2]: Leaving directory `/root/apache/libxml2-2.9.4'
...

这是因为缺少lzma。

那么安装:

yum install lzma

参考:http://amon.org/xz

报错:lib….so.10 is empty, not checked.

2016年7月28日

在yum安装一组包时,程序故障导致安装中止。

运行:


ldconfig

输出:


ldconfig: File /lib64/libzzip-0.so.10 is empty, not checked.
ldconfig: File /lib64/libzzip-0.so.11 is empty, not checked.
ldconfig: File /lib64/libzzip-0.so.12 is empty, not checked.
ldconfig: File /lib64/libzzip-0.so.13 is empty, not checked.
ldconfig: File /lib64/libzzip-0.so.13.0.62 is empty, not checked.
ldconfig: File /lib64/libzzipfseeko-0.so.10 is empty, not checked.
ldconfig: File /lib64/libzzipfseeko-0.so.11 is empty, not checked.
ldconfig: File /lib64/libzzipfseeko-0.so.12 is empty, not checked.
ldconfig: File /lib64/libzzipfseeko-0.so.13 is empty, not checked.
ldconfig: File /lib64/libzzipfseeko-0.so.13.0.62 is empty, not checked.
ldconfig: File /lib64/libzzipmmapped-0.so.10 is empty, not checked.
ldconfig: File /lib64/libzzipmmapped-0.so.11 is empty, not checked.
ldconfig: File /lib64/libzzipmmapped-0.so.12 is empty, not checked.
ldconfig: File /lib64/libzzipmmapped-0.so.13 is empty, not checked.
ldconfig: File /lib64/libzzipmmapped-0.so.13.0.62 is empty, not checked.
ldconfig: File /lib64/libzzipwrap-0.so.13 is empty, not checked.
ldconfig: File /lib64/libzzipwrap-0.so.13.0.62 is empty, not checked.

对于这种特征的报错,只需要重新安装相应包即可。

经搜索,以上文件均与属于zziplib这个包。

运行:


yum reinstall zziplib

再运行ldconfig输出为空,报错消失。

参考:https://pkgs.org/centos-6/nux-dextop-i386/zziplib-devel-0.13.62-5.el6.nux.i686.rpm
参考:http://www.unix.com/unix-for-advanced-and-expert-users/182811-sbin-ldconfig-file-usr-lib-libquazip-so-1-0-0-empty-not-checked
参考:https://www.centos.org/forums/viewtopic.php?t=55823