동일한 이더넷 인터페이스에 대한 여러 NetworkManager 연결 프로필이 항상 제대로 작동하는 것은 아닙니다.

동일한 이더넷 인터페이스에 대한 여러 NetworkManager 연결 프로필이 항상 제대로 작동하는 것은 아닙니다.

저는 Linux 배포판에서 3개의 NetworkManager 연결 프로필을 사용하고 있으며 모두 동일한 이더넷 인터페이스를 참조합니다 enp3s0. 나는 다음을 관리하기 위해 이러한 연결을 사용하고 있습니다.

  • 기본 고정 IP 구성
  • 새로운 고정 IP 구성 설정
  • DHCP 주소 요청

나머지 질문에서는 이 용어를 사용하겠습니다.연결하다단어를 의미연결 프로필.

이더넷 구성을 변경하려면 연결 우선 순위를 변경하므로 기본 고정 IP 구성을 활성화하려면 고정 IP 구성과 DHCP 구성보다 우선 순위를 높게 설정합니다.
이 단락을 읽어보세요"3개 연결에 대한 속성 설정"계속되는 질문에서 연결 우선순위 설정에 대한 세부정보를 확인하세요.

질문

systemd서비스 시작 시 bash 스크립트를 통해 연결을 생성하면 모든 것이 잘 작동하지만 시작이 완료된 후 bash 스크립트를 실행하면 NetworkManager와 해당 연결 프로필이 IP 구성을 올바르게 관리할 수 없습니다 . 이 단락으로 이동"질문"질문 끝부분에서 오류에 대한 자세한 설명을 확인하세요.

질문의 나머지 부분은 문제를 이해하는 데 필요한 모든 세부 정보를 제공합니다.
질문이 길어져서 죄송합니다. 많은 정보가 필요합니다.


3개의 NetworkManager 연결 프로필 생성

nmcli연결을 생성하기 위해 다음과 같은 명령을 사용합니다.

# for default static
nmcli c add ifname enp3s0 type ethernet con-name ethernet_default_ipstatic
# for ethernet_ipstatic
nmcli c add ifname enp3s0 type ethernet con-name ethernet_ipstatic
# for ethernet_dhcp
nmcli c add ifname enp3s0 type ethernet con-name ethernet_dhcp

경로에서 이전 명령을 실행하면 /etc/NetworkManager/system-connections다음과 같은 3개의 파일이 나타납니다.

  • ethernet_default_ipstatic.nmconnection
  • ethernet_ipstatic.nmconnection
  • ethernet_dhcp.nmconnection

3개 연결의 속성 설정

이전 명령은 기본 속성을 사용하여 3개의 연결을 생성했으므로 연결을 생성한 후 해당 속성을 설정해야 합니다. 이 목표를 위해 나는 여전히 nmcli아래 표시된 명령을 사용합니다.

ethernet_default_ipstatic연결 에 대해 다음 속성을 설정합니다.

nmcli con mod ethernet_default_ipstatic ipv4.method manual ipv4.addresses 192.168.1.1/24 ipv6.method disabled

이전 명령은 연결에 대해 다음 속성을 설정합니다.

  • ipv4.method = manual(DHCP 대신 고정 IP를 설정함)
  • IP 주소 192.168.1.1, 넷마스크 255.255.255.0(게이트웨이 없음)
  • IPv6 비활성화됨
  • 자동 연결 속성은 기본값인 yes로 유지됩니다.
  • 우선순위 속성은 여전히기본값 0

ethernet_ipstatic속성 의 경우 다음과 같습니다.

nmcli con mod ethernet_ipstatic ipv4.method manual ipv4.addresses 192.168.1.1/24 ipv4.gateway 192.168.1.100 ipv4.may-fail no ipv6.method disabled connection.autoconnect no connection.autoconnect-priority -1

이전 명령은 연결에 대해 다음 속성을 설정합니다.

  • ipv4.method = manual(DHCP 대신 고정 IP를 설정함)
  • IP 주소 192.168.1.1, 넷마스크 255.255.255.0, 게이트웨이 192.168.1.100
  • IPV6 비활성화, 자동 연결 아니요,우선순위 -1

ethernet_dhcp속성 의 경우 다음과 같습니다.

nmcli con mod ethernet_dhcp ipv4.method auto ipv4.addresses '' ipv4.gateway '' ipv4.may-fail no ipv4.dhcp-timeout 20 ipv6.method disabled connection.autoconnect no connection.autoconnect-priority -1 connection.autoconnect-retries 3

