标签: glibc

如何禁用 AAAA 查找?

... 以补偿我们无法控制的损坏的 DNS 服务器。

我们的问题:我们部署了嵌入式设备,这些设备在各个站点(主要是仅支持 IPv4 的站点)收集传感器数据。一些站点的网络维护不善,例如错误配置或以其他方式损坏的 DNS 缓存和/或防火墙,它们要么完全忽略 AAAA 查询,要么以损坏的回复(例如错误的源 IP!)响应它们。作为设施部门的外部供应商,我们对(有时是不情愿的)IT 部门几乎没有影响。他们很快修复 DNS 服务器/防火墙的机会微乎其微。

对我们设备的影响是,对于每个 gethostbyname(),进程必须等到 AAAA 查询超时,此时某些进程已经完全超时了它们的连接尝试。

我正在寻找解决方案...

  • 全系统。我无法单独重新配置数十个应用程序
  • 非永久性和可配置的。我们需要(重新)启用 IPv6,当它被修复/推出时。重启就OK了。
  • 如果解决方案需要替换像 glibc 这样的核心库,则替换库包应该可以从众所周知的维护良好的存储库(例如 Debian Testing、Ubuntu Universe、EPEL)中获得。自建不是一种选择,原因有很多,我什至不知道从哪里开始,所以我根本没有列出它们......

最明显的解决方案是配置解析器库,例如通过 /etc/{ resolv , nsswitch , gai }.conf 不查询 AAAA 记录。中resolv.conf选项no-inet6建议作为这里正是我所期待的。不幸的是,它没有实现,至少在我们的系统上没有实现(Debian 7 上的 libc6-2.13-38+deb7u4;Ubuntu 14.04 上的 libc6-2.19-0ubuntu6.3)

