헤드리스 원격 서버에서 IPv4는 시간당 여러 번 오프라인 상태가 되며 IPv6은 영향을 받지 않습니다.

헤드리스 원격 서버에서 IPv4는 시간당 여러 번 오프라인 상태가 되며 IPv6은 영향을 받지 않습니다.

내 Ubuntu 14.04.2 서버에서 IPv4는 시간당 몇 번씩 오프라인 상태가 됩니다(한 번에서 네 번 정도 발생하는 것을 보았지만 시간당 특정 분 정도는 발생하지 않았습니다).

내 호스트는 문제가 서버 측에 있다고 주장하며 데비안 기반 복구 시스템이 동일한 증상을 나타내지 않는다는 사실이 나로 하여금 그들이 옳다고 생각하게 만듭니다. 그러나 복구 시스템은 설치된 Ubuntu 시스템과 같은 인터페이스에서 전역 IPv6 주소를 구성하지 않습니다.

일반적으로 SSH 연결은 시간 초과 패킷이 너무 많아 시간당 1~4회(IPv4 기준) 연결이 끊어집니다.

다른 원격 서버에서 서버를 모니터링할 때 ICMPv4 ping이 시간 초과되거나 라우터가 대상 호스트를 사용할 수 없다고 응답합니다(이러한 상황은 매우 자주 발생합니다!). 동시에 ICMPv6 ping은 전혀 영향을 받지 않습니다.

또한 다른 원격 호스트에서 IPv6을 사용하여 SSH를 통해 연결하면 연결이 중단되지 않고 시스템이 정지되지 않습니다(처음에 의심했던 대로).

시스템 및 커널 로그에도 문제가 없다고 나타나므로 모든 방화벽 규칙을 비활성화하든 방화벽을 켜든 상관이 없습니다. 또한 이를 실행하고 삭제된 모든 패킷의 로깅을 활성화하여 이 중 일부를 연관시킬 수 있는지 확인했습니다.

이러한 오프라인 시간에는 cron실행되는 작업이 없으며 같은 시간 동안도 발생하지 않습니다. 이는 일부 일반 cron작업이 있음을 나타냅니다.

또 다른 측면도 좁혀봤습니다. 핑(ICMPv4)을 할 때~에서증상을 보이는 호스트의 경우 루프백은 영향을 받지 않습니다 eth0. 나에게 이것은 일반적으로 IPv4와 아무 관련이 없으며 시스템의 네트워크 카드 중 하나에 해당하는 인터페이스에만 해당된다는 것을 의미합니다.

여기에서 문제 해결을 계속하려면 어떻게 해야 합니까? 지금까지 내가 한 일을 고려할 때 다음 단계는 무엇입니까? 내가 보고 있는 증상에 해당하는 알려진 버그가 있습니까?

알아채다:나는 이 문제를 진단하는 데 한 달 이상을 소비했습니다. 그래서 여기에 묻는 것이 나에게는 최후의 수단이다. 필요에 따라 자세한 내용을 요청해 주시면 추가하겠습니다.


지금까지 내가 한 일:

  • ping그리고ping6
  • mtr서버에서 서버로, 내 호스트는 손실된 몇 개의 패킷에 대해 특별한 것이 없다고 생각합니다.
  • 각각 IPv4 및 IPv6를 통한 SSH 연결
  • tail- 오프라인 기간 동안 어떤 것이 나타나는지 확인하기 /var/log/kern.log위해/var/log/syslog/var/log/auth.log
  • IPv4 및 IPv6에 대한 모든 방화벽 규칙을 각각 새로 고쳤습니다.
    • 또한 삭제된 패킷의 로깅을 활성화하면 됩니다.
  • 잠재적인 원인으로 의심되는 여러 패키지를 제거했습니다.

다음은 수동으로 설치된 패키지 목록입니다.

