sysctl.conf 및 GRUB_CMDLINE_LINUX가 작동하지 않을 때 Debian에서 IPv6를 비활성화하는 방법은 무엇입니까? [복사]

sysctl.conf 및 GRUB_CMDLINE_LINUX가 작동하지 않을 때 Debian에서 IPv6를 비활성화하는 방법은 무엇입니까? [복사]

첫 번째,

시스템 부팅 후 명령줄에서 이 명령을 실행 하면 sysctl net.ipv6.conf.all.disable_ipv6=1원하는 결과를 얻을 수 있습니다. IPv6는 실제로 비활성화되어 있습니다.

재부팅 후에도 이 동작이 지속되던 문제가 이제 해결되었습니다.

이를 수행하는 방법에 대한 제안을 찾는 것은 쉽습니다. 일반적으로 net.ipv6.conf.all.disable_ipv6=1파일을 /etc/sysctl.d/sysctl 자체 내의 디렉토리나 구성 파일에 넣는 것과 관련됩니다. 즉, /etc/sysctl.conf언급된 다른 방법에는 추가가 포함됩니다.

GRUB_CMDLINE_LINUX="ipv6.disable=1"

도착하다/etc/default/grub

예를 들어, 여기에 언급된 내용은 다음과 같습니다.

https://serverfault.com/questions/660979/how-to-disable-ipv6-support-in-linux-entirely

나는 이것들을 모두 시도했지만 작동하지 않습니다. ifconfig인터페이스가 IPv6를 사용하도록 설정되었음을 명확하게 나타냅니다. 마찬가지로 부팅 후 manual 을 실행하면 sysctl예상대로 비활성화됩니다.

sysctl -p나에게는 아무것도 작동하지 않습니다. 위와 같이 명령을 그대로 작성하면 됩니다.

sysctl또한 에 명령을 넣어 보았습니다 /etc/rc.local. 거기에 넣을 수 있는 다른 명령을 관찰하면 올바르게 작동한다는 것을 알 수 있습니다. 그러나 처형되었음에도 불구하고 효력을 발휘하지 못하는 것 같습니다.

all.disable_ipv6또한 및 default.disable_ipv6( enp0s3.disable_ipv6enp0s3이 실제로 내 이더넷 인터페이스인지 확인했습니다) 뿐만 아니라 다른 명령도 시도했습니다 .

이건 좀 비슷해 보이는데https://bugs.launchpad.net/ubuntu/+source/linux/+bug/997605나에게는 왜 이런 일이 발생하는지 모르겠습니다. 다른 시스템에서 내가 해야 할 일은 /etc/sysctl.d/에 파일을 저장하는 것 뿐이었다고 확신합니다.

제가 시도한 것 외에도 이 기능을 비활성화하는 한 가지 방법은 IPv6 지원 없이 커널을 수동으로 다시 컴파일하는 것임을 이미 알고 있습니다. 그러나 이는 너무 복잡하고 신뢰할 수 없으며 수행하고 유지 관리하는 데 너무 많은 작업이 필요했습니다.

답변1

오랫동안 수백 대의 데비안 가상 머신을 관리해 온 데비안 시스템 관리자로서 저는 IPv6를 비활성화하기 위해 sysctl+kernel 설정을 발행하는 것만으로도 가상 머신을 죽이기에 충분하다고 확신합니다.

귀하의 시나리오에서 문제는 편집만으로는 /etc/default/grub커널에 매개변수를 적용하기에 충분하지 않다는 것입니다.

또한 다음을 수행해야 합니다.

sudo update-grub2

그런 다음 재부팅하고 IPv6를 비활성화하는 커널 매개변수가 적용되도록 하십시오.

그런데 런타임에 어떤 매개변수가 커널에 전달되는지 확인할 수 있습니다.

