네트워크 네임스페이스를 인터넷에 연결

네트워크 네임스페이스를 인터넷에 연결

내 시나리오는 다음과 같습니다. 자체 네트워크 인터페이스를 사용하여 별도의 네임스페이스에서 프로그램을 실행할 수 있기를 원합니다. 하지만 물리적 네트워크 인터페이스를 통해 인터넷에 액세스할 수도 있기를 원합니다. 이것은 지금까지 내 코드입니다.

ip netns add private_ns
ip link add link eth1 name eth1.100 type vlan id 100
ip link set eth1.100 netns private_ns
ip netns exec private_ns ip addr add 10.1.1.1/24 dev eth1.100
ip netns exec private_ns ip link set eth1.100 up

그런 다음 다음을 시도합니다.

ip netns exec private_ns ping 8.8.8.8

나는 얻다connect: Network is unreachable

답변1

각 네트워크 네임스페이스는 네트워크 스택의 별도 논리적 복사본입니다. 따라서 네트워크 네임스페이스를 별도의 시스템으로 처리해야 합니다.

현재 컴퓨터를 통해 새 컴퓨터를 인터넷에 연결하려면 다음이 필요합니다.

    1. 각 컴퓨터에서 사용하지 않는 네트워크 카드를 선택합니다(또는 새 카드를 설치합니다).
    1. 네트워크 케이블로 함께 연결하십시오.
    1. 이더넷 브리징, 일반 IP 라우팅 또는 NAT 중에서 선택하세요.
  • 4a. 이더넷 브리징의 경우 기존 컴퓨터의 새 네트워크 카드를 적절한 브리지에 추가하고 브리지가 있는 서브넷의 IP를 보조 컴퓨터의 네트워크 카드에 제공합니다.
  • 4b. 레거시 IP 라우팅의 경우 새 링크에 대한 IP 블록을 선택합니다. 블록에 인터페이스 IP를 할당하고, 기존 시스템에서 IP 전달이 활성화되어 있는지 확인하고, 나머지 네트워크가 새 서브넷을 인식하는지 확인하고, iptables 규칙(있는 경우)이 트래픽 흐름을 허용하는지 확인하세요.
  • 4c. NAT의 경우 새 링크에 대한 IP 블록을 선택합니다. 블록에 인터페이스 IP를 할당하고, 기존 시스템에서 IP 전달이 활성화되어 있는지 확인하고, IPtables 규칙이 트래픽 흐름을 허용하는지 확인하고, 새 서브넷에서 외부 호스트로의 트래픽에 대한 SNAT 또는 MASQURADE 규칙을 설정합니다.
    1. 새 컴퓨터에 적절한 기본 게이트웨이를 설정합니다.

네트워크 네임스페이스를 사용할 때도 마찬가지입니다.

    1. 기본 네트워크 네임스페이스에 veth 쌍을 만듭니다.
    1. veth 쌍의 한쪽 끝을 보조 네트워크 네임스페이스로 이동합니다.
    1. 이더넷 브리징, 일반 IP 라우팅 또는 NAT 중에서 선택하세요.
  • 4a. 이더넷 브리징의 경우 기본 네트워크 네임스페이스의 새 veth를 적절한 브리지에 추가하고 새 네트워크 네임스페이스의 veth에 브리지 서브넷의 IP를 제공합니다.
  • 4b. 레거시 IP 라우팅의 경우 새 링크에 대한 IP 블록을 선택합니다. 블록에 인터페이스 IP를 할당하고, 기존 시스템에서 IP 전달이 활성화되어 있는지 확인하고, 나머지 네트워크가 새 서브넷을 인식하는지 확인하고, iptables 규칙(있는 경우)이 트래픽 흐름을 허용하는지 확인하세요.
  • 4c. NAT의 경우 새 링크에 대한 IP 블록을 선택합니다. 블록에 인터페이스 IP를 할당하고, 기존 시스템에서 IP 전달이 활성화되어 있는지 확인하고, IPtables 규칙이 트래픽 흐름을 허용하는지 확인하고, 새 서브넷에서 외부 호스트로의 트래픽에 대한 SNAT 또는 MASQURADE 규칙을 설정합니다.
    1. 보조 네트워크 네임스페이스에 적절한 기본 게이트웨이를 설정합니다.

(보기 흉한 서식에 대해 죄송합니다. 저보다 마크다운 기술이 더 많으면 자유롭게 수정하세요.)

관련 정보