CLOUD/Docker&Kubernetes

[Docker/Linux] 가상 네트워크 - 브릿지 장비로 통신하기 (도커없이)

alsruds 2023. 4. 20. 17:42

 

● namespace 생성 & 확인

# 생성
ip netns add ns1
ip netns add ns2

# 확인
ip netns list

 

가상의 Bridge 생성

ip link add bridge1 type bridge
ip link add bridge2 type bridge

 

Bridge 확인

# 설치
yum install -y epel-release
yum install -y bridge-utils

# 확인
brctl show

 

가상의 링크 생성

ip link add ns1-veth type veth peer name ns1-veth-br
ip link add ns2-veth type veth peer name ns2-veth-br

 

각 namespace를 링크에 연결

ip link set ns1-veth netns ns1
ip link set ns2-veth netns ns2
ip link set ns1-veth-br master bridge1
ip link set ns2-veth-br master bridge2

 

IP 설정 & 인터페이스 활성화

# IP 설정
ip netns exec ns1 ip addr add 10.10.10.10/24 dev ns1-veth
ip netns exec ns2 ip addr add 20.20.20.20/24 dev ns2-veth
ip addr add 10.10.10.1/24 dev bridge1
ip addr add 20.20.20.1/24 dev bridge2
# bridge & 연결된 namespace : 같은 네트워크 대역으로 맞춰주기

# 인터페이스 활성화
ip link set bridge1 up
ip link set bridge2 up
ip link set ns1-veth-br up
ip link set ns2-veth-br up
ip netns exec ns1 ip link set ns1-veth up
ip netns exec ns2 ip link set ns2-veth up

 

통신 확인

ip netns exec ns1 ping [IP주소] -c 5

 

라우팅 테이블 추가

ip netns exec ns1 ip route add default via 10.10.10.1
ip netns exec ns2 ip route add default via 20.20.20.1

 

● 본인 IP가 아니어도 패킷을 버리지 않도록 설정

sysctl -w net.ipv4.ip_forward=1

 

NAT 설정

iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 20.20.20.0/24 -j MASQUERADE

# 확인
iptables -t nat -L