저는 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
다른 연결보다 우선하므로 이더넷 인터페이스는 enp3s0
IP 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 주소를 갖게 됩니다.