質問
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
詳細
tcpdump
apt-cacher-ng
応答なしでCentosから(シングル)への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
しかし、いつ現れるのかわかりません(1回以上リリースされたことが多いです)。
編集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-ng
また、(クライアントで実行している場合)ドロップは表示されませんapt-get update
。
TCP / IPスタックを正しく追跡する方法は? Googleはこの2つの方法で十分だと言います。 (ifconfig
リポジトリnetstat
では使用できず、フラグはethtool
サポートしていません)-S
今、この問題を解決するために、次にどこを掘り下げるべきかわかりません。
fd6
(/dev/null
監視)が実際の問題であるか、プロセスがこのfdを複製する必要があるのかを理解していません。
根本的な原因や回避策についてのヒントを見つけるために他の提案がある人はいますか?