CentOS 7에 새 네트워크 장치를 추가하는 방법은 무엇입니까?

CentOS 7에 새 네트워크 장치를 추가하는 방법은 무엇입니까?

내 VPS에는 두 개의 IP가 할당되어 있지만 "ip a"에는 실제 네트워크 인터페이스 eth0과 루프백 인터페이스 lo가 하나만 표시됩니다. 새로운 IP를 반영하도록 복사해서 /etc/sysconfig/network-scripts/ifcfg-eth0편집 했습니다. /etc/sysconfig/network-scripts/ifcfg-eth1그러나 systemctl restart network오류로 인해 실패합니다.Bringing up interface eth1: Error: Connection activation failed: No suitable device found for this connection.

그렇다면 eth1을 설정하기 위해 새 장치를 어떻게 추가합니까? 아니면 다른 실제 네트워크 어댑터를 추가하지 않고는 새 장치를 추가할 수 없습니까? 그렇다면 이 두 IP를 동일한 인터페이스 eth0에 할당할 수 있습니까? 어떻게?

고쳐 쓰다:

@AB의 접근 방식을 따랐지만 여전히 작동하지 않습니다.

TYPE=Ethernet
BOOTPROTO0=none
NAME0=eth0
DEVICE0=eth0
ONBOOT0=yes
PREFIX0=24
IPADDR0=x.x.x.x
NETMASK0=255.255.255.0
GATEWAY0=x.x.x.1

TYPE=Ethernet
BOOTPROTO1=none
NAME1=eth1
DEVICE1=eth1
ONBOOT1=yes
PREFIX1=24
IPADDR1=y.y.y.y
NETMASK1=255.255.255.0
GATEWAY1=y.y.y.1

다음 구성도 작동하지 않습니다.

TYPE=Ethernet
BOOTPROTO0=none
NAME0=eth0
DEVICE0=eth0
ONBOOT0=yes
PREFIX0=24
IPADDR0=x.x.x.x
NETMASK0=255.255.255.0
GATEWAY0=x.x.x.1

TYPE=Ethernet
BOOTPROTO1=none
NAME1=eth0:1
DEVICE1=eth0
ONBOOT1=yes
PREFIX1=24
IPADDR1=y.y.y.y
NETMASK1=255.255.255.0
GATEWAY1=y.y.y.1

명령 은 systemctl restart network성공했지만 ifconfigeth0 인터페이스 1개와 lo 인터페이스 1개만 표시됩니다.

고쳐 쓰다:

@AB의 답변에서 올바른 구성을 사용하고 사용하면 ip a작동합니다! 이 두 IP는 인터페이스 eth0 아래에 표시됩니다.

답변1

이 두 IP 주소는 위에서 구성할 수 있습니다.동일한상호 작용.

이 내용은 다음과 같이 기록됩니다.레드햇 6그러나 RHEL 7 설명서에는 더 이상 나타나지 않습니다. 아마도 이 구성은 단계적으로 폐지되고 있으므로(예: NetworkManager 및 NetworkManager 사용 nmtui) 덜 빈번한 설정은 더 이상 공식적으로 문서화되지 않습니다. 언제나 그렇듯이 CentOS 6/CentOS 7과 완전히 동일합니다.

IPADDRn=주소

여기서 address는 IPv4 주소이고 n은 0부터 시작하는 연속된 양의 정수여야 합니다(예: IPADDR0). 구성하는 데 사용됩니다.여러 IP 주소하나 상호 작용. 주소가 하나만 구성된 경우에는 생략할 수 있습니다.

스크립트 내용에는 /etc/sysconfig/network-scripts/network-functions여전히 유효한 구문이 있음이 표시됩니다.

expand_config ()
{
    local i=0 val
    for idx in '' {0..255} ; do
        ipaddr[$i]=$(eval echo '$'IPADDR$idx)
        if [ -z "${ipaddr[$i]}" ]; then
            [ "$idx" ] && [ $idx -ge 2 ] && break
            continue
        fi
        prefix[$i]=$(eval echo '$'PREFIX$idx)
        netmask[$i]=$(eval echo '$'NETMASK$idx)
        broadcast[$i]=$(eval echo '$'BROADCAST$idx)
        arpcheck[$i]=$(eval echo '$'ARPCHECK$idx)
        arpupdate[$i]=$(eval echo '$'ARPUPDATE$idx)

따라서 플러스 로 /etc/sysconfig/network-scripts/ifcfg-eth0변경 하고 위 목록의 다른 유사한 설정에 대해 동일한 작업을 수행합니다(예: 를 사용하는 경우 플러스 로 변경 등).IPADDR=IPADDR0=IPADDR1=NETMASK=NETMASK0=NETMASK1=

고쳐 쓰다(OP가 구성 콘텐츠를 제공한 후): 유일한 관련 항목위 목록에서다음은 (처음에 사용하는 경우에만) 다음과 같습니다.

PREFIX
NETMASK
BROADCAST
ARPCHECK
ARPUPDATE

다른 것은 없습니다. 특히 다음은 아닙니다.

  • NAME

    오직하나상호 작용. 또한 eth0:1별칭 주소를 인터페이스(예: )로 사용하는 것은 반드시 피해야 합니다. 이는 다른 설정을 구성할 때 쓸모가 없고 오류가 발생하기 쉬운 오래된 개념입니다. 이 답변에서는 이 문제가 제기되지 않았습니다.

  • GATEWAY

    오직하나기본 경로(실제로 인터페이스가 여러 개 있는 경우에도 여기서는 그렇지 않음) 두 개의 서로 다른 독립적인 인터넷 경로를 가질 수 있는 멀티호밍은 다른 짐승이며 같은 질문에 답할 수 없습니다.

결국 ifconfig이 명령은 사용하면 안 됩니다(이 명령은 오래된 API의 일부이며 호환성 레이블 없이 단일 인터페이스에서 여러 IPv4 주소를 올바르게 표시하지 않습니다). 대신 다음을 사용하십시오.

ip address

또는 ip -br address호스트 인터페이스에 구성된 주소를 표시합니다. 마찬가지로 Linux에서 경로를 표시하는 가장 좋은 명령은 다음과 같습니다.

ip route

바꾸다 route.


최종 구성은 ifcfg-eth0다음과 같아야 합니다.

TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
PREFIX0=24
IPADDR0=x.x.x.x
NETMASK0=255.255.255.0
PREFIX1=24
IPADDR1=y.y.y.y
NETMASK1=255.255.255.0
GATEWAY=x.x.x.1

호스팅 공급자가 자세한 라우팅 문서를 제공하지 않는 한 동일한 게이트웨이 xxx1이 결국 yyyy 주소를 라우팅하는 데 사용됩니다. 이 경우 구성이 더 이상 ifcfg-eth0마스터하기가 매우 어렵기 때문에 어쨌든 별도의 질문이 필요합니다. 두 번째 주소의 접두사/넷마스크 PREFIX1이 24가 아닌 32(및 중복 NETMASK1, 255.255.255.255)일 수도 있지만 이는 호스팅 공급자의 문서 없이는 알 수 없으며 아마도 중요하지 않습니다.

관련 정보