apt-cacher-ng 启动后没有响应

apt-cacher-ng 启动后没有响应

问题

apt-get命令(在 Debian 上)无法通过apt-cacher-ng代理(安装在 Centos 上)访问存储库。

环境

# /etc/centos-release
CentOS Linux release 7.5.1804 (Core)

$ yum -q info apt-cacher-ng.x86_64
Installed Packages
Name        : apt-cacher-ng
Arch        : x86_64
Version     : 3.1
Release     : 4.el7
...
From repo   : epel
...

Debian 是 7.11

细节

tcpdumpapt-cacher-ng在 Centos 上显示to (single)apt-get的请求没有任何答复:

# tcpdump -i eno1 -nn port 3142                                                                                                                                                                
...
15:05:17.528378 IP 10.XX.XX.XX.38562 > 10.YY.YY.YY.3142: Flags [S], seq 2752129391, win 29200, options [mss 1460,sackOK,TS val 85570664 ecr 0,nop,wscale 4], length 0

strace在 Centows 上显示apt-cacher-ng挂在select()系统调用上:

...
open("/dev/null", O_RDWR)               = 6
fstat(6, {st_mode=S_IFCHR|0666, st_rdev=makedev(1, 3), ...}) = 0
dup2(6, 0)                              = 0
dup2(6, 1)                              = 1
dup2(6, 2)                              = 2
close(6)                                = 0
select(6, [5], [], NULL, NULL

粘贴的完整痕迹:https://paste.ee/p/lLtS8#s=0

strace 对侦听 3142 端口上的传入数据包没有反应。

编辑

日志文件中有单个字符串:

Tue Oct  2 14:18:15 2018|Not creating Unix Domain Socket, fifo_path not specified

但我不知道它什么时候出现(发射次数远不止一次)。

编辑2

客户端配置/etc/apt/apt.conf.d/00aptproxy文件:

Acquire::http::Proxy "http://10.XX.XX.XX:3142";

SELinux 处于宽容模式。

防火墙有一个规则:

-A INPUT -p udp -m udp --dport 3142 -m conntrack --ctstate NEW -j ACCEPT

编辑3

当前acng的配置:

# grep -Ev "^$|^#" /etc/apt-cacher-ng/acng.conf 
CacheDir: /var/cache/apt-cacher-ng
LogDir: /var/log/apt-cacher-ng
SupportDir: @LIBDIR@
Port:3142
BindAddress:0.0.0.0
ReportPage: acng-report.html
VerboseLog: 1
ForeGround: 1
ExThreshold: 4
Debug: 7
LocalDirs: acng-doc @DOCDIR@
UseWrap: 0

Sic(!) 内部 WebUI 可用于curl 127.0.0.1:3142,但不能从客户端 ( curl 10.XX.XX.XX:3142)

编辑4

# cat /sys/class/net/eno1/statistics/rx_dropped
0

dropwatch -l kas也没有显示任何掉落(当我在客户端上运行时apt-cacher-ngapt-get update

如何正确跟踪 TCP/IP 堆栈?谷歌说这两种方法就足够了..(ifconfig并且netstat在存储库中不可用并且ethtool不支持-S标志)


现在我不知道下一步该从哪里挖来解决这个问题。

我不明白fd6( /dev/null) 的监视是否是真正的问题以及为什么进程需要克隆这个 fd..

有人建议我还可以检查哪些内容来找到根本原因或提示解决方法吗?

相关内容