-
네트워크 네임스페이스를 이용한 브릿지 네트워크와 NAT 구성네트워크 2021. 7. 2. 00:48
이번 포스팅은 ubuntu 18.04에서 다음 네트워크를 구성한다.
간략하게 설명하자면 브릿지를 이용하여 네트워크 네임스페이스를 연결하고 브릿지 네트워크를 구성한다.
이후 네임스페이스에서 외부와의 통신을 위해 NAT를 구성한다.
< 브릿지 네트워크 구성하기 >
먼저 네트워크 네임스페이스를 생성 한다.
ip netns add netns1 ip netns add netns2
brid1와 veth1가 연결된 인터페이스를 생성
brid2와 veth2가 연결된 인터페이스를 생성
ip link add dev brid1 type veth peer name veth1 ip link add dev brid2 type veth peer name veth2
생성한 인터페이스를 네임스페이스에 연결한 후, IP할당, status를 up으로 설정
ip link set dev veth1 netns netns1 ip link set dev veth2 netns netns2 ip netns exec netns1 ip a add 10.0.200.5/24 dev veth1 ip netns exec netns2 ip a add 10.0.200.10/24 dev veth2 ip netns exec netns1 ip link set dev veth1 up ip netns exec netns2 ip link set dev veth2 up
브릿지를 생성한 후, brid 인터페이스를 연결하고 status를 up으로 설정
ip link add br0 type bridge ip link set brid1 master br0 ip link set brid2 master br0 ip link set dev br0 up ip link set dev brid1 up ip link set dev brid2 up
이제 netns1와 netns2 네임 스페이스는 브릿지를 통해 연결되어 있으므로 연결 확인을 위해 ping을 쏴본다.
Ping이 잘 간다.
하지만 default 환경에서 namespace로 쐈을 때는 접속이 되지 않는다.
브릿지에 IP를 할당해주고, 브로드 캐스트 IP를 셋업한다.
ip addr add 10.0.200.1/24 brd 10.0.200.255 dev br0
다시 외부에서 ping을 시도한 결과, 잘 된다.
< NAT 구성을 통한 네트워크 네임스페이스에서 외부 네트워크 접속하기 >
디폴트 목적지는 다른 라우팅 규칙에 해당되지 않는다면 모든 IP에 대한 라우팅 규칙을 처리한다.
로컬에서 외부 인터넷에 접근할 수 있는 이유는 이 디폴트 목적지가 정의되어 있기 때문인데
생성해준 네임스페이스에는 디폴트 목적지에 대한 라우팅 규칙이 없기 때문에 외부로 접근할 수 없다.
접속이 되지 않는 상황
외부 인터넷 접속을 위해 각 네임스페이스 별로 bridge를 통과하게 default 라우팅 규칙을 추가해준다.
ip netns exec netns1 ip route add default via 10.0.200.1 ip netns exec netns2 ip route add default via 10.0.200.1
NAT 셋업을 위해서는 리눅스의 IP 포워드 기능을 활성화하고 iptables에 NAT 규칙을 추가한다.
sysctl -w net.ipv4.ip_forward=1 iptables -t nat -A POSTROUTING -s 10.0.200.0/24 -j MASQUERADE
네임스페이스 내부에서 외부 인터넷으로 잘 통신이 된다.
다음 포스팅을 참고하였습니다.
반응형'네트워크' 카테고리의 다른 글
네트워크 네임스페이스 개념정리 (0) 2021.07.06 네트워크: 무선 및 이동 통신 네트워크(Wireless and mobile network) 공부하기! (0) 2020.11.19 네트워크: Link layer 정리 (Multiple Access Protocol, LAN, ARP) (0) 2020.11.14 네트워크: Network Layer 정리4 (AS routing, OSPF, SDN, ICMP) (0) 2020.11.01 네트워크: Network layer 정리3(routing algorithm, link state, distance vector) (0) 2020.10.30