那怎么办呢?有人发现在 SF 和其他地方建议使用以下方法,但它们都不起作用:

  • 完全禁用 IPv6,例如通过将 /etc/modprobe.d/ 中的 ipv6 LKM 列入黑名单,或sysctl -w net.ipv6.conf.all.disable_ipv6=1. (出于好奇:为什么解析器要求禁用 IPv6 的 AAAA?
  • options inet6从 /etc/resolv.conf 中删除。它一开始并不存在,inet6现在只是默认启用。
  • options …

domain-name-system linux ipv6 glibc

39
推荐指数
3
解决办法
4万
查看次数

在 Linux 上更新库后是否必须重新启动?

昨天的 CVE-2015-7547 使我想到了一个问题,我是否必须在安装 glibc 更新后重新启动所有链接到 glibc 的应用程序和服务?

或者更一般地说,在安全性方面,是否建议在此库收到安全更新时使用该库重新启动所有应用程序或服务?或者重新启动整个计算机可能更好?

linux library glibc

18
推荐指数
1
解决办法
3082
查看次数

在 CentOS 7 上安全地升级 glibc

我在 CentOS 机器上尝试了一个 python 应用程序,它给了我以下错误:

ImportError: /usr/lib64/libc.so.6: version `GLIBC_2.18' not found (required by /tmp/_MEI2BYIr4/libstdc++.so.6)
Run Code Online (Sandbox Code Playgroud)

我一直想升级 GLIBC,但是在阅读了一些论坛之后,我似乎可以破坏系统。你知道有什么替代方案吗?

谢谢

update upgrade glibc libc6 centos7

11
推荐指数
1
解决办法
5万
查看次数

在 CentOS 5.X 上安装 libxml2 2.7.X

CentOS 附带 libxml2-2.6.26。我必须至少安装 2.7.X 版本。

我从 XMLSOFT ( http://xmlsoft.org/sources/ )下载了 libxml2、libxml2-devel 和 libxml2-python (2.7.8) 的 RPM 。

我正在尝试以这种方式安装它:

# yum localinstall libxml2-2.7.8-1.x86_64.rpm libxml2-devel-2.7.8-1.x86_64.rpm libxml2-python-2.7.8-1.x86_64.rpm
Run Code Online (Sandbox Code Playgroud)

我得到:

Examining libxml2-devel-2.7.8-1.x86_64.rpm: libxml2-devel-2.7.8-1.x86_64
Marking libxml2-devel-2.7.8-1.x86_64.rpm as an update to libxml2-devel-2.6.26-2.1.2.8.el5_5.1.x86_64
Examining libxml2-python-2.7.8-1.x86_64.rpm: libxml2-python-2.7.8-1.x86_64
Marking libxml2-python-2.7.8-1.x86_64.rpm as an update to libxml2-python-2.6.26-2.1.2.8.el5_5.1.x86_64
Resolving Dependencies
--> Running transaction check
---> Package libxml2.x86_64 0:2.7.8-1 set to be updated
--> Processing Dependency: libc.so.6(GLIBC_2.7)(64bit) for package: libxml2
---> Package libxml2-devel.x86_64 0:2.7.8-1 set to be updated
---> Package libxml2-python.x86_64 0:2.7.8-1 set to …
Run Code Online (Sandbox Code Playgroud)

centos yum glibc

9
推荐指数
2
解决办法
3万
查看次数

GLIBC 升级会出现什么问题?

我最近安装了一个软件,我的团队在明年 9 月开始的一个研究项目中需要它。事实证明,该软件在与 glibc 2.12.1 一起使用时存在已知的崩溃错误。我的老板问我们是否可以在应该运行它的服务器上升级 glibc。提示我怀疑的沉默......

在某个时候,我想到了搞乱 glibc 和搞乱饥饿的美洲狮一样好主意。然而,我一直无法确定这种信念的来源。所以,如果我继续这样做:

  1. 我是否在做一些明显愚蠢的事情(例如,我不会解决我的问题,我会破坏我的服务器,或者我会引发僵尸启示录)?
  2. 会出什么问题?
  3. 什么可能出错?
  4. 我如何避免回答 2 和 3?

linux glibc

9
推荐指数
1
解决办法
3679
查看次数

Linux:为某些应用程序/主机名阻止 IPv6

问题与目标

我们没有从我们的 ISP 获得 IPv6,因此我有一个 IPv6 隧道,它工作正常,但当然不是很快。而且不是很可靠。我喜欢“以防万一”提供 IPv6,但我希望某些主机(域)仅与 IPv4 连接。

默认协议

在我看来,所有应用程序都首先尝试 IPv6;这可能是 glibc 设置。如果这个默认值被反转(对于所有应用程序),我会很好。

网络过滤器

可以使用 Netfilter 阻止 IPv6 地址/网络,但有两个问题:

  1. 当应用程序在尝试 IPv4 之前等待 IPv6 超时时,这会导致延迟吗?
  2. 有的域似乎混杂,看起来像混沌。如果可以避免,将 google.com 和 youtube.com 分开似乎是您不想做的事情。

我只是注意到手册页ip route说的是路由类型unreachable

本地发件人收到 EHOSTUNREACH 错误。

Netfilter DROP 或 REJECT 是否也会发生同样的情况?此类错误不应导致相关延迟。

DNS过滤

另一种解决方案(如果可能的话,相当简单)是过滤某些域的 AAAA 记录。如果这不是(很容易)可能:是否可以连接 DNS 服务器和 Netfilter,以便我知道“IP 地址 X 属于域 Y”,以便我可以将其添加到 Netfilter?有什么比记录所有内容和 grep 日志更优雅的事情吗?

要走的路?

有哪些(其他)可能性,什么是最简单的?

domain-name-system linux iptables ipv6 glibc

8
推荐指数
2
解决办法
2048
查看次数

CentOS 5.5 上的 glibc 2.7?

我正在尝试运行一个需要 glibc 2.7 的程序,但我在 CentOS 5.5 上运行它。有没有办法做到这一点?我无法升级到 CentOS 6。

redhat centos gnu glibc

6
推荐指数
1
解决办法
2万
查看次数

5秒解析延迟

使用 wget (curl, httplib2) 我总是得到 5 秒的解析超时。当我执行 wget -4 或 wget -6 时,这个问题不会出现。解析也可以使用 dig 或 host。可以使用 /etc/resolv.conf 中的“options timeout:2”降低延迟

这个的 strace 输出是:

15:19:09.908234 uname({sys="Linux", node="openkvk", ...}) = 0 
15:19:09.908413 socket(PF_INET, SOCK_DGRAM|SOCK_NONBLOCK, IPPROTO_IP) = 3 
15:19:09.908482 connect(3, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("212.83.206.202")}, 16) = 0 
15:19:09.908569 poll([{fd=3, events=POLLOUT}], 1, 0) = 1 ([{fd=3, revents=POLLOUT}]) 
15:19:09.908637 sendto(3, "F\347\1\0\0\1\0\0\0\0\0\0\10slashdot\3org\0\0\1\0\1", 30, MSG_NOSIGNAL, NULL, 0) = 30 
15:19:09.908735 poll([{fd=3, events=POLLIN|POLLOUT}], 1, 5000) = 1 ([{fd=3, revents=POLLOUT}])
15:19:09.908804 sendto(3, "F\331\1\0\0\1\0\0\0\0\0\0\10slashdot\3org\0\0\34\0\1", 30, MSG_NOSIGNAL, NULL, 0) = 30 
15:19:09.908884 poll([{fd=3, …
Run Code Online (Sandbox Code Playgroud)

domain-name-system linux glibc

5
推荐指数
1
解决办法
6279
查看次数

我可以在没有破坏服务器的风险的情况下更新 libc.so.6 吗?

我有一台服务器,由于不同的原因我无法升级。它运行的是 SUSE 11.4。我需要运行一个需要 GLIBC_2.14 的包,我有 GLIB_2.11

我得到的错误是:

/software/AMBER12/amber12/bin/xaLeap: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /software/AMBER12/amber12/bin/xaLeap)
Run Code Online (Sandbox Code Playgroud)

我无法使用包管理器安装库,因为系统太旧,不再支持。至少不再获取更新了。所以,问题是,如果我设法安装丢失的库,我会破坏我的系统吗?既然是libc.so.6的更新,不知道会不会还需要其他依赖的更新?

opensuse glibc

2
推荐指数
1
解决办法
2295
查看次数

RPM 命令挂起

在 Cent OS 5 上,rpm命令挂在我的 Linux 机器上。

[root@manage glib]# rpm -i libgcc-4.1.1-52.el5.i386.rpm

[root@manage glib]# ps -efww | grep libgcc
root      2020 32168  0 13:50 pts/0    00:00:00 grep libgcc
root     14254  2974  0 13:09 pts/1    00:00:00 rpm -i libgcc-4.1.1-52.el5.i386.rpm
Run Code Online (Sandbox Code Playgroud)

以下是strace

[root@manage glib]# strace -p 14254
Process 14254 attached - interrupt to quit
select(0, NULL, NULL, NULL, {0, 643179}) = 0 (Timeout)
select(0, NULL, NULL, NULL, {1, 0})     = 0 (Timeout)
select(0, NULL, NULL, NULL, {1, 0})     = …
Run Code Online (Sandbox Code Playgroud)

linux installation rpm glibc

2
推荐指数
1
解决办法
8729
查看次数

在 SUSE 11 中升级 glibc 版本

SUSE 11 SP4 附带 glibc 版本 2.11.3。对于我的应用程序,我需要高于该版本的 glibc。SUSE 12 附带 glibc 版本 2.19.x。我在我的机器上加载了 SUSE 12 磁盘并找到了 glibc-2.19 rpm。但是当我尝试安装它时会出现以下错误

Preparing...                ########################################### [100%]
    file /etc/bindresvport.blacklist from install of glibc-2.19-31.9.x86_64 conflicts with file from package glibc-2.11.3-17.84.1.x86_64
    file /etc/default/nss from install of glibc-2.19-31.9.x86_64 conflicts with file from package glibc-2.11.3-17.84.1.x86_64
    file /etc/gai.conf from install of glibc-2.19-31.9.x86_64 conflicts with file from package glibc-2.11.3-17.84.1.x86_64
    file /etc/ld.so.conf from install of glibc-2.19-31.9.x86_64 conflicts with file from package glibc-2.11.3-17.84.1.x86_64
    file /etc/rpc from install of glibc-2.19-31.9.x86_64 conflicts with file from package …
Run Code Online (Sandbox Code Playgroud)

sles glibc

0
推荐指数
1
解决办法
4226
查看次数