Centos 7은 packer/vagrant를 사용하여 예측 가능한 네트워크 인터페이스 이름을 비활성화합니다.

Centos 7은 packer/vagrant를 사용하여 예측 가능한 네트워크 인터페이스 이름을 비활성화합니다.

로컬 개발 방랑 상자를 CentOS 7.2(6.8에서)로 업그레이드하려고 하는데 새로운 "예측 가능한 네트워크 인터페이스 이름"에 문제가 발생했습니다. 내 꼭두각시 구성에는 eth0과 eth1이 필요하지만 enp0s3과 enp0s8이 필요합니다.

다음을 추가하여 킥스타트 파일에서 예측 가능한 네트워크 인터페이스 이름을 비활성화했습니다.

bootloader --location=mbr --append="net.ifnames=0"

패키지 biosdevname을 제거하십시오.

이제 내 방랑자 상자가 부팅되면 eth0과 eth1(ip -a를 수행할 때 표시됨)이 있지만 /etc/sysconfig/network-scripts/에 네트워크 스크립트가 없습니다(ifcfg-enp0s3 및 ifcfg-lo만 해당). .

vagrant가 이 가상 머신을 시작하면 다음 오류가 표시됩니다.

The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!

# Update sysconfig
sed -i 's/\(HOSTNAME=\).*/\1vm.example.com/' /etc/sysconfig/network

# Update DNS
sed -i 's/\(DHCP_HOSTNAME=\).*/\1"vm"/' /etc/sysconfig/network-scripts/ifcfg-*

# Set the hostname - use hostnamectl if available
echo 'vm.example.com' > /etc/hostname
if command -v hostnamectl; then
  hostnamectl set-hostname --static 'vm.example.com'
  hostnamectl set-hostname --transient 'vm.example.com'
else
  hostname -F /etc/hostname
fi

# Remove comments and blank lines from /etc/hosts
sed -i'' -e 's/#.*$//' -e '/^$/d' /etc/hosts

# Prepend ourselves to /etc/hosts
grep -w 'vm.example.com' /etc/hosts || {
  sed -i'' '1i 127.0.0.1\tvm.example.com\tvm' /etc/hosts
}

# Restart network
service network restart


Stdout from the command:

/bin/hostnamectl
Restarting network (via systemctl):  [FAILED]


Stderr from the command:

Job for network.service failed because the control process exited with error code. See "systemctl status network.service" and "journalctl -xe" for details.

Journalctl -xe는 다음을 표시합니다.

-- Unit network.service has begun starting up.
Oct 11 04:28:59 vm.example.com network[3130]: Bringing up loopback interface:  Could not load file '/etc/sysconfig/network-scripts/ifcfg-lo'
Oct 11 04:28:59 vm.example.com network[3130]: Could not load file '/etc/sysconfig/network-scripts/ifcfg-lo'
Oct 11 04:28:59 vm.example.com network[3130]: Could not load file '/etc/sysconfig/network-scripts/ifcfg-lo'
Oct 11 04:28:59 vm.example.com network[3130]: Could not load file '/etc/sysconfig/network-scripts/ifcfg-lo'
Oct 11 04:28:59 vm.example.com network[3130]: [  OK  ]
Oct 11 04:28:59 vm.example.com network[3130]: Bringing up interface enp0s3:  Error: Connection activation failed: No suitable device found for this connection.
Oct 11 04:28:59 vm.example.com network[3130]: [FAILED]
Oct 11 04:28:59 vm.example.com network[3130]: RTNETLINK answers: File exists
Oct 11 04:28:59 vm.example.com network[3130]: RTNETLINK answers: File exists
Oct 11 04:28:59 vm.example.com network[3130]: RTNETLINK answers: File exists
Oct 11 04:28:59 vm.example.com network[3130]: RTNETLINK answers: File exists
Oct 11 04:28:59 vm.example.com network[3130]: RTNETLINK answers: File exists
Oct 11 04:28:59 vm.example.com network[3130]: RTNETLINK answers: File exists
Oct 11 04:28:59 vm.example.com network[3130]: RTNETLINK answers: File exists
Oct 11 04:28:59 vm.example.com network[3130]: RTNETLINK answers: File exists
Oct 11 04:28:59 vm.example.com network[3130]: RTNETLINK answers: File exists
Oct 11 04:28:59 vm.example.com systemd[1]: network.service: control process exited, code=exited status=1
Oct 11 04:28:59 vm.example.com systemd[1]: Failed to start LSB: Bring up/down networking.

eth0과 eth1을 유지하면서 작동하게 하려면 어떻게 해야 합니까?

감사해요

답변1

패키저에 구성 스크립트를 추가했는데 문제가 해결된 것 같았습니다.

#!/bin/bash

mv /etc/sysconfig/network-scripts/ifcfg-enp0s3 /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i -e 's/enp0s3/eth0/' /etc/sysconfig/network-scripts/ifcfg-eth0
bash -c 'echo NM_CONTROLLED=\"no\" >> /etc/sysconfig/network-scripts/ifcfg-eth0'

답변2

eth0과 eth1을 유지하면서 작동하게 하려면 어떻게 해야 합니까?

eth0나는 보유에 관한 첫 번째 부분에 대한 답변을 도울 수 있고 eth1(또는 적어도 좋은 참고 자료를 제공할 수 있다고 믿습니다 ). ~에 따르면Linux에서 일관된 네트워크 장치 이름 지정, 매뉴얼 섹션 9의 다음을 사용하여 새 이름 지정을 비활성화할 수 있습니다.

설치 중 비활성화됨

새로운 명명 체계의 사용을 비활성화하려면 설치 프로세스(자동 또는 자동) 중에 biosdevname=0부팅 명령줄에 커널 명령줄 인수를 전달합니다 . 설치 후 연결된 새 네트워크 어댑터가 기존 "eth" 이름을 갖도록 하려면 설치 후 부팅 명령줄에 이 매개변수를 전달해야 합니다.

내 경험에 따르면 실제로 작동하는지 여부가 결정됩니다. 예를 들어네트워크 장치 이름 지정 문제 및 p2p1 및 p3p1의 별칭을 eth0 및 eth1로 다시 지정슈퍼유저에 대해

관련 정보