다음을 통해 공유


Azure Linux 가상 머신에서 여러 네트워크 인터페이스 구성

적용 대상: ✔️ Linux VM

참고 항목

이 문서에서 참조하는 CentOS는 Linux 배포이며 EOL(수명 종료)에 도달합니다. 사용 및 계획을 적절하게 고려하세요. 자세한 내용은 CentOS 수명 종료 지침을 참조 하세요.

이 문서에서는 가장 일반적인 Linux 배포를 실행하는 Azure Linux VM(가상 머신)에서 여러 가상 네트워크 인터페이스를 구성하는 방법을 설명합니다.

요약

여러 네트워크 인터페이스가 연결된 Azure VM을 만들 수 있습니다. 일반적인 시나리오는 프런트 엔드 및 백 엔드 연결을 위한 다른 서브넷 또는 모니터링 또는 백업 솔루션 전용 네트워크를 갖는 것입니다.

이 문서에서는 다음 샘플 시나리오를 기반으로 하는 Azure Linux VM에서 작동하는 여러 네트워크 인터페이스에 필요한 구성을 제공합니다.

  • VM에는 동일한 서브넷에 둘 이상의 네트워크 인터페이스가 있습니다.
  • VM에는 서로 다른 서브넷에 있지만 동일한 VNET(Virtual Network)에 둘 이상의 네트워크 인터페이스가 있습니다.

자세한 내용은 다음 스크린샷을 참조하세요.

각 시나리오에서 동일한 VNET의 모든 VM에서 연결을 테스트할 수 있습니다.

Important

두 개 이상의 NIC가 있는 VM에서도 이 동일한 프로세스를 따를 수 있습니다.

여러 네트워크 인터페이스에 대한 게스트 OS 구성

Linux VM에 여러 네트워크 인터페이스를 추가하는 경우 라우팅 규칙을 만들어야 합니다. 이러한 규칙을 사용하면 VM이 특정 네트워크 인터페이스에 속한 트래픽을 보내고 받을 수 있습니다. 그렇지 않으면 트래픽을 올바르게 처리할 수 없습니다. 예를 들어 eth1속하는 트래픽은 정의된 기본 경로에서 올바르게 처리할 수 없습니다.

다음 섹션에서는 가장 일반적인 Linux 배포를 실행하는 Linux VM에서 작동하는 두 네트워크 인터페이스에 필요한 구성을 제공합니다.

참고 항목

루트 권한(루트로 전환하거나 명령 유틸리티를 사용하여)을 사용하여 다음 섹션의 sudo 모든 명령을 실행합니다.

