외부 노드에서 로컬 네트워크 네임스페이스에 액세스하는 방법은 무엇입니까?

외부 노드에서 로컬 네트워크 네임스페이스에 액세스하는 방법은 무엇입니까?

EC2 Ubuntu x86 20.04 노드, 커널 v5.10에서 mongoDB Enterprise Edition v4.4를 실행하는 runc 컨테이너를 설정하려고 합니다. 다음을 사용하여 컨테이너의 네트워크 네임스페이스를 설정했습니다.

sudo brctl addbr runc0
sudo ip link set runc0 up
sudo ip addr add 192.168.10.1/24 dev runc0
sudo ip link add name veth-host type veth peer name veth-guest
sudo ip link set veth-host up
sudo brctl addif runc0 veth-host
sudo ip netns add mongo_enter
sudo ip link set veth-guest netns runc
sudo ip netns exec mongo_enter ip link set veth-guest name eth1
sudo ip netns exec mongo_enter ip addr add 192.168.10.101/24 dev eth1
sudo ip netns exec mongo_enter ip link set eth1 up
sudo ip netns exec mongo_enter ip route add default via 192.168.10.1

내가 원하는 것은 동일한 네트워크에 있을 필요 없이 외부 노드에서 이 네임스페이스에서 실행되는 runc mongo 서버에 액세스하는 것입니다. 네임스페이스 및 브리지에 대해 EC2 인스턴스의 프라이빗 IP와 유사한 IP를 설정하려고 시도했지만 다음 오류가 발생했습니다.

Error: Nexthop has invalid gateway

이것이 네임스페이스를 설정하는 올바른 방법입니까, 아니면 이를 수행하는 또 다른 더 쉽고/올바른/표준 방법이 있습니까?

감사해요.

답변1

그러나 이는 네임스페이스를 설정하는 올바른 방법입니다.

네트워크 네임스페이스는 기본적으로 LAN 케이블(veth pair)로 연결된 다른 컴퓨터처럼 작동하므로 올바른 라우팅을 설정해야 합니다.특히원래 노드와 중간 노드에서.

이는 "동일한 네트워크에 있을 필요는 없는 외부 노드"와 해당 노드와 컨테이너 사이의 모든 것을 제어하는 ​​경우에 작동합니다. 그렇지 않은 경우 컨테이너 네트워크 네임스페이스가 기본 네트워크 네임스페이스와 동일한 IP에서 "외부"에 액세스할 수 있는 척해야 합니다. 즉, 포트 전달을 설정해야 합니다(google, 수많은 튜토리얼이 있습니다).

관련 정보