SDN Linux

agnusdei·2023년 10월 29일

물론, 아래의 내용을 문단별로 정리하여 SDN과 ip netns 명령어를 결합한 내용으로 제공하겠습니다.

netns는 네트워크 네임스페이스를 가리키는 말입니다. "netns"는 "네트워크 네임스페이스(Network Namespace)"의 줄임말로, 리눅스에서 네트워크 스택을 격리시키기 위해 사용되는 커널 기능입니다. 이를 통해 독립적인 네트워크 인터페이스, 라우팅 테이블, 방화벽 규칙 등을 가진 별도의 네트워크 공간을 생성할 수 있습니다. 종종 "netns"는 네트워크 관련 설정과 관리를 위해 사용되는 용어로 활용됩니다.


1. SDN(Software-Defined Networking) 소개:

SDN은 네트워크 관리와 제어를 소프트웨어로 추상화하여 네트워크의 효율성을 높이고 유연성을 제공하는 혁신적인 기술입니다. SDN은 컨트롤러, 스위치, 애플리케이션으로 구성되며, 네트워크를 중앙에서 제어하여 자동화와 효율성을 실현합니다.

2. SDN 아키텍처 및 작동 원리:

  • SDN 아키텍처:

    • SDN 컨트롤러: 네트워크 관리의 중심 역할을 하는 소프트웨어 컨트롤러입니다.
    • SDN 스위치 또는 라우터: 데이터 패킷을 전달하는 네트워크 디바이스입니다.
    • SDN 애플리케이션: 다양한 네트워크 관리 및 제어 애플리케이션을 의미합니다.
  • SDN 작동 원리:

    • 컨트롤러는 네트워크 상태 정보를 수집하고 스위치 및 라우터에 명령을 내려 패킷의 흐름을 제어합니다.

3. SDN의 장점:

  • 중앙 집중화된 관리로 네트워크 상태를 모니터링하고 자동화된 작업을 통한 효율적인 리소스 사용을 허용합니다.

4. ip netns 명령어와 SDN:

ip netns 명령어를 사용하면 네트워크 네임스페이스를 생성하고 관리할 수 있습니다.

  • sudo ip netns mynet add: mynet이라는 네트워크 네임스페이스를 추가합니다.

  • sudo ip netns list: 현재 시스템에 있는 네트워크 네임스페이스 목록을 표시합니다.

  • sudo ip netns exec mynet ip l: mynet 네임스페이스에서 네트워크 인터페이스 정보를 표시합니다.

이러한 ip netns 명령어를 통해 네트워크 네임스페이스를 관리하고 SDN 아키텍처의 한 부분으로 사용할 수 있습니다. 예를 들어, 네트워크 네임스페이스를 생성하고 관리하여 SDN 환경에서 서로 격리된 네트워크 환경을 구축하거나 실험할 수 있습니다. 이것은 SDN의 유연성과 관리의 중앙집중화를 통해 네트워크를 더욱 효과적으로 관리하고 테스트하는 데 도움이 됩니다.


  1. sudo ip netns exec mynet ip link set dev lo up: 이 명령어는 mynet이라는 네트워크 네임스페이스에서 lo라는 루프백(로컬 호스트) 네트워크 인터페이스를 활성화하는 역할을 합니다.

    • sudo: 명령을 슈퍼 유저 권한으로 실행합니다.

    • ip netns exec mynet: mynet이라는 네트워크 네임스페이스 내에서 명령을 실행합니다.

    • ip link set dev lo up: lo 인터페이스를 활성화합니다. 여기서 lo는 시스템 내의 루프백 인터페이스를 가리킵니다.

  2. sudo ip netns exec mynet ping 127.0.0.1: 이 명령어는 mynet 네트워크 네임스페이스에서 127.0.0.1 즉, 로컬 루프백 인터페이스에 ping을 보내는 명령어입니다.

    • sudo: 명령을 슈퍼 유저 권한으로 실행합니다.

    • ip netns exec mynet: mynet이라는 네트워크 네임스페이스 내에서 명령을 실행합니다.

    • ping 127.0.0.1: 127.0.0.1은 로컬 루프백(자기 자신)을 가리키며, 네트워크 네임스페이스 내에서 자체 테스트를 위해 로컬 호스트에 ping을 보냅니다.

이러한 명령어는 네트워크 네임스페이스에서 네트워크 인터페이스를 구성하고, 자체적인 테스트를 위해 해당 네트워크 네임스페이스 내에서 로컬 호스트(자기 자신)에 ping을 보내는 데 사용됩니다. 이는 네트워크 네임스페이스를 테스트하고 구성하는 데 도움이 됩니다.


1. sudo ip netns exec mynet ip addr add 172.2.0.1/24 dev veth1

  • sudo: 명령을 슈퍼유저 권한으로 실행합니다.
  • ip netns exec mynet: mynet이라는 네트워크 네임스페이스에서 명령을 실행합니다.
  • ip addr add 172.2.0.1/24 dev veth1: veth1 인터페이스에 172.2.0.1 IP 주소를 할당합니다.

2. sudo ip netns exec mynet ip link set dev veth1 up

  • sudo: 명령을 슈퍼유저 권한으로 실행합니다.
  • ip netns exec mynet: mynet 네트워크 네임스페이스에서 명령을 실행합니다.
  • ip link set dev veth1 up: veth1 인터페이스를 활성화합니다.

3. sudo ip addr add 172.2.0.2/24 dev veth0

  • sudo: 명령을 슈퍼유저 권한으로 실행합니다.
  • ip addr add 172.2.0.2/24 dev veth0: veth0 인터페이스에 172.2.0.2 IP 주소를 할당합니다.

4. sudo ip link set dev veth0 up

  • sudo: 명령을 슈퍼유저 권한으로 실행합니다.
  • ip link set dev veth0 up: veth0 인터페이스를 활성화합니다.

위의 명령어들은 네트워크 네임스페이스 mynet 내에서 수행됩니다. veth0veth1 인터페이스에 각각 IP 주소를 할당하고 활성화하여 이 두 인터페이스 간의 통신이 가능하도록 준비를 마칩니다. 이렇게 하면 veth0veth1 간에 네트워크 통신을 수행할 수 있게 되며, 해당 네트워크 네임스페이스 내에서 상호 작용할 수 있습니다.

profile
DevSecOps, Pentest, Cloud(OpenStack), Develop, Data Engineering, AI-Agent

0개의 댓글