주:
- 이 자습서에서는 Oracle Cloud에 액세스해야 합니다. 무료 계정에 등록하려면 Oracle Cloud Infrastructure Free Tier 시작하기를 참조하십시오.
- Oracle Cloud Infrastructure 자격 증명, 테넌시 및 구획에 예제 값을 사용합니다. 실습을 완료했으면 이러한 값을 자신의 클라우드 환경과 관련된 값으로 대체하십시오.
Oracle Linux 인스턴스의 두번째 인터페이스에 IP 주소 지정
소개
이 사용지침서에서는 Oracle Linux 인스턴스의 보조 네트워크 인터페이스에 IP 주소를 지정하는 방법에 대한 단계별 지침을 제공합니다. 네트워크 구성을 확장하든 특정 경로 지정 정책을 설정하든, 두번째 인터페이스를 추가 및 구성하는 것이 중요한 기술입니다.
다음을 수행하는 방법을 배웁니다.
-
사용 가능한 네트워크 인터페이스를 식별합니다.
-
정적 또는 동적 IP 주소로 보조 인터페이스를 구성합니다.
-
재부트 시 지속성을 위해 네트워크 구성 파일을 업데이트합니다.
-
구성을 확인하고 연결을 확인합니다.
이 자습서가 끝나면 Oracle Linux 인스턴스의 네트워킹 기능을 확장하여 여러 서브넷 또는 네트워크에서 원활하게 상호 작용할 수 있습니다.
목표
이 사용지침서에서는 Oracle Linux 인스턴스의 두번째 네트워크 인터페이스에 IP 주소를 지정하는 방법에 대해 알아봅니다.
-
보조 네트워크 인터페이스 설정과 관련된 구성 파일을 이해합니다.
-
두번째 인터페이스에 정적 IP 주소를 지정하는 방법을 알아봅니다.
-
새로 구성된 인터페이스의 연결 및 적절한 기능을 확인합니다.
필요 조건
- VCN(가상 클라우드 네트워크) 및 서브넷 2개를 생성합니다.
작업 1: OCI 컴퓨트 인스턴스 생성
이 작업에서는 OCI(Oracle Cloud Infrastructure)에 새 인스턴스를 생성합니다.
-
OCI 콘솔로 이동하여 컴퓨트, 인스턴스로 이동하고 인스턴스 생성을 누릅니다.
-
컴퓨트 인스턴스 생성에 다음 정보를 입력합니다.
- 인스턴스 이름을 입력합니다. 이 예에서는
sriov-test-01
를 사용합니다. - 아래로.
- 구성 변경을 누릅니다.
- VM.Standard.E4를 선택합니다. 가변이지만 E5도 사용할 수 있습니다.
- 아래로.
- Select existing virtual cloud network(기존 가상 클라우드 네트워크 선택)를 누릅니다.
- VCN 선택. 이 예에서는
oke
VCN을 사용하고 있습니다. - 기본 vNIC에 대한 기존 서브넷을 선택합니다.
- 아래로.
- 첫번째 VNIC 인터페이스 IP 주소의 경우 Private IPv4 address에서 Automatically assign private IPv4 address를 선택합니다.
- 기본 인터페이스에 대한 공용 서브넷을 선택했으므로 공용 IPv4 주소에서 공용 IPv4 주소 자동 지정을 선택합니다.
- 아래로.
- 기존(이전에 생성된) 퍼블릭 및 프라이빗 SSH 키를 업로드하려면 퍼블릭 키 파일(.pub) 업로드를 누릅니다.
- 찾아보기를 눌러 기존 퍼블릭 키를 선택합니다.
- 기존 공개 키가 업로드 대상으로 선택되었는지 확인합니다.
- Create를 누릅니다.
- 인스턴스가 성공적으로 배치되면 RUNNING 상태가 표시됩니다.
- 기본 VNIC가 구성되고 IP 주소가 자동으로 지정됩니다.
- 인스턴스 이름을 입력합니다. 이 예에서는
작업 2: 인스턴스에 두번째 VNIC 추가
-
인스턴스 세부정보 페이지로 이동합니다.
- Attached VNICs(연결된 VNIC)를 누릅니다.
- VNIC는 한 개만 있고 이름을
sr-iov-test-01
로 바꿨습니다(OCI에서 제공하는 기본 이름은 다릅니다). - Create VNIC를 누릅니다.
-
Create VNIC에서 다음 정보를 입력합니다.
- 두번째 VNIC에 대한 이름을 입력합니다. 이 예제에서는
secondary-vnic
를 사용합니다. - VCN 선택. 이 예에서는
oke
VCN을 사용하고 있습니다. - 보조 VNIC에 대한 기존 서브넷을 선택합니다. 기본 VNIC가 연결된 서브넷과 다른 서브넷입니다.
- Use network security groups to control traffic (optional)을 선택합니다.
- (선택사항) allow-all을 선택하여 모든 수신 및 송신 트래픽을 허용하는 네트워크 보안 그룹을 만듭니다.
- 아래로.
- 두번째 VNIC 인터페이스 IP 주소의 경우 개인 IPv4 주소에서 자동으로 개인 IPv4 주소 지정을 선택합니다.
- 변경사항 저장을 누릅니다.
- 두번째 VNIC에 대한 이름을 입력합니다. 이 예제에서는
-
이제 두번째 VNIC가 생성되어 인스턴스 및 다른 서브넷에 연결됩니다.
참고: OCI에서 두번째 VNIC에 대한 IP 주소를 자동으로 가져오는 옵션을 선택했더라도 운영체제(Oracle Linux)는 VNIC에서 IP 주소를 구성하지 않습니다. IP 주소는 OCI 콘솔에서 예약했지만 아직 구성되지 않았습니다.
작업 3: 두번째 VNIC에서 IP 주소 구성
두번째 VNIC의 IP 주소 구성은 여러 가지 방법으로 수행할 수 있습니다.
-
방법 1: OCI-network-config 명령을 사용하여 OCI 컴퓨트 인스턴스의 두번째 인터페이스에 IP 주소를 지정하려면 OCI CLI(Oracle Cloud Infrastructure Command Line Interface)(
oci-utils
패키지)를 사용합니다. -
방법 2: OCI CLI(
oci-utils
패키지)를 사용하여 ocid daemon을 사용하여 OCI Compute 인스턴스의 두번째 인터페이스에 IP 주소를 지정합니다. -
방법 3: OCI_Multi_VNIC_Setup 스크립트를 사용합니다.
-
방법 4:
/etc/sysconfig/network-scripts/
폴더에서 새 VNIC에 대한 인터페이스 구성 파일을 수동으로 만듭니다.
참고: 포괄적이고 실용적인 학습 경험을 위해서는 방법 1 또는 방법 2로 시작하세요. 이는 OCI 네이티브 도구를 활용하고 간단한 설정을 제공하기 때문입니다. 익숙해지면 스크립팅 및 자동화를 위한 방법 3을 살펴보고, 마지막으로 고급 수동 구성을 위한 방법 4를 사용해 보십시오.
방법 1: OCI CLI(oci-utils
패키지)를 사용하여 oci-network-config
명령을 사용하여 두번째 인터페이스에 IP 주소 지정
이 방법에서는 sriov-test-04
이라는 새 인스턴스를 만들고 oci-network-config 명령을 사용하여 두번째 인터페이스에 IP 주소를 지정합니다.
필요 조건: 새 인스턴스를 프로비전하고 두번째 VNIC를 추가했습니다.
-
다음 명령을 실행합니다.
ip a
명령을 실행하여 모든 인터페이스에서 IP 주소를 검색합니다.ens3
인터페이스를 기록해 둡니다.ens3
인터페이스에는 IP 주소가 구성되어 있습니다.ens5
인터페이스를 기록해 둡니다.ens5
인터페이스에는 구성된 IP 주소가 없습니다.route -n
명령을 실행하여 모든 인터페이스에 대한 모든 경로와 기본 게이트웨이를 검색합니다.ens3
인터페이스에는 사용 가능한 게이트웨이만 있습니다.
-
다음 명령은
oci-utils
명령이 미리 정의된 상태로 작동하는지 테스트하는 데 사용되었습니다.sudo oci-compartmentid
명령을 실행하여 인스턴스가 속한 컴파트먼트의 OCID를 검색합니다.sudo oci-instanceid
명령을 실행하여 인스턴스의 OCID를 검색합니다.
여기서
oci-utils
명령이 미리 정의된 상태로 작동하고 있음을 입증했습니다. -
다음 명령을 실행합니다.
sudo oci-network-config show
명령을 실행하여 인스턴스에서 모든 네트워크 구성을 검색합니다.- Cannot show information: Failed to get API session 오류를 확인합니다. 인스턴스의 VNIC에 대한 정보는 OCI 레벨이 아닌 운영체제 레벨에서 제공되지 않습니다.
ens3
인터페이스에 대한 운영 체제 레벨 정보를 기록해 둡니다.ens5
인터페이스에 대한 운영 체제 레벨 정보를 기록해 둡니다.ens5
인터페이스에 대한ADD
플래그를 확인합니다.
현재
ADD
로 플래그 지정되어 있는ens5
인터페이스를 구성하려면sudo oci-network-config configure
명령을 실행합니다.oci-network-config show
명령을 실행할 때 Cannot show information: Failed to get API session인 동일한 오류가 표시되므로 이 작업을 수행할 수 없습니다.질문: 이 오류가 발생하는 이유는 무엇입니까?
해결 방법: VCN은 인스턴스가 소유한 객체가 아니므로 적절한 인증 없이 인스턴스가 VCN 정보에 직접 접근할 수 없습니다. 인스턴스가 API에서 VCN 세부정보를 인출할 수 있도록 하려면 인스턴스가 포함된 동적 그룹을 생성하고 필요한 권한을 부여하는 정책을 지정해야 합니다.
-
OCI 컴퓨트 인스턴스가 API를 통해 VCN 세부정보를 인출할 수 있도록 하려면 다음 단계를 수행하십시오.
-
동적 그룹 생성: 이 동적 그룹에는 API에 액세스해야 하는 인스턴스가 포함됩니다. 인스턴스 OCID 또는 컴파트먼트와 같은 속성을 기반으로 하는 규칙을 사용하여 그룹을 정의합니다.
-
정책에 권한 지정: VCN 관련 리소스를 읽거나 관리할 수 있는 동적 그룹 권한을 부여하는 OCI IAM(Oracle Cloud Infrastructure Identity and Access Management) 정책을 생성해야 합니다. 예:
allow dynamic-group <dynamic-group-name> to read virtual-network-family in compartment <compartment-name>
-
인증에 인스턴스 주체 사용: 동적 그룹의 인스턴스는 ID를 사용하여 직접 인증하므로 애플리케이션에 인증서를 포함하지 않고도 보안 API 액세스가 가능합니다. 이 방법은 강력한 액세스 제어를 유지하면서 보안 관리를 단순화합니다.
-
-
OCI 콘솔로 이동합니다.
- 햄버거 메뉴(+)를 누르고 컴퓨트, 인스턴스로 이동한 후
sudo oci-network-config show
및sudo oci-network-config configure
명령을 실행할 컴퓨트 인스턴스를 선택합니다. - 표시를 눌러 인스턴스 OCID 값을 표시합니다.
- 복사를 눌러 인스턴스 OCID 값을 복사합니다.
- 햄버거 메뉴(+)를 누르고 ID, 도메인, 기본 도메인으로 이동한 다음 동적 그룹을 누릅니다.
- 동적 그룹 생성을 누릅니다.
- 동적 그룹에 대한 이름을 입력합니다. 이 예에서는
sriov-test-04
를 사용합니다. - 규칙 작성기를 누릅니다.
- 인스턴스 일치에서 인스턴스 OCID를 선택합니다.
- 값에 인스턴스 OCID의 값을 입력합니다.
- 규칙 추가를 누릅니다.
- 그룹에 새 규칙이 추가됩니다.
- Create를 누릅니다.
- 햄버거 메뉴(+)를 누르고 컴퓨트, 인스턴스로 이동한 후
-
이제 instance가 속한 그룹이 있으므로 instance를 포함하는 구획 내에 정책을 생성해야 합니다. 이 정책을 통해 그룹의 인스턴스가 서브넷과 같은 VCN 객체에 대한 작업을 수행할 수 있습니다.
- 햄버거 메뉴(+)를 누르고 ID로 이동한 다음 구획을 누릅니다.
- 루트 구획을 누릅니다. 이 예에서는
oraseemeaocids4
입니다.
- 이제 하위 구획에 있습니다.
- 다음 하위 구획을 누릅니다. 이 예에서는
NETWORK
입니다.
- 이제 다음 하위 구획에 있습니다.
- 다음 하위 구획을 누릅니다. 이 예에서는
Iwan
입니다.
- 올바른 구획이 선택되어 있는지 확인합니다.
- 정책을 누릅니다.
- 정책 생성을 누릅니다.
-
정책 생성에 다음 정보를 입력합니다.
- 정책에 대한 이름을 입력합니다. 이 예에서는
allow-sriov-test-04-to-vcn
를 사용합니다. - 정책에 대한 설명을 입력합니다. 이 예에서는
allow-sriov-test-04-to-vcn
를 사용합니다. - 수동 편집기 표시를 선택합니다.
allow dynamic-group sriov-test-04 to manage all-resources in compartment Iwan
정책을 입력합니다.- Create를 누릅니다.
- 정책에 대한 이름을 입력합니다. 이 예에서는
-
새로 생성된 정책 내의 새 정책 문을 확인합니다.
-
이제 인스턴스가 OCI CLI를 통해 VCN에 대한 API 호출을 수행하도록 허용했습니다.
ip a
명령을 실행하여 모든 인터페이스에서 IP 주소를 검색합니다.ens5
인터페이스에는 구성된 IP 주소가 없습니다.sudo oci-network-config show
명령을 실행하여 OCI 레벨의 인스턴스에서 모든 네트워크 구성을 검색합니다. 이제 오류가 사라졌습니다.ens5
인터페이스의 OCI 레벨 정보와ens5
인터페이스의ADD
플래그를 확인합니다.ens3
및ens5
인터페이스에 대한 운영 체제 레벨 정보를 확인합니다.
-
두번째 VNIC의 IP 주소를 구성하기 위해
sudo oci-network-config configure
명령을 실행하기 전에/etc/iproute2
이라는 새 디렉토리와/etc/iproute2/rt_tables
라는 새 파일을 만들어야 합니다. 시스템에서 이 새 인터페이스에 대한 경로 지정 및 기본 게이트웨이를 올바르게 구성할 수 있도록 이 작업이 필요합니다./etc/iproute2/rt_tables
파일은 Linux에서 여러 경로 지정 테이블을 정의 및 관리하고 정책 기반 경로 지정을 사용으로 설정하는 데 사용됩니다. 사람이 읽을 수 있는 이름을 라우팅 테이블 번호에 매핑하여 다른 게이트웨이, 인터페이스 또는 ISP를 통해 특정 트래픽을 라우팅하는 것과 같은 고급 설정을 허용합니다.sudo mkdir -p /etc/iproute2
명령을 실행하여/etc/iproute2
이라는 디렉토리를 생성하고sudo touch /etc/iproute2/rt_tables
명령을 실행하여rt_tables
라는 파일을 생성합니다. -
다음 명령을 실행합니다.
sudo oci-network-config configure
명령을 실행하여 두번째 VNIC의 IP 주소를 구성합니다.- Configured 메시지를 확인합니다.
sudo oci-network-config show
명령을 실행하여 OCI 레벨의 인스턴스에서 모든 네트워크 구성을 검색합니다.- 이제
ens5
인터페이스의 OCI 레벨 정보와ens5
인터페이스의ADD
플래그가 사라졌습니다. ip a
명령을 실행하여 모든 인터페이스에서 IP 주소를 검색합니다.- 이제
ens5
인터페이스에 IP 주소가 구성되었습니다. route -n
명령을 실행하여 모든 인터페이스에 대한 모든 경로와 기본 게이트웨이를 검색합니다.- 이제 게이트웨이를
ens5
인터페이스에 사용할 수 있습니다.
more /etc/iproute2/rt_tables
명령을 실행하여 새 항목이 만들어졌는지 확인합니다.11 ort
항목을 확인합니다.ip route show table 11
명령을 실행하여 이 매핑에 대한 경로 지정 테이블을 검토합니다.- 인스턴스에 새 두번째 VNIC인
ens5
인터페이스에 대한 기본 경로가 있습니다.
방법 2: OCI CLI(oci-utils
패키지)를 사용하여 ocid daemon
를 통해 두번째 인터페이스에 IP 주소 지정
이 방법에서는 sriov-test-01
라는 새 인스턴스를 만들고 ocid daemon을 사용하여 두번째 인터페이스에 IP 주소를 지정합니다.
필요 조건: 새 인스턴스를 프로비전하고 두번째 VNIC를 추가했습니다.
-
다음 명령을 실행합니다.
ip a
명령을 실행하여 모든 인터페이스에서 IP 주소를 검색합니다.ens5
인터페이스에는 구성된 IP 주소가 없습니다.
route -n
명령을 실행하여 모든 인터페이스에 대한 모든 경로와 기본 게이트웨이를 검색합니다.ens3
인터페이스에는 사용 가능한 게이트웨이만 있습니다.
ip -f inet -o addr
필터링된 명령을 실행하여 모든 인터페이스에서 구성된 모든 IP 주소를 표시합니다.- 구성된 인터페이스만 있으며 IP 주소는
ens3
인터페이스입니다.
systemctl list-unit-files ocid.service
명령을 실행하여 ocid 데몬이 사용으로 설정되었는지 확인합니다.- ocid 데몬은 사용 안함으로 설정됩니다.
sudo systemctl start ocid
명령을 실행하여 ocid 데몬을 시작합니다.sudo systemctl status ocid
명령을 실행하여 ocid 데몬의 상태를 확인합니다.- ocid 데몬이 활성 상태이며 실행 중입니다.
ip -f inet -o addr
필터링된 명령을 실행하여 모든 인터페이스에서 구성된 모든 IP 주소를 표시합니다.- 이제
ens5
인터페이스가 구성되었으며 IP 주소가 있습니다.
ip a
명령을 실행하여 모든 인터페이스에서 IP 주소를 검색합니다.- 이제
ens5
인터페이스에 IP 주소가 구성되어 있습니다.
route -n
명령을 실행하여 모든 인터페이스에 대한 모든 경로와 기본 게이트웨이를 검색합니다.- 이제 게이트웨이를
ens5
인터페이스에 사용할 수 있습니다.
-
재부트 후 OCID 서비스가 자동으로 시작되도록 하려면
sudo systemctl enable ocid
명령을 실행합니다. -
메소드 1과 동일하게
/etc/iproute2
이라는 디렉토리와/etc/iproute2/rt_tables
라는 파일을 생성해야 합니다. 시스템에서 이 새 인터페이스에 대한 경로 지정 및 기본 게이트웨이를 올바르게 구성할 수 있도록 이 작업이 필요합니다./etc/iproute2/rt_tables
파일은 Linux에서 여러 경로 지정 테이블을 정의 및 관리하고 정책 기반 경로 지정을 사용으로 설정하는 데 사용됩니다. 사람이 읽을 수 있는 이름을 라우팅 테이블 번호에 매핑하여 다른 게이트웨이, 인터페이스 또는 ISP를 통해 특정 트래픽을 라우팅하는 것과 같은 고급 설정을 허용합니다.sudo mkdir -p /etc/iproute2
명령을 실행하여/etc/iproute2
이라는 디렉토리를 생성하고sudo touch /etc/iproute2/rt_tables
명령을 실행하여rt_tables
라는 파일을 생성합니다. -
sudo reboot
명령을 실행합니다.more /etc/iproute2/rt_tables
명령을 실행하여 새 항목이 만들어졌는지 확인합니다.11 ort3
항목을 확인합니다.ip route show table 11
명령을 실행하여 이 매핑에 대한 경로 지정 테이블을 검토합니다.- 인스턴스에 새 두번째 VNIC인
ens5
인터페이스에 대한 기본 경로가 있습니다.
방법 3: OCI_Multi_VNIC_Setup
스크립트 사용
이 방법에서는 sriov-test-02
이라는 새 인스턴스를 만들고 OCI_Multi_VNIC_Setup 스크립트를 사용하여 두번째 VNIC에 대한 IP 주소를 구성합니다.
필요 조건: 새 인스턴스를 프로비전하고 두번째 VNIC를 추가했습니다.
-
다음 명령을 실행합니다.
ip a
명령을 실행하여 모든 인터페이스에서 IP 주소를 검색합니다.ens5
인터페이스에는 구성된 IP 주소가 없습니다.route -n
명령을 실행하여 모든 인터페이스에 대한 모든 경로와 기본 게이트웨이를 검색합니다.ens3
인터페이스에는 사용 가능한 게이트웨이만 있습니다.
-
다음 curl 명령을 사용하여 스크립트를 다운로드합니다.
curl -o OCI_Multi_VNIC_Setup.sh https://raw.githubusercontent.com/Olygo/OCI_Multi_VNIC_Setup/refs/heads/main/OCI_Multi_VNIC_Setup.sh
-
ls -l
명령을 실행하여 모든 파일을 나열합니다. -
CI_Multi_VNIC_Setup.sh
스크립트가 성공적으로 다운로드되었음을 알 수 있습니다. -
chmod +x ./OCI_Multi_VNIC_Setup.sh
명령을 실행하여 다운로드한 스크립트를 실행 파일로 만듭니다. -
sudo ./OCI_Multi_VNIC_Setup.sh
명령을 실행하여 스크립트를 실행합니다.
-
스크립트를 실행할 때 입력으로 사용해야 하는 일부 정보를 OCI 콘솔에서 수집합니다.
- 인스턴스 세부정보 페이지에서 기본 인터페이스의 개인 IPv4 주소를 기록해 둡니다.
- 아래로.
- Attached VNICs(연결된 VNIC)를 누릅니다.
- 두번째 VNIC를 누릅니다.
- 두번째 VNIC의 MAC 주소를 기록해 둡니다.
- 두번째 VNIC의 IP address를 적어 둡니다.
주: 인스턴스 운영체제에서 IP 주소가 구성되지 않은 경우에도 IP 주소는 이미 OCI 콘솔 관리에서 예약되어 있습니다.
-
스크립트에 이 정보가 필요하므로 IP 주소 및 서브넷 정보를 사용하여 서브넷의 기본 게이트웨이를 확인합니다.
주: OCI 콘솔은 기본 게이트웨이에 대한 세부정보를 제공하지 않지만 일반적으로 서브넷에서 사용 가능한 첫번째 IP 주소입니다.
다음 정보가 있습니다.
기본 인터페이스(ens3) 보조 인터페이스(ens5) IPv4 서브넷: 10.0.0.0/29 10.0.3.0/27 IPv4 주소: 10.0.0.4 10.0.3.5/27 IPv4 게이트웨이: 10.0.0.1 10.0.3.1 MAC 주소: 스크립트에 필요하지 않음 02:00:17:00:61:01 -
다음 정보를 입력하십시오.
- 기본 VNIC 인터페이스 이름:
ens3
를 입력합니다. - 기본 VNIC IP:
10.0.0.4
를 입력합니다. - 기본 VNIC 게이트웨이 IP:
10.0.0.1
를 입력합니다. - 보조 VNIC 인터페이스 이름:
ens5
를 입력합니다. - 보조 VNIC IP 주소(CIDR 표기법): 전체 CIDR 표기법과 함께
10.0.3.5/27
를 입력합니다. - 보조 VNIC MAC 주소:
02:00:17:00:61:01
를 입력합니다. - 이 인터페이스는 다른 서브넷의 일부가 되므로 여기에
y
를 입력하십시오. - 보조 VNIC 게이트웨이:
10.0.3.1
를 입력합니다.
- 정보를 확인하고
y
를 입력하여 확인합니다. y
를 입력하여 설정을 다시 확인합니다.- 스크립트가 인터페이스 구성을 시작하고 이 작업을 수행하는 동안 상태 업데이트를 제공합니다.
- 기본 VNIC 인터페이스 이름:
-
상태 메시지의 전체 출력은 다음과 같습니다.
Summary of your configuration: - The primary Vnic name is: ens3 - The primary Vnic IP is: 10.0.0.4 - The primary Vnic GW is: 10.0.0.1 - The secondary Vnic name is: ens5 - The secondary Vnic IP with CIDR is: 10.0.3.5/27 - The secondary Vnic MAC is: 02:00:17:00:61:01 - The secondary Vnic GW is: 10.0.3.1 Do you confirm these settings ? (y)es/(n)o/(q)uit: y User settings confirmed... Summary of your configuration: - The primary Vnic name is: ens3 - The primary Vnic IP is: 10.0.0.4 - The primary Vnic GW is: 10.0.0.1 - The secondary Vnic name is: ens5 - The secondary Vnic IP with CIDR is: 10.0.3.5/27 - The secondary Vnic MAC is: 02:00:17:00:61:01 - The secondary Vnic GW is: 10.0.3.1 Do you confirm these settings ? (y)es/(n)o/(q)uit: y User settings confirmed... *** Checking if NetworkManager CLI (nmcli) is installed *** nmcli is already installed. *** Configuring NetworkManager *** NetworkManager is already enabled. NetworkManager is already running. NetworkManager is configured and running. *** Check and install iproute if not installed *** Package 'iproute' is already installed. Proceeding. *** Ensure /etc/iproute2 directory exists *** Directory '/etc/iproute2' does not exist. Creating it... Directory '/etc/iproute2' created successfully. *** Ensure /etc/iproute2/rt_tables file exists *** File '/etc/iproute2/rt_tables' does not exist. Creating it... File '/etc/iproute2/rt_tables' created successfully with a default header. *** Starting ens5 configuration and persistence setup *** *** Configure secondary VNIC with NetworkManager *** Connection 'ens5' (582dd2d7-3a3e-45b9-8289-ce3d474f4b74) successfully added. Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3) *** Enable IP forwarding and configure reverse path filtering *** # Enable IP forwarding net.ipv4.ip_forward=1 # Configure reverse path filtering net.ipv4.conf.all.rp_filter=2 net.ipv4.conf.default.rp_filter=2 net.ipv4.conf.ens3.rp_filter=2 net.ipv4.conf.ens5.rp_filter=2 *** Apply sysctl settings immediately *** kernel.unknown_nmi_panic = 1 net.ipv4.ip_forward = 1 net.ipv4.conf.all.rp_filter = 2 net.ipv4.conf.default.rp_filter = 2 net.ipv4.conf.ens3.rp_filter = 2 net.ipv4.conf.ens5.rp_filter = 2 *** Adding custom routing tables *** 100 vnic_1 200 vnic_2 *** Adding IP rules and routes *** *** Creating policy routing persistence script *** *** Creating systemd service for policy routing *** Created symlink /etc/systemd/system/multi-user.target.wants/policy-routing.service → /etc/systemd/system/policy-routing.service. *** Testing connectivity *** PING 10.0.0.4 (10.0.0.4) 56(84) bytes of data. 64 bytes from 10.0.0.4: icmp_seq=1 ttl=64 time=0.059 ms 64 bytes from 10.0.0.4: icmp_seq=2 ttl=64 time=0.037 ms 64 bytes from 10.0.0.4: icmp_seq=3 ttl=64 time=0.031 ms 64 bytes from 10.0.0.4: icmp_seq=4 ttl=64 time=0.027 ms --- 10.0.0.4 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3073ms rtt min/avg/max/mdev = 0.027/0.038/0.059/0.013 ms PING 10.0.3.5 (10.0.3.5) 56(84) bytes of data. 64 bytes from 10.0.3.5: icmp_seq=1 ttl=64 time=0.026 ms 64 bytes from 10.0.3.5: icmp_seq=2 ttl=64 time=0.022 ms 64 bytes from 10.0.3.5: icmp_seq=3 ttl=64 time=0.023 ms 64 bytes from 10.0.3.5: icmp_seq=4 ttl=64 time=0.035 ms --- 10.0.3.5 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3069ms rtt min/avg/max/mdev = 0.022/0.026/0.035/0.007 ms PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data. 64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.098 ms 64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=0.097 ms 64 bytes from 10.0.0.1: icmp_seq=3 ttl=64 time=0.067 ms 64 bytes from 10.0.0.1: icmp_seq=4 ttl=64 time=0.060 ms --- 10.0.0.1 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3069ms rtt min/avg/max/mdev = 0.060/0.080/0.098/0.019 ms *** Network configuration completed *** IP rules: 0: from all lookup local 32764: from 10.0.3.5 lookup vnic_2 32765: from 10.0.0.4 lookup vnic_1 32766: from all lookup main 32767: from all lookup default $ nmcli device show ens5 GENERAL.DEVICE: ens5 GENERAL.TYPE: ethernet GENERAL.HWADDR: 02:00:17:00:61:01 GENERAL.MTU: 9000 GENERAL.STATE: 100 (connected) GENERAL.CONNECTION: ens5 GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/3 WIRED-PROPERTIES.CARRIER: on IP4.ADDRESS[1]: 10.0.3.5/27 IP4.GATEWAY: 10.0.3.1 IP4.ROUTE[1]: dst = 10.0.3.0/27, nh = 0.0.0.0, mt = 101 IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 10.0.3.1, mt = 101 IP4.ROUTE[3]: dst = 0.0.0.0/0, nh = 10.0.3.1, mt = 0, table=200 IP6.ADDRESS[1]: fe80::70ba:d30f:3dac:6462/64 IP6.GATEWAY: -- IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 1024 *** Configuration complete! ens5 is set up and all settings are persistent *** [opc@sriov-test-02 ~]$
ip a
명령을 실행하여 모든 인터페이스에서 IP 주소를 검색합니다.- 이제
ens5
인터페이스에 IP 주소가 구성되어 있습니다. route -n
명령을 실행하여 모든 인터페이스에 대한 모든 경로와 기본 게이트웨이를 검색합니다. 이제 게이트웨이를ens5
인터페이스에 사용할 수 있습니다.
참고:
- IP 주소를 구성하고 경로 지정이 올바르게 작동하는지 확인하는 것은 서로 다른 두 가지 사항입니다.
- 스크립트는 또한 우리를 위해 라우팅 부품을 구성합니다.
- 스크립트의 특정 출력에 주의하십시오.
-
스크립트의 다음 부분에서는
/etc/iproute2 directory
이라는 디렉토리와rt_tables
라는 파일을 생성합니다.*** Ensure /etc/iproute2 directory exists *** Directory '/etc/iproute2' does not exist. Creating it... Directory '/etc/iproute2' created successfully. *** Ensure /etc/iproute2/rt_tables file exists *** File '/etc/iproute2/rt_tables' does not exist. Creating it... File '/etc/iproute2/rt_tables' created successfully with a default header.
-
스크립트의 다음 부분에서는 필요한 항목을
rt_tables
파일에 추가합니다.*** Adding custom routing tables *** 100 vnic_1 200 vnic_2
-
스크립트의 다음 부분에서는 인스턴스에 대한 정책 기반 경로 지정을 허용하는 IP 경로 지정 규칙을 추가하고, 여러 VNIC가 있는 인스턴스가 있는 경우 필요한 정책 기반 경로 지정에 대한 서비스도 사용으로 설정합니다.
*** Adding IP rules and routes *** *** Creating policy routing persistence script *** *** Creating systemd service for policy routing *** Created symlink /etc/systemd/system/multi-user.target.wants/policy-routing.service → /etc/systemd/system/policy-routing.service.
-
다음 명령을 실행합니다.
more /etc/iproute2/rt_tables
명령을 실행하여 새 항목이 만들어졌는지 확인합니다.100 vnic_1
및200 vnic_2
항목을 확인합니다.ip route show table 100
명령을 실행하여 이 매핑에 대한 경로 지정 테이블을 검토하고 인스턴스의 기본 VNICens3
인터페이스에 대한 기본 경로가 있는지 확인합니다.ip route show table 200
명령을 실행하여 이 매핑에 대한 경로 지정 테이블을 검토하고 인스턴스에 새 두번째 VNIC인ens5
인터페이스에 대한 기본 경로가 있는지 확인합니다.
방법 4: 수동으로 인터페이스 구성 파일 생성
sriov-test-03
라는 새 인스턴스를 만들고 /etc/sysconfig/network-scripts/
디렉토리의 새 VNIC에 대한 정의로 두번째 VNIC에 대한 IP 주소를 구성합니다.
주: 이 방법에서는 메소드 3의 스크립트에 의해 자동으로 수행된 거의 모든 단계를 구성합니다.
필요 조건: 새 인스턴스를 프로비전하고 두번째 VNIC를 추가했습니다.
-
다음 명령을 실행합니다.
ip a
명령을 실행하여 모든 인터페이스에서 IP 주소를 검색합니다.ens5
인터페이스에는 구성된 IP 주소가 없습니다.route -n
명령을 실행하여 모든 인터페이스에 대한 모든 경로와 기본 게이트웨이를 검색합니다.ens3
인터페이스에는 사용 가능한 게이트웨이만 있습니다.
-
Instance(인스턴스), Attached VNICS(연결된 VNIC)로 이동하고 두번째 VNIC를 선택하여 두번째 VNIC의 IP 주소를 검색합니다. IP 주소를 적어 둡니다.
-
cd /etc/sysconfig/network-scripts/
명령을 사용하여/network-scripts
폴더로 이동하고sudo nano ifcfg-ens5
명령을 사용하여 이름이ifcfg-ens5
인 새 파일을 동일한 폴더에 생성합니다. -
다음 매개변수로
ens5
인터페이스를 구성합니다.NAME="ens5" DEVICE="ens5" IPADDR=10.0.3.19 NETMASK=255.255.255.224 GATEWAY=10.0.3.1 ONBOOT=yes
- IP 주소는 OCI 콘솔에서 검색한 주소와 동일합니다.
- 서브넷은 이 인터페이스가 접속된 VCN 내의 서브넷에서 파생됩니다.
- 게이트웨이 IP 주소는 서브넷의 첫 번째 IP 주소입니다.
-
nano 편집기를 사용하여
ifcfg-ens5
라는 config 파일을 저장합니다.ls -l
명령을 사용하여/etc/sysconfig/network-scripts/
디렉토리의 파일을 나열합니다.ens3
에 대한 인터페이스 구성 파일이 있습니다.ens5
에 대한 인터페이스 구성 파일이 있습니다.
more ifcfg-ens5
명령을 사용하여ifcfg-ens5
파일의 내용을 확인합니다.- 매개변수가 모두 올바르게 구성되었는지 확인하십시오.
ip a
명령을 실행하여 모든 인터페이스에서 IP 주소를 검색합니다.ens5
인터페이스에는 구성된 IP 주소가 아직 없습니다.
-
sudo reboot
명령을 사용하여 인스턴스를 재부트합니다.ip a
명령을 실행하여 모든 인터페이스에서 IP 주소를 검색합니다.- 이제
ens5
인터페이스에 IP 주소가 구성되어 있습니다. - 모든 인터페이스에 대한 모든 경로 및 기본 게이트웨이를 검색하려면
route -n
명령을 실행합니다. 이제 게이트웨이를ens5
인터페이스에 사용할 수 있습니다.
주: IP 주소를 구성하고 경로 지정이 올바르게 작동하는지 확인하는 것은 서로 다릅니다.
-
경로 지정 구성.
/etc/iproute2/rt_tables
파일은 Linux에서 여러 경로 지정 테이블을 정의 및 관리하고 정책 기반 경로 지정을 사용으로 설정하는 데 사용됩니다. 사람이 읽을 수 있는 이름을 라우팅 테이블 번호에 매핑하여 다른 게이트웨이, 인터페이스 또는 ISP를 통해 특정 트래픽을 라우팅하는 것과 같은 고급 설정을 허용합니다.sudo mkdir -p /etc/iproute2
명령을 실행하여/etc/iproute2
이라는 디렉토리를 만들고sudo nano /etc/iproute2/rt_tables
명령을 실행하여rt_tables
라는 파일을 만듭니다. -
rt_tables
파일에서 다음 매개변수를 구성합니다.100 vnic_1 200 vnic_2
-
sudo nano /usr/local/bin/setup_policy_routing.sh
명령을 사용하여 정책 경로 지정 지속성 스크립트를 만듭니다.#!/bin/bash # Reapply IP rules ip rule add from 10.0.0.3 table vnic_1 ip rule add from 10.0.3.19 table vnic_2 # Reapply routing rules ip route add default via 10.0.0.1 dev ens3 table vnic_1 ip route add default via 10.0.3.1 dev ens5 table vnic_2
-
sudo chmod +x /usr/local/bin/setup_policy_routing.sh
명령을 실행하여 정책 경로 지정 지속성 스크립트를 실행할 수 있도록 합니다. -
nano /etc/systemd/system/policy-routing.service
명령을 사용하여 정책 경로 지정 스크립트에 대한 systemd 서비스를 만듭니다. 이 작업은 명령이 포함된 VNIC가 여러 개인 인스턴스가 있는 경우에 필요합니다. -
policy-routing.service
파일에서 다음 매개변수를 구성합니다.[Unit] Description=Setup Policy Routing for Multiple VNICs After=network-online.target Wants=network-online.target [Service] Type=oneshot ExecStart=/usr/local/bin/setup_policy_routing.sh RemainAfterExit=true [Install] WantedBy=multi-user.target
-
sudo chmod +x /etc/systemd/system/policy-routing.service
명령을 실행하여 정책 기반 경로 지정에 대한 서비스 파일을 실행 파일로 만듭니다. -
sudo systemctl start policy-routing.service
명령을 실행하여 정책 기반 경로 지정에 대한 서비스를 시작합니다. -
sudo systemctl status policy-routing
명령을 실행하여 정책 기반 경로 지정에 대한 서비스가 로드되고 활성 상태인지 확인합니다.[opc@sriov-test-03 ~]$ sudo systemctl status policy-routing ● policy-routing.service - Setup Policy Routing for Multiple VNICs Loaded: loaded (/etc/systemd/system/policy-routing.service; enabled; vendor preset: disabled) Active: active (exited) since Wed 2024-12-11 09:07:16 GMT; 4 weeks 1 days ago Process: 2415 ExecStart=/usr/local/bin/setup_policy_routing.sh (code=exited, status=0/SUCCESS) Main PID: 2415 (code=exited, status=0/SUCCESS) Tasks: 0 (limit: 99891) Memory: 0B CGroup: /system.slice/policy-routing.service Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable. [opc@sriov-test-03 ~]$
-
sudo systemctl enable policy-routing.service
명령을 실행하여 인스턴스를 (다시)시작할 때 정책 기반 경로 지정 서비스가 시작되는지 확인합니다. -
sudo reboot
명령을 사용하여 인스턴스를 재부트합니다. -
재부트 후 다음 명령을 실행합니다.
more /etc/iproute2/rt_tables
명령을 실행하여 새 항목이 만들어졌는지 확인합니다.- 수동으로 구성한
100 vnic_1
및200 vnic_2
항목을 확인합니다. ip route show table 100
명령을 실행하여 이 매핑에 대한 경로 지정 테이블을 검토하고 인스턴스의 기본 VNICens3
인터페이스에 대한 기본 경로가 있는지 확인합니다.ip route show table 200
명령을 실행하여 이 매핑에 대한 경로 지정 테이블을 검토하고 인스턴스에 새 두번째 VNIC인ens5
인터페이스에 대한 기본 경로가 있는지 확인합니다.
다음 단계
OCI Linux 인스턴스에서 두 번째 인터페이스를 구성하는 데 적합한 방법을 선택하는 것은 요구 사항, 기술 전문 지식 및 원하는 수준의 제어에 따라 달라집니다. 간단하고 효율적인 설정을 원할 경우 oci-utils
패키지 및 Oracle 고유 도구를 사용하는 방법 1 및 방법 2를 사용하는 것이 좋습니다. 이러한 방법은 수동 구성이나 외부 스크립트에 대한 심층 분석 없이 OCI의 내장 기능을 활용하려는 사용자에게 적합합니다.
또한 자동화 및 확장성이 중요한 경우 OCI_Multi_VNIC_Setup
스크립트를 활용하는 방법 3은 유연한 솔루션을 제공합니다. 이 기능은 구성 시 시간을 절약하고 일관성을 유지하면서 여러 인스턴스에서 여러 인터페이스를 관리할 때 특히 유용합니다.
한편 수동 구성 접근 방식인 방법 4는 최고 수준의 사용자 정의를 제공합니다. 이 방법은 자동화 도구를 사용할 수 없거나 선호하지 않는 고급 사용자 또는 특정 환경에 가장 적합합니다. 또한 Oracle Linux 인스턴스에서 네트워킹의 내부 작업을 이해하는 훌륭한 방법 역할을 합니다.
이러한 방법을 이해하면 기본 설정부터 복잡한 다중 클라우드 아키텍처에 이르기까지 다양한 시나리오에서 보조 인터페이스를 유연하게 구성할 수 있습니다. 올바른 접근 방식을 통해 OCI 워크로드에 맞게 조정된 안정적이고 효율적인 네트워크 구성을 보장할 수 있습니다.
확인
- 작성자 - Iwan Hoogendoorn(OCI 네트워크 전문가)
추가 학습 자원
docs.oracle.com/learn에서 다른 실습을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 Oracle Learning Explorer가 되려면 education.oracle.com/learning-explorer을 방문하십시오.
제품 설명서는 Oracle Help Center를 참조하십시오.
Assign an IP Address to a Second Interface on an Oracle Linux Instance
G25219-01
January 2025