각 섹션에서 VM에 다음 설정이 있는 두 개의 네트워크 인터페이스가 있다고 가정합니다.

  • 라우팅(명령의 sudo ip route show 출력):

    • 동일한 서브넷에 있는 두 개의 NIC:

      default via 10.0.1.1 dev eth0 proto static metric 100
      10.0.1.0/24 dev eth0 proto kernel scope link src 10.0.1.4 metric 100
      10.0.1.0/24 dev eth1 proto kernel scope link src 10.0.1.5 metric 101
      168.63.129.16 via 10.0.1.1 dev eth0 proto dhcp metric 100
      169.254.169.254 via 10.0.1.1 dev eth0 proto dhcp metric 100
      
    • 서로 다른 서브넷에 있지만 동일한 VNET에 있는 두 개의 NIC:

      default via 10.0.1.1 dev eth0 proto static metric 100
      10.0.1.0/24 dev eth0 proto kernel scope link src 10.0.1.4 metric 100
      10.0.2.0/24 dev eth1 proto kernel scope link src 10.0.2.5 metric 101
      168.63.129.16 via 10.0.1.1 dev eth0 proto dhcp metric 100
      169.254.169.254 via 10.0.1.1 dev eth0 proto dhcp metric 100
      
  • 인터페이스(명령의 sudo ip address show 출력):

    • 동일한 서브넷에 있는 두 개의 NIC:

      lo: inet 127.0.0.1/8 scope host lo
      eth0: inet 10.0.1.4/24 brd 10.0.1.255 scope global eth0
      eth1: inet 10.0.1.5/24 brd 10.0.1.255 scope global eth1
      
    • 서로 다른 서브넷에 있지만 동일한 VNET에 있는 두 개의 NIC:

      lo: inet 127.0.0.1/8 scope host lo
      eth0: inet 10.0.1.4/24 brd 10.0.1.255 scope global eth0
      eth1: inet 10.0.2.5/24 brd 10.0.2.255 scope global eth1
      
  1. 다음 명령을 실행하여 /etc/iproute2/rt_tables 파일에 두 개의 라우팅 테이블을 추가합니다(NIC당 하나의 항목이 필요).

    sudo echo "200 eth0-rt" >> /etc/iproute2/rt_tables
    sudo echo "201 eth1-rt" >> /etc/iproute2/rt_tables
    

    더 많은 네트워크 인터페이스가 VM에 연결된 경우 추가 라우팅 테이블(예: 202 eth2-rt, 203 eth3-rt 등)을 추가합니다.

  2. /etc/sysconfig/network-scripts/ 디렉터리의 각 네트워크 인터페이스에 대한 구성 파일이 있는지 확인합니다. ifcfg-eth0 구성 파일을 기반으로 새 네트워크 인터페이스 구성 파일을 만들 수 있습니다(줄 수정 DEVICE 및 새 파일에서 줄 제거 DHCP_HOSTNAME HWADDR). 이렇게 하려면 다음 명령을 실행합니다.

    sudo cat /etc/sysconfig/network-scripts/ifcfg-eth0 > /etc/sysconfig/network-scripts/ifcfg-eth1
    sudo sed -i 's/DEVICE=eth0/DEVICE=eth1/' /etc/sysconfig/network-scripts/ifcfg-eth1
    sudo sed -i '/DHCP_HOSTNAME/d' /etc/sysconfig/network-scripts/ifcfg-eth1
    sudo sed -i '/HWADDR/d' /etc/sysconfig/network-scripts/ifcfg-eth1
    
  3. 네트워크 스택 활성화 중에 변경 내용을 영구적으로 적용하려면 /etc/sysconfig/network-scripts/ifcfg-eth0 및 /etc/sysconfig/network-scripts/ifcfg-eth1(ifcfg-eth2, ifcfg-eth3 등)을 편집하고 VM에 두 개 이상의 네트워크 인터페이스가 있는 경우 값을 NM_CONTROLLED 변경 yes no합니다. 이렇게 하려면 다음 명령을 실행합니다.

    sudo cp -rp /etc/sysconfig/network-scripts/ifcfg-eth0 /tmp/ifcfg-eth0.bkp
    sudo cp -rp /etc/sysconfig/network-scripts/ifcfg-eth1 /tmp/ifcfg-eth1.bkp
    sudo sed -i 's/NM_CONTROLLED=yes/NM_CONTROLLED=no/' /etc/sysconfig/network-scripts/ifcfg-eth0
    sudo sed -i 's/NM_CONTROLLED=yes/NM_CONTROLLED=no/' /etc/sysconfig/network-scripts/ifcfg-eth1
    

    참고 항목

    NM_CONTROLLED=no 명령을 사용하여 cat /etc/sysconfig/network-scripts/ifcfg-eth* /etc/sysconfig/network-scripts/ifcfg-eth0/etc/sysconfig/network-scripts/ifcfg-eth1 파일 모두에 줄이 추가되었는지 확인합니다. 줄이 파일에 없으면 명령 및 sudo echo "NM_CONTROLLED=no" >> /etc/sysconfig/network-scripts/ifcfg-eth1 명령을 사용하여 sudo echo "NM_CONTROLLED=no" >> /etc/sysconfig/network-scripts/ifcfg-eth0 수동으로 추가합니다.

  4. 이 구성을 수정한 후 네트워크 서비스를 다시 시작하여 다음 명령을 실행하여 변경 내용을 적용합니다.

    sudo systemctl restart network
    
  5. 텍스트 편집기(다음 예제에서는 vi 편집기가 사용됨)를 사용하여 해당 규칙을 만들고 파일을 라우팅하고 각 파일에 적절한 규칙과 경로를 추가합니다. 다음 단계를 사용하여 네트워크 인터페이스당 하나의 rule-eth#route-eth# 파일 집합을 만듭니다. 모든 단계에서 그에 따라 IP 주소 및 서브넷 정보를 바꿉니다. 더 많은 네트워크 인터페이스가 있는 경우 해당 IP 주소, 네트워크 및 게이트웨이 세부 정보를 사용하여 각 인터페이스에 대해 동일한 규칙-eth#route-eth# 파일 집합을 만듭니다.

    • eth0에 대한 규칙 및 경로를 만듭니다.

      1. eth0에 대한 규칙 파일을 만들려면 /etc/sysconfig/network-scripts/rule-eth0 파일을 엽니다.

        sudo vi /etc/sysconfig/network-scripts/rule-eth0
        
      2. 규칙 파일에 다음 콘텐츠를 추가합니다. 그에 따라 IP 주소를 바꾸고, 구성에서 IPv4 주소를 지정하고, 32비트 값을 유지합니다.

        from 10.0.1.4/32 table eth0-rt
        to 10.0.1.4/32 table eth0-rt
        
      3. eth0에 대한 경로 파일을 만들려면 /etc/sysconfig/network-scripts/route-eth0 파일을 엽니다.

        sudo vi /etc/sysconfig/network-scripts/route-eth0
        
      4. 경로 파일에 다음 콘텐츠를 추가합니다. 그에 따라 네트워크 및 게이트웨이 값을 바꿉다.

        10.0.1.0/24 dev eth0 table eth0-rt
        default via 10.0.1.1 dev eth0 table eth0-rt
        
    • eth1에 대한 규칙 및 경로를 만듭니다.

      1. eth1에 대한 규칙 파일을 만들려면 /etc/sysconfig/network-scripts/rule-eth1 파일을 엽니다.

        sudo vi /etc/sysconfig/network-scripts/rule-eth1
        
      2. 규칙 파일에 다음 콘텐츠를 추가합니다. 그에 따라 IP 주소를 바꾸고, 명령에서 IPv4 주소를 지정하고, 32비트 값을 유지합니다.

        • 동일한 서브넷에 있는 두 개의 NIC:

          from 10.0.1.5/32 table eth1-rt
          to 10.0.1.5/32 table eth1-rt
          
        • 서로 다른 서브넷에 있지만 동일한 VNET에 있는 두 개의 NIC:

          from 10.0.2.5/32 table eth1-rt
          to 10.0.2.5/32 table eth1-rt
          
      3. eth1에 대한 경로 파일을 만들려면 /etc/sysconfig/network-scripts/route-eth1 파일을 엽니다.

        sudo vi /etc/sysconfig/network-scripts/route-eth1
        
      4. 경로 파일에 다음 콘텐츠를 추가합니다. 그에 따라 네트워크 및 게이트웨이 값을 바꿉다.

        • 동일한 서브넷에 있는 두 개의 NIC:

          10.0.1.0/24 dev eth1 table eth1-rt
          default via 10.0.1.1 dev eth1 table eth1-rt
          
        • 서로 다른 서브넷에 있지만 동일한 VNET에 있는 두 개의 NIC:

          10.0.2.0/24 dev eth1 table eth1-rt
          default via 10.0.2.1 dev eth1 table eth1-rt
          
  6. 변경 내용을 적용하려면 다음 명령을 실행하여 네트워크 서비스를 다시 시작합니다.

    sudo systemctl restart network
    

    이제 라우팅 규칙이 올바르게 설정되었으며 모든 네트워크 인터페이스에서 연결이 작동해야 합니다. SSH(Secure Shell)를 사용하거나 동일한 VNET의 VM에서 두 IP를 ping하여 연결을 테스트할 수 있습니다.

  7. 다음 명령을 사용하여 현재 경로 및 규칙이 로드되는지 확인합니다.

    sudo ip route show
    sudo ip rule show
    

Important

두 번째 NIC와 통신하는 데 여전히 문제가 있는 경우 명령을 사용하여 VM을 sudo reboot 다시 시작하고 7단계를 반복한 다음 연결을 다시 테스트합니다.

도움을 요청하십시오.

질문이 있거나 도움이 필요한 경우 지원 요청을 생성하거나Azure 커뮤니티 지원에 문의하세요. Azure 피드백 커뮤니티에 제품 피드백을 제출할 수도 있습니다.