$ cat /proc/cmdline 
BOOT_IMAGE=/boot/vmlinuz-4.10.5-antix.3-amd64-smp root=UUID=00c17984-859f-4197-8bd8-b346ddd092bd ro iommu=1 intel_iommu=on iommu=pt ipv6.disable=1 intremap=no_x2apic_optout radeon.modeset=0

또한 @schweik이 올바르게 지적했듯이 IPv6을 성공적으로 종료한 후 컴파일되었거나 IPv6에 대한 특정 구성을 가진 여러 데몬의 구성을 다시 방문해야 할 수도 있습니다. 시스템을 시작할 때 IPv6 관련 오류 메시지 및/또는 오류 로그에 주의하십시오.

PS 또한 Arm 또는 MIPS 아키텍처에서는 일반적으로 grub이 없으며 다른 파일을 편집해야 합니다 /etc/default/grub. 그러나 편집 중이라면 이미 grub이 설치되어 있다고 가정합니다.

답변2

아래의 모든 구성 파일에서 GRUB_CMDLINE_LINUX_DEFAULT를 검색해야 할 수도 있습니다./etc/기본.

내 Ubuntu 서버 18.04.1 LTS 설치에는/etc/default/grub파일과/etc/default/grub.d/50-curtain-settings.cfg문서. 후자는 ipv6을 활성 상태로 유지하는 GRUB_CMDLINE_LINUX_DEFAULT 변수를 재정의합니다.

마지막 파일을 편집한 후 실행했습니다.그럽 업데이트그리고 다시 시작하세요. IPv6이 성공적으로 비활성화되었습니다.

답변3

IPv6는 예를 들어 개인 네트워크를 사용할 때 정말 지루한 프로토콜입니다. 문제는 이 프로토콜이 모든 서비스에 강제로 적용되기 때문에 순수 IPv4 네트워크에서는 시간 초과로 인해 속도가 느려진다는 것입니다.

시스템 시작 시 또는 근처의 다른 곳에서 IPv6를 비활성화 하면 /etc/sysctl.confIPv6를 사용하도록 구성된 일부 서비스(많은 서비스)가 IPv6를 다시 활성화할 수 있습니다. 시스템이 완전히 로드되고 구성된 후 IPv6을 비활성화하는 것이 원하는 대로 더 잘 반영됩니다. 그러나 변경 후 네트워크 연결을 변경하면(예: Wi-Fi에서 유선으로) IPv6가 다시 나타날 수 있습니다. 의심되는 서비스는 NetworkManager이므로 해당 서비스를 중지하거나(주로 서버에서) 비활성화합니다(IPv6를 무시하도록 각 연결을 구성할 수도 있습니다. 서비스를 전역적으로 비활성화하는 방법을 찾지 못했습니다). IPv6을 비활성화하려면 추가 구성도 필요합니다. /etc/ssh/sshd_config추가 라인 에서 인터페이스 이름이나 도메인 이름 대신 IPv4 주소(인터페이스 = 192.168.43.11)를 명시적으로 지정하는 AddressFamily inetIPv6이 포함된 모든 라인을 주석 처리합니다 . 등. DHCP 주소가 필요한 경우: IPv4 요청 또는 IPv6 자체 할당을 강제하는 것은 무엇입니까?/etc/hosts/etc/samba/smb.confdhclient -4 eth0

netstat -lptun좋은 방법은 청취 포트를 사용(또는) 보고 ss -lptun이를 비활성화하는 방법에 대해 IPv6 주소를 사용하는 프로세스의 매뉴얼 페이지를 참조하는 것입니다. 이길 수 없는 경우도 있지만(예: dns-server는 항상 IPv6를 수신합니다) 일반적으로 방법을 찾을 수 있습니다.

100% 해결책은 아마도 IPv6 없이 커널을 다시 컴파일하는 것이지만, 일부 응용 프로그램이 다시 컴파일될 때까지 시작을 거부할 위험이 있을 수 있습니다.

행운을 빌어요

관련 정보