Network 네임스페이스 실습
새로운 Network 네임스페이스 생성 후 생성된 네임스페이스 간의 네트워크 연결 확인
(Docker의 Bridge 드라이버 형태)
리눅스의 가상 네트워크 인터페이스
- Bridge: 네트워크 스위치와 같은 역할. 연결된 인터페이스로 패킷을 전달함.
$ ip link add 이름 type bridge
- VETH (Virtual Ethernet): 로컬 이더넷 터널. 네트워크 네임스페이스 간 연결을 가능하게 함. 항상 페어로 구성됨
$ ip link add 이름1 type veth peer name 이름2
1. sudo su 명령어로 루트 계정으로 전환한다.
2. ip 명령어로 ip와 관련된 많은 작업을 수행할 수 있다.
ip netns add [네트워크 네임스페이스 이름] 명령어로 새로운 네트워크 네임스페이스를 생성한다.
3. ip link 명령어를 입력하면 루트 네트워크 네임스페이스의 인터페이스 정보가 나온다.
ns0와 ns1의 인터페이스 정보를 보고 싶다면 ip netns exec ns0 ip link 명령어와 ip netns exec ns1 ip link 명령어를
입력해야 한다.
ns0와 ns1에 loopback 디바이스가 설치된 걸 볼 수 있다.
4. ip netns exec [ns0 | ns1] ip link set lo up 명령어로 ns0와 ns1의 인터페이스를 모두 구동하도록 세팅한다.
5. ip link show type bridge 명령어로 브릿지 정보를 확인한다.
6. ip link add br0 type bridge 명령어로 호스트에 새로운 브릿지 네트워크 인터페이스 생성하고
ip link set br0 명령어로 브릿지를 구동시킨다.
7. ip addr add 192.168.2.1/24 dev br0 명령어로 브릿지 네트워크에 IP를 설정한다.
그리고 ip addr 명령어로 ip가 잘 할당됐는지 확인한다.
8. ping -c 2 192.168.2.1 명령어로 핑을 두번 날려본다.
9. ip link add [veth0 | veth1] type veth peer name [ceth0 | ceth1] 명령어로 veth*, ceth*를 위한 veth 페어를 생성한다.
10. ip link set [veth0 | veth1] master br0 명령어로 veth0와 veth1을 br0에 연결하고
ip link set [veth0 | veth1] up 명령어로 veth0와 veth1을 시작한다.
11. ip link set [ceth0 | ceth1] netns [ns0 | ns1] 명령어로 ceth*를 ns* 네임스페이스에 연결하고
ip netns exec [ns0 | ns1] ip link set [ceth0 | ceth1] up 명령어로 ceth*를 시작한다.
12. ip netns exec [ns0 | ns1] ip addr add 192.168.2.2/24 dev [ceth0 | ceth1] 명령어로
ns*의 ceth* 인터페이스에 IP를 할당하고
ip netns exec ns1 ip addr 명령어로 ns1의 네트워크 인터페이스를 확인한다.
13. ip netns exec ns0 ping -c 2 192.168.2.3 명령어로 ns0에서 ns1로 연결한다.
'리눅스 > Part1. Ch02. 컨테이너를 구성하는 리눅스 기술' 카테고리의 다른 글
13. union mount filesystem의 이해 (0) | 2022.12.02 |
---|---|
11. (실습) namespace - Pid 네임스페이스 (0) | 2022.12.02 |
10. (실습) namespace - Mount 네임스페이스 (0) | 2022.06.25 |
09. namespace의 이해 (0) | 2022.06.24 |
08. (실습) cgroup으로 fork bomb 막아보기 (0) | 2022.06.23 |