# echo $(apt-mark showmanual)
acl adduser aggregate apparmor apparmor-profiles apparmor-utils apt apt-cacher-ng apt-file apt-rdepends apt-utils base-files base-passwd bash bash-completion bash-static bridge-utils bsdutils btrfs-tools busybox-initramfs busybox-static bzip2 bzr ca-certificates cgmanager cgroup-bin cifs-utils colordiff coreutils cpio crda cron cron-apt cryptmount cryptsetup dash debconf debianutils debootstrap debsums dh-python dialog diffutils dnsutils dpkg dpkg-dev duplicity e2fslibs e2fsprogs ed etckeeper fakechroot fakeroot file findutils gcc-4.8-base gcc-4.9-base gdisk-noicu git git-svn gnupg gnutls-bin gpgv grep gzip haveged heirloom-mailx hostname htop ifupdown init-system-helpers initramfs-tools initramfs-tools-bin initscripts insserv iproute2 ipset iptables iputils-ping klibc-utils kmod kpartx less libacl1 libapt-inst1.5 libapt-pkg4.12 libattr1 libaudit-common libaudit1 libblkid1 libbz2-1.0 libc-bin libc6 libcap2 libcgmanager0 libck-connector0 libcomerr2 libdb5.3 libdbus-1-3 libdebconfclient0 libdrm2 libedit2 libevent-2.0-5 libexpat1 libffi6 libgcc1 libgdbm3 libgssapi-krb5-2 libjson-c2 libjson0 libk5crypto3 libkeyutils1 libklibc libkmod2 libkrb5-3 libkrb5support0 liblzma5 libmount1 libmpdec2 libncurses5 libncursesw5 libnih-dbus1 libnih1 libnl-3-200 libnl-genl-3-200 libpam-modules libpam-modules-bin libpam-mount libpam-runtime libpam-systemd libpam0g libpci3 libpcre3 libplymouth2 libpng12-0 libprocps3 libpython-stdlib libpython2.7-minimal libpython2.7-stdlib libpython3-stdlib libpython3.4-minimal libpython3.4-stdlib libreadline6 libselinux1 libsemanage-common libsemanage1 libsepol1 libslang2 libsqlite3-0 libss2 libssl1.0.0 libstdc++6 libtinfo5 libudev1 libui-dialog-perl libusb-0.1-4 libusb-1.0-0 libustr-1.0-1 libuuid1 libwrap0 linux-firmware linux-image-3.13.0-24-generic linux-image-extra-3.13.0-24-generic linux-image-generic localepurge locales logcheck logcheck-database login logrotate lsb-base lsb-release lshw lsof lxc lxc-templates make makedev man-db manpages manpages-dev mawk mc md5deep mdadm mercurial mime-support mlocate module-init-tools molly-guard mount mountall mtr-tiny multiarch-support ncurses-base ncurses-bin ndisc6 net-tools netcat-openbsd netsniff-ng nmap openntpd openssh-client openssh-server openssh-sftp-server p7zip-full p7zip-rar passwd pax pciutils perl perl-base perl-modules plymouth postfix procps psmisc pv python python-apt-common python-mako python-mechanize python-minimal python2.7 python2.7-minimal python3 python3-apt python3-minimal python3.4 python3.4-minimal readline-common reprepro resolvconf rsyslog sed sensible-utils sharutils smartmontools subversion sudo sysv-rc sysvinit-utils tar tcpdump tcptraceroute tmux traceroute tree tzdata ubuntu-keyring ucf udev uidmap unattended-upgrades unbound-host unrar unzip upstart usbutils util-linux vim-nox vnstat wget whois wireless-regdb xz-utils zerofree zip zlib1g zsh-doc zsh-static

debootstrap(물론 그 중 일부는 프로세스에서 비롯됩니다.)


요청된 정보:

$ uname -a|sed 's/'$(hostname -f)'/foobar/g'
Linux foobar 3.13.0-46-generic #79-Ubuntu SMP Tue Mar 10 20:06:50 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

최신 커널로 업데이트했습니다.(팩 linux-image-generic-lts-utopic):

$ uname -a|sed 's/'$(hostname -f)'/foobar/g'
Linux foobar 3.16.0-33-generic #44~14.04.1-Ubuntu SMP Fri Mar 13 10:33:29 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

