![모든 네트워크 드라이버를 완전히 비활성화합니다.](https://linux55.com/image/220077/%EB%AA%A8%EB%93%A0%20%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%20%EB%93%9C%EB%9D%BC%EC%9D%B4%EB%B2%84%EB%A5%BC%20%EC%99%84%EC%A0%84%ED%9E%88%20%EB%B9%84%ED%99%9C%EC%84%B1%ED%99%94%ED%95%A9%EB%8B%88%EB%8B%A4..png)
Ubuntu 16.04 서버에서 22.04로 업그레이드하기 전에 문제 해결을 위해 온보드 네트워크 카드를 비활성화해야 했습니다. 중요한 점은 전체 NIC가 더 이상 내 장치에서 네트워크 컨트롤러로 표시되지 않는다는 것입니다.
기본적으로 내가 원하는 것은 내 로컬 루프백 장치만 127.0.0.1에서 작동하도록 유지하고 다른 모든 네트워크 컨트롤러를 제거하는 것입니다.
내가 시도한 것들:
BIOS를 시도했지만 구성 가능한 네트워크 컨트롤러가 없습니다(Dell 데스크탑).
인터페이스를 구성하는 대신 "수동"으로 설정하려고 했지만
/etc/network/interfaces
작동하지 않았습니다."udev" 및 "systemd"와 관련된 제안된 솔루션을 시도했습니다.네트워크 인터페이스를 영구적으로 비활성화하는 방법은 무엇입니까?그러나 그것은 항상 어떻게든 돌아옵니다.
그 빌어먹을 일은 언제나 돌아오는데…
답변1
글쎄, 나는 스스로 해결책을 찾았고 그것이 내가 원하는 것을 정확히 수행하는 것 같습니다.
온보드 NIC 및 Wi-Fi 컨트롤러가 있는 시스템의 Ubuntu 16.04에서 작동한다는 것을 확인할 수 있지만 다른 배포판에 대해 테스트하지는 않았지만 문서를 간단히 살펴보면 다른 배포판에서도 작동해야 한다는 것을 알 수 있습니다. 하지만 내 말을 그대로 받아들이지는 마세요. 확인을 위해 문서를 직접 조사해 보세요.
이 솔루션을 사용한 이유는 필요한 문제 해결을 완료하면 쉽게 되돌릴 수 있기 때문입니다. 기본적으로 시스템의 모든 네트워크 컨트롤러를 제거하고 루프백 장치를 127.0.0.1에서 계속 작동시키고 싶습니다.
모든 네트워크 드라이버를 완전히 비활성화합니다.
Ubuntu 16.04 서버에서 네트워크 인터페이스를 비활성화하려면 다음 oneliner를 사용하여 네트워크 모듈을 블랙리스트에 추가할 수 있습니다. 이렇게 하면 커널이 모듈을 로드하는 것을 방지하여 인터페이스를 효과적으로 비활성화할 수 있습니다. 다음은 oneliner 및 해당 단계에 대한 분석입니다.
명령줄온라인 라이너
modules=$(lspci -k | grep -iE 'network|ethernet|wi-fi|bluetooth|wireless|lan|wlan' --after=3 | grep modules | awk '{print $3}'); for module in $(echo "$modules" | tr ' ' '\n'); do if ! grep -q -w "blacklist $module" /etc/modprobe.d/blacklist.conf; then echo "blacklist $module" | tee -a /etc/modprobe.d/blacklist.conf; else echo "Already blacklisted: $module. Skipping."; fi; done; update-initramfs -u && echo Done! Reboot your system to finalize the changes.
무너지다
oneliner는 쉘 구성을 사용하여 결합된 여러 명령으로 구성됩니다.
modules=$(lspci -k | grep -iE 'network|ethernet|wi-fi|bluetooth|wireless|lan|wlan' --after=3 | grep modules | awk '{print $3}')
modules
: 관련된 네트워크 모듈의 목록을 가져와서 변수 에 저장하는 명령입니다 .for module in $(echo "$modules" | tr ' ' '\n'); do ...; done
modules
: 변수의 각 모듈을 반복하는 루프입니다 .if ! grep -q -w "blacklist $module" /etc/modprobe.d/blacklist.conf; then ...; else ...; fi
: 모듈이 구성 파일에 블랙리스트에 등록되어 있는지 확인하는 if-else 구조입니다.echo "blacklist $module" | tee -a /etc/modprobe.d/blacklist.conf
: 모듈이 블랙리스트에 등록되지 않은 경우 이 명령은 새 블랙리스트 항목을 구성 파일에 추가합니다.echo "Already blacklisted: $module. Skipping."
: 모듈이 블랙리스트에 추가된 경우 이 명령은 이를 나타내는 메시지를 인쇄합니다.update-initramfs -u && echo
: 모든 모듈이 처리된 후 이 명령은 initramfs를 업데이트하고 다시 시작에 대한 메시지를 표시합니다.
수동 대안
어떤 이유로 oneliner가 작동하지 않거나 무슨 일이 일어나고 있는지 면밀히 관찰하고 싶다면 다음 수동 단계를 수행할 수 있습니다.
lspci -k
모든 장치와 해당 커널 모듈을 나열하려면 실행하세요 . 다음 명령을 실행하여 네트워크 컨트롤러와 관련된 모듈을 식별합니다lspci -k | grep -iE 'network|ethernet|wi-fi|bluetooth|wireless|lan|wlan' --after=3 | grep modules | awk '{print $3}'
.- 즐겨 사용하는 텍스트 편집기로 엽니 다
/etc/modprobe.d/blacklist.conf
.sudo nano /etc/modprobe.d/blacklist.conf
- 블랙리스트에 추가하려는 각 모듈에 대해 파일 끝에 새 줄을 추가하고
blacklist MODULE_NAME
이를MODULE_NAME
실제 모듈 이름으로 바꿉니다. - 파일을 저장하고 닫습니다.
- 를 실행하여 initramfs를 업데이트합니다
sudo update-initramfs -u
. - 시스템을 다시 시작하십시오:
sudo reboot
.
이 상태를 복원하려면 방금 생성한 새로 생성된 "블랙리스트" 항목에 주석을 달거나 삭제하고 5단계와 6단계를 실행하면 됩니다.
이것이 동일한 솔루션을 찾는 사람에게 도움이 되기를 바랍니다.