모든 네트워크 드라이버를 완전히 비활성화합니다.

모든 네트워크 드라이버를 완전히 비활성화합니다.

Ubuntu 16.04 서버에서 22.04로 업그레이드하기 전에 문제 해결을 위해 온보드 네트워크 카드를 비활성화해야 했습니다. 중요한 점은 전체 NIC가 더 이상 내 장치에서 네트워크 컨트롤러로 표시되지 않는다는 것입니다.

기본적으로 내가 원하는 것은 내 로컬 루프백 장치만 127.0.0.1에서 작동하도록 유지하고 다른 모든 네트워크 컨트롤러를 제거하는 것입니다.

내가 시도한 것들:

그 빌어먹을 일은 언제나 돌아오는데…

답변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는 쉘 구성을 사용하여 결합된 여러 명령으로 구성됩니다.

  1. modules=$(lspci -k | grep -iE 'network|ethernet|wi-fi|bluetooth|wireless|lan|wlan' --after=3 | grep modules | awk '{print $3}')modules: 관련된 네트워크 모듈의 목록을 가져와서 변수 에 저장하는 명령입니다 .

  2. for module in $(echo "$modules" | tr ' ' '\n'); do ...; donemodules: 변수의 각 모듈을 반복하는 루프입니다 .

  3. if ! grep -q -w "blacklist $module" /etc/modprobe.d/blacklist.conf; then ...; else ...; fi: 모듈이 구성 파일에 블랙리스트에 등록되어 있는지 확인하는 if-else 구조입니다.

  4. echo "blacklist $module" | tee -a /etc/modprobe.d/blacklist.conf: 모듈이 블랙리스트에 등록되지 않은 경우 이 명령은 새 블랙리스트 항목을 구성 파일에 추가합니다.

  5. echo "Already blacklisted: $module. Skipping.": 모듈이 블랙리스트에 추가된 경우 이 명령은 이를 나타내는 메시지를 인쇄합니다.

  6. update-initramfs -u && echo: 모든 모듈이 처리된 후 이 명령은 initramfs를 업데이트하고 다시 시작에 대한 메시지를 표시합니다.

수동 대안

어떤 이유로 oneliner가 작동하지 않거나 무슨 일이 일어나고 있는지 면밀히 관찰하고 싶다면 다음 수동 단계를 수행할 수 있습니다.

  1. lspci -k모든 장치와 해당 커널 모듈을 나열하려면 실행하세요 . 다음 명령을 실행하여 네트워크 컨트롤러와 관련된 모듈을 식별합니다 lspci -k | grep -iE 'network|ethernet|wi-fi|bluetooth|wireless|lan|wlan' --after=3 | grep modules | awk '{print $3}'.
  2. 즐겨 사용하는 텍스트 편집기로 엽니 다 /etc/modprobe.d/blacklist.conf.sudo nano /etc/modprobe.d/blacklist.conf
  3. 블랙리스트에 추가하려는 각 모듈에 대해 파일 끝에 새 줄을 추가하고 blacklist MODULE_NAME이를 MODULE_NAME실제 모듈 이름으로 바꿉니다.
  4. 파일을 저장하고 닫습니다.
  5. 를 실행하여 initramfs를 업데이트합니다 sudo update-initramfs -u.
  6. 시스템을 다시 시작하십시오: sudo reboot.

이 상태를 복원하려면 방금 생성한 새로 생성된 "블랙리스트" 항목에 주석을 달거나 삭제하고 5단계와 6단계를 실행하면 됩니다.

이것이 동일한 솔루션을 찾는 사람에게 도움이 되기를 바랍니다.

관련 정보