출력은 sysctl -a익명화되어 배치되었습니다.여기.

명령은 다음과 같습니다( sed인터페이스 이름을 1로 바꾸 려면 1을 뺍니다 _bridge).

sudo sysctl -a|sed 's/'$(hostname -f)'/foobar/g;s/'$(hostname -s)'/foobar/g'|grep -Ev '^net\.ipv[46]\.(neigh|conf)\._[s]'|grep -v nf_log

전반적으로 있습니다IPv4 및 IPv6용으로 구성된 모든 인터페이스와 마찬가지로 _bridgeIP 주소만 다릅니다. 그러나 현재는 사용되지 않습니다. 각 객실에는 LXC 고객 1명이 숙박할 수 있습니다.

# lspci -s 06:00.0 -vv
06:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 02)
        Subsystem: Micro-Star International Co., Ltd. [MSI] X58 Pro-E
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0, Cache Line Size: 256 bytes
        Interrupt: pin A routed to IRQ 42
        Region 0: I/O ports at e800 [size=256]
        Region 2: Memory at fbeff000 (64-bit, non-prefetchable) [size=4K]
        Region 4: Memory at f6ff0000 (64-bit, prefetchable) [size=64K]
        [virtual] Expansion ROM at fbe00000 [disabled] [size=128K]
        Capabilities: [40] Power Management version 3
                Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0+,D1+,D2+,D3hot+,D3cold+)
                Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
                Address: 00000000fee00000  Data: 40c1
        Capabilities: [70] Express (v1) Endpoint, MSI 01
                DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s <512ns, L1 <64us
                        ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
                DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
                        RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop-
                        MaxPayload 128 bytes, MaxReadReq 4096 bytes
                DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq+ AuxPwr+ TransPend-
                LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <512ns, L1 <64us
                        ClockPM+ Surprise- LLActRep- BwNot-
                LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+
                        ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
                LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
        Capabilities: [b0] MSI-X: Enable- Count=2 Masked-
                Vector table: BAR=4 offset=00000000
                PBA: BAR=4 offset=00000800
        Capabilities: [d0] Vital Product Data
                Unknown small resource type 05, will not decode more.
        Capabilities: [100 v1] Advanced Error Reporting
                UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
                CESta:  RxErr+ BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
                CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
                AERCap: First Error Pointer: 00, GenCap+ CGenEn- ChkCap+ ChkEn-
        Capabilities: [140 v1] Virtual Channel
                Caps:   LPEVC=0 RefClk=100ns PATEntryBits=1
                Arb:    Fixed- WRR32- WRR64- WRR128-
                Ctrl:   ArbSelect=Fixed
                Status: InProgress-
                VC0:    Caps:   PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
                        Arb:    Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
                        Ctrl:   Enable+ ID=0 ArbSelect=Fixed TC/VC=01
                        Status: NegoPending- InProgress-
        Capabilities: [160 v1] Device Serial Number 01-00-00-00-68-4c-e0-00
        Kernel driver in use: r8169