이전 명령은 연결에 대해 다음 속성을 설정합니다.

  • ipv4.method = auto (고정 IP 주소 대신 DHCP 설정)
  • IP 주소'',게이트웨이''
  • IPV6 비활성화, 자동 연결 아니요,우선순위 -1

기본 할당

이전 명령을 사용하면 연결이 ethernet_default_ipstatic다른 연결보다 우선하므로 이더넷 인터페이스는 enp3s0IP static으로 구성됩니다 192.168.1.1/24.

nmcli서비스별로 명령 실행

nmcli다음 서비스( )를 통해 시작 시 이전 명령을 실행하면 모든 것이 잘 작동합니다 my_custom_nm_service.service.

[Unit]
Description=Init NetworkManager Ethernet Connections
Requires=NetworkManager.service
After=NetworkManager.service
Before=network.target

[Service]
Type=oneshot
ExecStart=/home/<username>/script_services/init_connections.sh
User=<username>

[Install]
WantedBy=multi-user.target

init_connections.sh이전 명령을 실행 합니다 nmcli.

노트.유닛 파일에 옵션이 있는지 확인하세요.

  • 요구=NetworkManager.service
  • 이후=NetworkManager.service
  • 이전=network.target

질문

부팅이 완료된 후 명령을 통해 모든 연결을 삭제한 nmcli con del다음 스크립트를 실행하면 init_connections.sh시스템에 대해 예측할 수 없는 IP 구성이 표시됩니다.
발생하는 일반적인 구성 오류는 다음과 같습니다.

  • 활성 연결( nmcli con명령으로 표시됨) ethernet_default_ipstatic이므로 시스템에 고정 IP 주소가 있어야 합니다.192.168.1.1/24
  • 그러나 시스템은 DHCP 서버를 통해 IP 주소를 얻었습니다.

init_connections.sh서비스가 스크립트를 실행하면 다음이 실행됩니다.network.target 이전, 하지만 솔직히 이 차이가 문제를 이해하는 데 중요한지 모르겠습니다.

답변1

nmcli con up문제를 발견했습니다. 기본 구성을 올바르게 설정하려면 다음 명령을 실행해야 합니다 .

nmcli con up "ethernet_default_ipstatic" iface enp3s0

또한 보여줍니다이 게시물.

노트.현재로서는 init_connections.sh서비스가 시작될 때 스크립트 실행이 제대로 작동하는 이유를 이해하는 것이 중요하지 않습니다 my_custom_nm_service.service. 제가 정말 관심을 갖고 있는 것은 시작 프로세스가 끝날 때 스크립트를 실행하는 것입니다.


완전성을 위해 테스트 단계를 작성했습니다.

1) 서비스 삭제

my_custom_nm_service.service스크립트 실행을 시작하는 서비스를 비활성화했습니다.init_connections.sh

2) 모든 연결 삭제

시작이 완료된 후 다음 스크립트( delete_connections.sh)를 통해 모든 연결을 제거했습니다.

nmcli c del ethernet_default_ipstatic
nmcli c del ethernet_ipstatic
nmcli c del ethernet_dhcp

3) 3개의 연결 생성: 실패가 발생했습니다.

스크립트를 실행합니다 init_connections.sh.

nmcli con add ifname enp3s0 type ethernet con-name ethernet_default_ipstatic
nmcli con mod ethernet_default_ipstatic ipv4.method manual ipv4.addresses 192.168.1.1/24 ipv6.method disabled
nmcli con add ifname enp3s0 type ethernet con-name ethernet_ipstatic
nmcli con mod ethernet_ipstatic ipv4.method manual ipv4.addresses 192.168.1.1/24 ipv4.gateway 192.168.1.100 ipv4.may-fail no ipv6.method disabled connection.autoconnect no connection.autoconnect-priority -1
nmcli con add ifname enp3s0 type ethernet con-name ethernet_dhcp
nmcli con mod ethernet_dhcp ipv4.method auto ipv4.addresses '' ipv4.gateway '' ipv4.may-fail no ipv4.dhcp-timeout 20 ipv6.method disabled connection.autoconnect no connection.autoconnect-priority -1 connection.autoconnect-retries 3

스크립트를 실행한 후 내 Linux 시스템에 질문에 설명된 문제가 발생했습니다.

  • nmcli con명령은 활성 연결이 무엇인지 알려줍니다 ethernet_default_ipstatic(우선순위가 더 높기 때문).
  • IP 주소는 DHCP 서버에 의해 할당되었습니다.

4) 해결책: 실행nmcli con up

해결책은 다음 명령을 실행하는 것입니다.

nmcli con up "ethernet_default_ipstatic" iface enp3s0

그러면 인터페이스는 enp3s0기본 IP 주소를 갖게 됩니다.

관련 정보