긴 이야기 짧게

긴 이야기 짧게

데비안이 설치된 노트북이 있습니다. 네트워크는 NetworkManager를 통해 구성됩니다. 이제는 때때로 장치를 유선 이더넷 포트에 연결한 다음 무선으로 연결하고 싶습니다. 지금까지는 매우 좋았습니다. 이더넷 포트를 무시하려면 먼저 NetworkManager를 수동으로 종료해야 합니다. 그렇지 않으면 이더넷 포트를 구성하려고 시도하여 필요한 정적 주소를 방해하게 됩니다. 지금 내 질문은 다음과 같습니다. dbus 명령을 사용하여 NetworkManager에 일정 기간 동안 eth0을 무시해야 한다고 지시하려면 어떻게 해야 합니까? 그러다가 관리해?

답변1

~에서데비안 위키:

Debian Squeeze부터 NetworkManager는 기본적으로 /etc/network/interfaces에 정의된 인터페이스를 관리하지 않습니다.

따라서 정적 이더넷 구성을 interfaces파일 에 넣어 NetworkManager완전히 관리되지 않도록 해야 합니다. 내 생각엔 너도 좀 할 수 있을 것 같아인터페이스 매핑필요에 따라 브리지 구성과 "일반" 구성 사이를 자동으로 전환합니다.

답변2

긴 이야기 짧게

nmcli device set eth0 managed false
.
.
.
nmcli device set eth0 managed true

참고: 루트일 필요는 없습니다.

네트워크 관리자

오래되었지만 이것은 여전히 ​​매우 좋은 질문이며 답변은 수년에 걸쳐 변경되었습니다. 다행히도 이제는 훨씬 쉬워졌습니다. 이 nmcli명령은 명령줄에서 Network Manager를 제어하고 특정 인터페이스가 관리되지 않는 상태로 유지되어야 함을 알리는 데 사용할 수 있습니다.

nmcli device set eth0 managed false

Network Mangler가 인터페이스 관리를 다시 시작하도록 하려면 반대 명령을 실행하면 됩니다.

nmcli device set eth0 managed true

다음을 입력하여 컴퓨터의 다양한 네트워크 인터페이스(네트워크 관리자는 이를 "장치"라고 함)의 상태를 볼 수 있습니다 nmcli devices.

$ nmcli device
DEVICE           TYPE      STATE         CONNECTION       
wlan0            wifi      connected     Mother Brain (66GHz) 
p2p-dev-wlan0    wifi-p2p  disconnected  --               
eth1             ethernet  unavailable   --               
enx00505b01d4d3  ethernet  unavailable   --               
eth0             ethernet  unmanaged     --               
lo               loopback  unmanaged     --            

nmcli 사용법

nmcli에는 명령줄에서 -h를 사용하여 언제든지 검색할 수 있는 뛰어난 사용 정보가 있습니다. 예를 들어:

$ nmcli device set -h

Usage: nmcli device set { ARGUMENTS | help }

ARGUMENTS := DEVICE { PROPERTY [ PROPERTY ... ] }
DEVICE    := [ifname] <ifname> 
PROPERTY  := { autoconnect { yes | no } |
             { managed { yes | no }

Modify device properties.

탭 완성 기능을 활성화한 경우 apt install bash-completionnmcli의 상황에 맞는 완성 기능이 매우 유용합니다. 예를 들어, 설정하려는 장치의 이름이 기억나지 않는 경우 nmcli device setTAB을 두 번 입력하고 누르면 모든 가능성을 볼 수 있습니다. 또한 시간과 오타도 절약됩니다. 내 컴퓨터에 입력할 수 있습니다.

nmcli device set enx

탭을 클릭하면 완료됩니다.

 nmcli device set enx00505b01d4d3 

답변3

안타깝지만 그건 불가능합니다. 이것D 버스 API모든 유형의 무선 장치를 비활성화할 수 있지만 유선 장치는 비활성화할 수 없습니다. 유선 연결을 비활성화하는 유일한 방법은 비활성화하는 것입니다.모두무선 장치를 포함한 장치.

아마도유선 장치의 경우 "자동 연결" 상자를 선택 취소하면 도움이 됩니다. 이렇게 하면 NetworkManager가 자동으로 연결되지 않습니다.

답변4

nmcli맨페이지에서 찾은 내용입니다 . 이것이 어떤 배포판에서 작동하는지 모르겠지만 사용하고 있습니다Ubuntu 12.04 LTS

이는 장치의 연결이 끊어진 것으로 표시되므로 네트워크 관리자의 제어를 받지 않습니다.

nmcli dev disconnect iface eth0 

케이블을 뽑지 않는 한 괜찮습니다.

다음을 통해 장치 상태를 확인할 수 있습니다.

nmcli dev status

현재 다음 기관과 활성 링크가 설정되어 있습니다.

nmcli con status

이 도우미 스크립트를 만들었습니다.nm-manual-interface

#!/bin/bash

DEV=${1:-help}
shift

OPER=${1:-manual}
shift


if [ "$DEV" == "help" ]; then
echo -n "$0 "
  cat <<'EOH';
<DEV> [manual|auto]

Change <DEV> to disconnected state for nm.
In short take manual control of <DEV>.

All changes are temporary.

Usage:

Change to manual:
EOH
echo $0 eth0 manual
echo
echo Change back to nm control:
echo $0 eth0 auto
echo
  exit 1
fi
# store last uuid of device here
LASTUUIDFILE="/tmp/.nm-last-uuid-${DEV}"


if [ "$OPER" == "manual" ]; then
  if [ -n "$DEV"  ] ; then
    UUIDNET=$(nmcli con status |grep "$DEV" | perl -anle 'print @F[1]')
    if [ -n "$UUIDNET" ]; then 
      echo "$UUIDNET"  > $LASTUUIDFILE
      nmcli dev disconnect iface "$DEV"
    fi
  fi
fi

if [ "$OPER" == "auto" ]; then
  if [ -f "$LASTUUIDFILE" ]; then
     nmcli con up uuid $(cat "$LASTUUIDFILE") --nowait
     rm "$LASTUUIDFILE"
  else
    echo No last-state uuid file for iface "$DEV"
  fi
fi

관련 정보