# modinfo r8169
filename:       /lib/modules/3.16.0-33-generic/kernel/drivers/net/ethernet/realtek/r8169.ko
firmware:       rtl_nic/rtl8168g-3.fw
firmware:       rtl_nic/rtl8168g-2.fw
firmware:       rtl_nic/rtl8106e-2.fw
firmware:       rtl_nic/rtl8106e-1.fw
firmware:       rtl_nic/rtl8411-2.fw
firmware:       rtl_nic/rtl8411-1.fw
firmware:       rtl_nic/rtl8402-1.fw
firmware:       rtl_nic/rtl8168f-2.fw
firmware:       rtl_nic/rtl8168f-1.fw
firmware:       rtl_nic/rtl8105e-1.fw
firmware:       rtl_nic/rtl8168e-3.fw
firmware:       rtl_nic/rtl8168e-2.fw
firmware:       rtl_nic/rtl8168e-1.fw
firmware:       rtl_nic/rtl8168d-2.fw
firmware:       rtl_nic/rtl8168d-1.fw
version:        2.3LK-NAPI
license:        GPL
description:    RealTek RTL-8169 Gigabit Ethernet driver
author:         Realtek and the Linux r8169 crew <[email protected]>
srcversion:     D0E1934D763B6927E0CB4A4
alias:          pci:v00000001d00008168sv*sd00002410bc*sc*i*
alias:          pci:v00001737d00001032sv*sd00000024bc*sc*i*
alias:          pci:v000016ECd00000116sv*sd*bc*sc*i*
alias:          pci:v00001259d0000C107sv*sd*bc*sc*i*
alias:          pci:v00001186d00004302sv*sd*bc*sc*i*
alias:          pci:v00001186d00004300sv*sd*bc*sc*i*
alias:          pci:v00001186d00004300sv00001186sd00004B10bc*sc*i*
alias:          pci:v000010ECd00008169sv*sd*bc*sc*i*
alias:          pci:v000010ECd00008168sv*sd*bc*sc*i*
alias:          pci:v000010ECd00008167sv*sd*bc*sc*i*
alias:          pci:v000010ECd00008136sv*sd*bc*sc*i*
alias:          pci:v000010ECd00008129sv*sd*bc*sc*i*
depends:        mii
intree:         Y
vermagic:       3.16.0-33-generic SMP mod_unload modversions
signer:         Magrathea: Glacier signing key
sig_key:        25:26:EE:FE:32:C9:58:B4:CD:85:CA:5F:BF:EB:ED:A1:75:D1:B2:18
sig_hashalgo:   sha512
parm:           use_dac:Enable PCI DAC. Unsafe on 32 bit PCI slot. (int)
parm:           debug:Debug verbosity level (0=none, ..., 16=all) (int)

답변1

확실히 네트워크 스택 문제가 있으므로 이 문제를 해결하기 위해 길지만 입증된 로드맵을 권장합니다. 비슷한 상황에서 직접 사용해 본 적이 있으며 실제 하드웨어에서도 이런 일이 발생했습니다. Ncurses를 설치하고 컴파일러를 사용하여 필요한 개발 패키지를 빌드합니다. 먼저 Linux 커널의 git 스냅샷을 만들고 git snapshot 디렉터리에서 이 작업을 수행합니다.

git checkout-index -a -f --prefix=/usr/src/linux-build/ <--- trailing slash is MUST-HAVE!
cd /usr/src/linux-build
cp /boot/config-\`uname -r\` .config
make menuconfig

필요한 모든 IP 옵션을 확인하고 IPv6를 비활성화하십시오. 그런 다음 커널을 빌드하고 설치하십시오. 둘째, 귀하의 /etc/sysctl.conf:

net.ipv6.conf.default.autoconf=0
net.ipv6.conf.default.accept_dad=0
net.ipv6.conf.default.accept_ra=0
net.ipv6.conf.default.accept_ra_defrtr=0
net.ipv6.conf.default.accept_ra_rtr_pref=0
net.ipv6.conf.default.accept_ra_pinfo=0
net.ipv6.conf.default.accept_source_route=0
net.ipv6.conf.default.accept_redirects=0
net.ipv6.conf.default.forwarding=0
net.ipv6.conf.all.autoconf=0
net.ipv6.conf.all.accept_dad=0
net.ipv6.conf.all.accept_ra=0
net.ipv6.conf.all.accept_ra_defrtr=0
net.ipv6.conf.all.accept_ra_rtr_pref=0
net.ipv6.conf.all.accept_ra_pinfo=0
net.ipv6.conf.all.accept_source_route=0
net.ipv6.conf.all.accept_redirects=0
net.ipv6.conf.all.forwarding=0
net.ipv6.conf.default.disable_ipv6=1
net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.lo.disable_ipv6=1

그런 다음 재부팅하고 /etc/ssh/ssh에서 이것을 확인하십시오._구성:

KeyRegenerationInterval 3600
ServerKeyBits 768
Compression yes <---- PAY ATTENTION TO THIS : see below

압축지시문은 "yes" 또는 "no"로 설정되어야 하며, 기본적으로 "delayed"로 설정되어 있어 문제가 발생합니다.

관련 정보