SlideShare a Scribd company logo
1 of 70
Download to read offline
도커 없이 컨테이너 만들기
6편
Sam.0
실습과 함께 완성해보는
시작하기에 앞서 …
본 컨텐츠는 앞편을 보았다고 가정하고 준비되었습니다.
원활한 이해 및 실습을 위하여 앞편을 먼저 보시기를 추천드립니다
네트워크 네임스페이스 3,4편에 기초하여 준비되었습니다.
3편 링크 클릭 4편 링크 클릭
# sudo -Es
실습 계정 (root)
# cd /vagrant
실습 폴더
vagrant + virtual vm
ubuntu 18.04, docker (Vagrantfile)
- ubuntu1804 (기존)
- ubuntu1804-2 (추가)
실습환경
설치 환경
# apt-get -y install python-pip > /dev/null 2>&1
# pip install pyroute2
실습환경 구성 링크
Network namespace
호스트 안의 가상 네트워크
eth0
Host
routes
iptables
lo
eth0
Container 11.11.11.2
routes
iptables
lo
arp table
bridge fdb
arp table
bridge fdb
eth0
Container 11.11.11.3
routes
iptables
lo
arp table
bridge fdb
eth0
veth0
Host
veth pair
RED BLUE
veth1
11.11.11.2/24 11.11.11.3/24
네임스페이스 간 1:1 통신
reth0
Host
RED BLUE
reth1
beth0
beth1
arp, fdb정보를 이용하여 통신하고 iptables rule에 따라 전송여부 결정
eth0
Bridge 통신
bridge
fdb
route
table
iptables
arp
table
bridge
fdb
arp
table
route
table
iptables
bridge
fdb
arp
table
route
table
iptables
11.11.11.2/24 11.11.11.3/24
d2:e5:f4:1c:d6:93 3a:c6:51:d6:08:40
br0
eth0
reth0
Host
RED BLUE
beth0
beth1
인터넷
reth1
외부 네트워크 통신
bridge
fdb
route
table
iptables
arp
table
bridge
fdb
arp
table
route
table
iptables
bridge
fdb
arp
table
route
table
iptables
br0
default route 설정 iptables nat, forward 설정
Overlay Network
호스트 간의 가상 네트워크
eth0
Host
routes
iptables
lo
eth0
Container 11.11.11.2
routes
iptables
lo
arp table
bridge fdb
arp table
bridge fdb
eth0
Container 11.11.11.3
routes
iptables
lo
arp table
bridge fdb
서버 간에도 (가상의) 네트워크 네임스페이스 통신이 가능할까요?
11.11.11.2 11.11.11.4
PING 11.11.11.2 → 11.11.11.4
eth0
geth0
Host
GREEN ORANGE
oeth0
oeth1
geth1
bridge
fdb
route
table
iptables
arp
table
bridge
fdb
arp
table
route
table
iptables
bridge
fdb
arp
table
route
table
iptables
br0
11.11.11.4
192.168.104.3
11.11.11.2
192.168.104.2
eth0
reth0
Host
RED BLUE
beth0
beth1
reth1
bridge
fdb
route
table
iptables
arp
table
bridge
fdb
arp
table
route
table
iptables
bridge
fdb
arp
table
route
table
iptables
br0
PING 11.11.11.2 → 11.11.11.4
eth0
geth0
Host
GREEN ORANGE
oeth0
oeth1
geth1
bridge
fdb
route
table
iptables
arp
table
bridge
fdb
arp
table
route
table
iptables
bridge
fdb
arp
table
route
table
iptables
br0
11.11.11.2 11.11.11.4
192.168.104.2 192.168.104.3
eth0
reth0
Host
RED BLUE
beth0
beth1
reth1
bridge
fdb
route
table
iptables
arp
table
bridge
fdb
arp
table
route
table
iptables
bridge
fdb
arp
table
route
table
iptables
br0
Bridge
1 2
PC1 PC2
PC3 PC4
PC5 PC6
PC7 PC8
PC1(MAC)
PC2(MAC)
PC3(MAC)
PC4(MAC)
PC5(MAC)
PC6(MAC)
PC7(MAC)
PC8(MAC)
세그먼트1 세그먼트2
서버는 포트에 연결되고 포트별로 어떤 세그먼트에 속하는지 관리
bridge
11.11.11.2
11.11.11.4 ?
ARP broadcasting .. looking for 11.11.11.4
11.11.11.2
192.168.104.2
eth0
reth0
Host
RED BLUE
beth0
beth1
reth1
bridge
fdb
route
table
iptables
arp
table
bridge
fdb
arp
table
route
table
iptables
bridge
fdb
arp
table
route
table
iptables
br0
eth0
geth0
Host
GREEN ORANGE
oeth0
oeth1
geth1
bridge
fdb
route
table
iptables
arp
table
bridge
fdb
arp
table
route
table
iptables
bridge
fdb
arp
table
route
table
iptables
br0
11.11.11.4
192.168.104.3
PING 11.11.11.2 → 11.11.11.4
R
같은 동네
구나
11.11.11.4 ~
분명 같은 동네 (11.11.11.0/24) 인데 ?
라우트 테이블을 보면 …
# ip route
같은동네 (LAN)
같은 동네 (LAN) ?
연결
- LAN : Local Area Network (브로드캐스트 도메인)
- WAN : Wide Area Network (라우터로 구분되는 네트워크)
Sam~
Me !
다른 동네 (WAN)
R
Sam~
I know ...
!
!
R
VLAN
Virtual Local Area Network
Real Network
has 11.11.11.2 has 11.11.11.4
11.11.11.4 ~ I’m here !
가상의 Local Area Network 가 가능하다면 ?
오버레이 네트워크
Overlay Network
Underlay Network
오버레이 네트워크
Underlay Network
하부 네트워크 구조가 어찌됐건 “동일한 네트워크 구성을 유지"
Overlay Network
VLAN
VLAN (Virtual LAN) 오버레이 네트워크 구현 기술 중 하나 …
GRE tunnel, MPLS, VPN , …
VxLAN
Virtual eXtensible LAN
- VLAN ID (12bit) 4,096개 제약 → ID(24bit) 2^24 개 (16,777,216)
- L2 over L3 : UDP 패킷 내부에 L2 프레임을 캡슐화하는 터널링 기술
- VTEP (Vxlan Tunnel End Point) : 종단역할. encapsulation / termination
https://atthis.tistory.com/7?category=750237
Network Stack
- 캡슐화 : Layer 구분 / Layer간 통신
캡슐화
터널링
터널링의 구성요소 :
- 승객 Passenger Protocol : 캡슐화 대상 프로토콜
- 전달 Carrier Protocol : 캡슐화 시킬 프로토콜
- 전송 Transport Protocol : 전달 프로토콜을 끌고 갈 프로토콜
MAC-in-UDP VXLAN L2 정보 (MAC address)를 L3에 넣어서 통신
VXLAN Packet Size : 50 Bytes (14 + 20 + 8 + 8)
MTU Maximum frame or packet size for a particular network medium. Typically 1500 bytes for
Ethernet networks
VXLAN 사용 시 MTU 는 1450 (1500-50) 으로 설정 한다.
* VXLAN Packet Size : 50 Bytes (14 + 20 + 8 + 8)
* 왜 50을 빼냐고요? (바로 앞 장의 그림을 다시 한번 봐주세용~)
물리 네트워크 통신의 decapsulation 과정에서 50 bytes 가 사용되었고
VXLAN이 가상 네트워크 통신을 위한 나머지 1450 bytes를 전달하게 됩니다.
50 bytes 1450 bytes
eth1
192.168.104.2
pinkns
12.12.12.2
02:42:c0:a8:00:02
오늘 그릴 그림
overns
eth0
veth1
br0
vxlan1
eth1
pinkns
12.12.12.3
02:42:c0:a8:00:03
192.168.104.3
overns
eth0
veth1
br0
vxlan1
(실습1) 오버레이
네트워크
(실습1) 오버레이
네트워크
eth1
pinkns
overns pinkns
overns
eth1
192.168.104.2 192.168.104.3
# ip netns add overns
# ip netns add pinkns
터미널 #1
(192.168.104.2)
+ 터미널 #2 (192.168.104.3)
네트워크 네임스페이스 생성
(실습1) 오버레이
네트워크
eth1
pinkns
overns pinkns
overns
eth1
192.168.104.2
# ip link add dev veth1 mtu 1450 netns overns type veth peer name eth0 mtu 1450 netns pinkns
192.168.104.3
eth0
veth1 eth0
veth1
터미널 #1
(192.168.104.2)
+ 터미널 #2 (192.168.104.3)
네트워크 네임스페이스로 veth pair 이동
(실습1) 오버레이
네트워크
eth1
pinkns
overns pinkns
overns
eth1
192.168.104.2 192.168.104.3
12.12.12.2/24
02:42:c0:a8:00:02
# ip netns exec pinkns ip link set dev eth0 address <MAC ADDRESS - 02:42:c0:a8:00:0?>
# ip netns exec pinkns ip addr add dev eth0 <IP/CIDR - 12.12.12.?/24>
eth0
12.12.12.3/24
02:42:c0:a8:00:03
veth1 eth0
veth1
? : 각 창에 알맞은 숫자로 넣어주세요
터미널 #1
(192.168.104.2)
+ 터미널 #2 (192.168.104.3)
veth pair 에 MAC / IP address 설정
(실습1) 오버레이
네트워크
eth1
pinkns
overns pinkns
overns
eth1
192.168.104.2 192.168.104.3
# ip netns exec overns ip link add dev br0 type bridge
# ip netns exec overns ip addr add dev br0 12.12.12.1/24
eth0
veth1 eth0
veth1
12.12.12.2/24
02:42:c0:a8:00:02
12.12.12.3/24
02:42:c0:a8:00:03
터미널 #1
(192.168.104.2)
+ 터미널 #2 (192.168.104.3)
br0 br0
bridge (br0) 추가 및 설정
12.12.12.1/24 12.12.12.1/24
(실습1) 오버레이
네트워크
eth1
pinkns
overns pinkns
overns
eth1
192.168.104.2 192.168.104.3
# ip link add dev vxlan1 netns overns type vxlan id 42 proxy learning dstport 4789
eth0
veth1 eth0
veth1
12.12.12.2/24
02:42:c0:a8:00:02
12.12.12.3/24
02:42:c0:a8:00:03
터미널 #1
(192.168.104.2)
+ 터미널 #2 (192.168.104.3)
br0 br0
vxlan 생성 및 설정
vxlan1 vxlan1
(실습1) 오버레이
네트워크
# ip link add dev vxlan1 netns overns type vxlan id 42 proxy learning dstport 4789
id 42 ~ VNI . vxlan endpoint 식별
proxy ~ vxlan 이 arp 쿼리에 응답하도록 허용
learning ~ bridge fdb entry 자동 갱신 허용
dstport 4789 ~ UDP port for 터널링
vxlan 생성 및 설정
(실습1) 오버레이
네트워크
eth1
pinkns
overns pinkns
overns
eth1
192.168.104.2 192.168.104.3
# ip netns exec overns ip link set veth1 master br0
# ip netns exec overns ip link set vxlan1 master br0
eth0
veth1 eth0
veth1
12.12.12.2/24
02:42:c0:a8:00:02
12.12.12.3/24
02:42:c0:a8:00:03
터미널 #1
(192.168.104.2)
+ 터미널 #2 (192.168.104.3)
br0 br0
vxlan1 vxlan1
veth1, vxlan1을 br0에 연결
(실습1) 오버레이
네트워크
eth1
pinkns
overns pinkns
overns
eth1
192.168.104.2 192.168.104.3
# ip netns exec overns ip link set br0 up
# ip netns exec overns ip link set vxlan1 up
# ip netns exec overns ip link set veth1 up
# ip netns exec pinkns ip link set eth0 up
eth0
veth1 eth0
veth1
12.12.12.2/24
02:42:c0:a8:00:02
12.12.12.3/24
02:42:c0:a8:00:03
터미널 #1
(192.168.104.2)
+ 터미널 #2 (192.168.104.3)
br0 br0
vxlan1 vxlan1
각 virtual interface 의 전원 On ~
(실습1) 오버레이
네트워크
eth1
pinkns (터미널#1)
overns (터미널#3) pinkns
overns
eth1
192.168.104.2 192.168.104.3
# nsenter --net=/var/run/netns/pinkns
eth0
veth1 eth0
veth1
12.12.12.2/24
02:42:c0:a8:00:02
12.12.12.3/24
02:42:c0:a8:00:03
터미널 #1
(192.168.104.2)
터미널 #2 (192.168.104.3)
br0 br0
vxlan1 vxlan1
# tcpdump -i eth1
생성한 네트워크 네임스페이스에 들어가 봅시다
# nsenter --net=/var/run/netns/overns
터미널 #3 (192.168.104.2)
하나 더
12.12.12.2/24
02:42:c0:a8:00:02
(실습1) 오버레이
네트워크
eth1
pinkns
overns pinkns
overns
eth1
192.168.104.2 192.168.104.3
# ping 12.12.12.3
eth0
veth1 eth0
veth1
12.12.12.3/24
02:42:c0:a8:00:03
터미널 #1 (pinkns@192.168.104.2) 터미널 #2 (192.168.104.3)
br0 br0
vxlan1 vxlan1
# tcpdump -i eth1
Ping 12.12.12.2 → 12.12.12.3
# tcpdump -i br0
터미널 #3 (overns@192.168.104.2)
?
12.12.12.2/24
02:42:c0:a8:00:02
(실습1) 오버레이
네트워크
eth1
pinkns
overns pinkns
overns
eth1
192.168.104.2 192.168.104.3
# ping 12.12.12.3
eth0
veth1 eth0
veth1
12.12.12.3/24
02:42:c0:a8:00:03
터미널 #1 (pinkns@192.168.104.2) 터미널 #2 (192.168.104.3)
br0 br0
vxlan1 vxlan1
12.12.12.3의 MAC주소가 뭐에요?
# tcpdump -i br0
ARP, Request who-has 12.12.12.3 tell 12.12.12.2, length 28
터미널 #3 (overns@192.168.104.2)
# tcpdump -i eth1
12.12.12.3/24
02:42:c0:a8:00:03
?
12.12.12.2/24
02:42:c0:a8:00:02
(실습1) 오버레이
네트워크
eth1
pinkns
overns pinkns
overns
eth1
192.168.104.2 192.168.104.3
eth0
veth1 veth1
br0 br0
vxlan1 vxlan1
eth0
12.12.12.3의 MAC주소가 뭐에요?
12.12.12.3은 응답할 수가 없습니다. R
동네 배송은 취급 안함
12.12.12.3
12.12.12.3/24
02:42:c0:a8:00:03
?
12.12.12.2/24
02:42:c0:a8:00:02
(실습1) 오버레이
네트워크
eth1
pinkns
overns pinkns
overns
eth1
192.168.104.2 192.168.104.3
eth0
veth1 veth1
br0 br0
vxlan1 vxlan1
eth0
12.12.12.3의 MAC주소가 뭐에요?
혹시 ...
퀵
부르셨나용 ?
12.12.12.3
vxlan
12.12.12.3은 누가 전달해 줄 수 있을까요?
12.12.12.3/24
02:42:c0:a8:00:03
12.12.12.2/24
02:42:c0:a8:00:02
(실습1) 오버레이
네트워크
eth1
pinkns
overns pinkns
overns
eth1
192.168.104.2 192.168.104.3
eth0
veth1 veth1
br0 br0
vxlan1 vxlan1
eth0
12.12.12.3의 MAC주소가 뭐에요?
# ip neigh show
# ip neigh add 12.12.12.3 lladdr 02:42:c0:a8:00:03 dev vxlan1
# ip neigh show
12.12.12.3 dev vxlan1 lladdr 02:42:c0:a8:00:03 PERMANENT
H스퀘.. N9
.. sam.0 ...
vxlan
판교 H스퀘어 N동
N9 AB-TF sam.0 이요
핸펀은 010-XXX-XXXX
터미널 #3 (overns@192.168.104.2)
(실습1) 오버레이
네트워크
12.12.12.3의 MAC주소가 뭐에요?
# ip neigh add 12.12.12.3 lladdr 02:42:c0:a8:00:03 dev vxlan1
12.12.12.3 dev vxlan1 lladdr 02:42:c0:a8:00:03 PERMANENT
H스퀘.. N9
.. sam.0 ...
vxlan
판교 H스퀘어 N동
N9 AB-TF sam.0 이요
핸펀은 010-XXX-XXXX
목적지 IP 주소 목적지 MAC
주소
전송을 담당할
디바이스
arp table에 기록
lladdr? L2 주소 영구 사용
arp 상태 참고 : https://ebt-forti.tistory.com/m/145?category=849281
조회
ARP
12.12.12.2/24
02:42:c0:a8:00:02
(실습1) 오버레이
네트워크
eth1
pinkns
overns pinkns
overns
eth1
192.168.104.2 192.168.104.3
# ping 12.12.12.3
eth0
veth1 eth0
veth1
12.12.12.3/24
02:42:c0:a8:00:03
터미널 #1 (pinkns@192.168.104.2) 터미널 #2 (192.168.104.3)
br0 br0
vxlan1 vxlan1
12.12.12.3의 MAC주소가 뭐에요?
# tcpdump -i br0
. . .
ARP, Reply 12.12.12.3 is-at 02:42:c0:a8:00:03 (oui Unknown),
length 28
터미널 #3 (overns@192.168.104.2)
# tcpdump -i eth1
ARP
12.12.12.2/24
02:42:c0:a8:00:02
(실습1) 오버레이
네트워크
eth1
pinkns
overns pinkns
overns
eth1
192.168.104.2 192.168.104.3
# ping 12.12.12.3
eth0
veth1 eth0
veth1
12.12.12.3/24
02:42:c0:a8:00:03
터미널 #1 (pinkns@192.168.104.2) 터미널 #2 (192.168.104.3)
br0 br0
vxlan1 vxlan1
12.12.12.3의 MAC주소가 뭐에요?
# tcpdump -i vxlan1
. . .
ARP, Reply 12.12.12.3 is-at 02:42:c0:a8:00:03 (oui Unknown),
length 28
터미널 #3 (overns@192.168.104.2)
# tcpdump -i eth1
ARP
12.12.12.2/24
02:42:c0:a8:00:02
(실습1) 오버레이
네트워크
eth1
pinkns
overns pinkns
overns
eth1
192.168.104.2 192.168.104.3
# ip neigh show
12.12.12.3 dev eth0 lladdr 02:42:c0:a8:00:03 REACHABLE
eth0
veth1 eth0
veth1
12.12.12.3/24
02:42:c0:a8:00:03
터미널 #1 (pinkns@192.168.104.2) 터미널 #2 (192.168.104.3)
br0 br0
vxlan1 vxlan1
12.12.12.3의 MAC주소가 뭐에요? 02:42:c0:a8:00:03
# tcpdump -i vxlan1
. . .
ARP, Reply 12.12.12.3 is-at 02:42:c0:a8:00:03 (oui Unknown),
length 28
터미널 #3 (overns@192.168.104.2)
# tcpdump -i eth1
ARP
12.12.12.2/24
02:42:c0:a8:00:02
(실습1) 오버레이
네트워크
eth1
pinkns
overns pinkns
overns
eth1
192.168.104.2 192.168.104.3
# ping 12.12.12.3
eth0
veth1 eth0
veth1
12.12.12.3/24
02:42:c0:a8:00:03
터미널 #1 (pinkns@192.168.104.2) 터미널 #2 (192.168.104.3)
br0 br0
vxlan1 vxlan1
# tcpdump -i vxlan1
. . .
IP 12.12.12.2 > 12.12.12.3: ICMP echo request, id 2648, seq
60, length 64
터미널 #3 (overns@192.168.104.2)
# tcpdump -i eth1
Ping 12.12.12.2 → 12.12.12.3 No ICMP reply ?
ARP
ICMP (Internet Control Message Protocol)
IP 동작 진단/제어에 사용되고 오류에 대한 응답을 source IP에 제공
- L3 (Network Layer) 프로토콜
- 인터넷/통신 상황 report , 오류 보고, 위험상황에 대한 경보 등에 사용
- ping : destination host 작동여부 / 응답 시간 측정
- tracert : destination routing 경로 추적
(실습1) 오버레이
네트워크
Ping 12.12.12.2 → 12.12.12.3 No ICMP reply ?
목적지가 로컬?
Y
N
Packet flow
chain
(hook)
} table
iptables
FOWARD : NF_IP_FORWARD (hook)에 등록된 체인
ㄴ NF_IP_FORWARD : incoming 패킷이 다른 호스트로 포워딩되는 경우에 트리거되는 netfilter hook
filter (table) : 패킷을 목적지로 전송 여부를 결정
(실습1) 오버레이
네트워크
Ping 12.12.12.2 → 12.12.12.3 No ICMP reply ?
(실습1) 오버레이
네트워크
Ping 12.12.12.2 → 12.12.12.3 No ICMP reply ?
# iptables -t filter -L | grep policy
Chain INPUT (policy ACCEPT)
Chain FORWARD (policy ACCEPT)
Chain OUTPUT (policy ACCEPT)
터미널 #3 (overns@192.168.104.2)
iptables forward 룰을 확인해 봅니다
Q) 왜 호스트가 아닌 overns의 iptables을 확인하였을까요?
네~ br0가 호스트가 아닌 overns 에 있기 때문입니다.
12.12.12.2/24
02:42:c0:a8:00:02
(실습1) 오버레이
네트워크
eth1
pinkns
overns pinkns
overns
eth1
192.168.104.2 192.168.104.3
# ping 12.12.12.3
eth0
veth1 eth0
veth1
12.12.12.3/24
02:42:c0:a8:00:03
터미널 #1 (pinkns@192.168.104.2) 터미널 #2 (192.168.104.3)
br0 br0
vxlan1 vxlan1
# tcpdump -i vxlan1
. . .
IP 12.12.12.2 > 12.12.12.3: ICMP echo request, id 2648, seq
60, length 64
터미널 #3 (overns@192.168.104.2)
Ping 12.12.12.2 → 12.12.12.3 No Reply ICMP ?
# tcpdump -i eth1
?
ARP
# ip route
12.12.12.0/24 dev br0 proto kernel scope link src 12.12.12.1
# ip neigh show
12.12.12.3 dev vxlan1 lladdr 02:42:c0:a8:00:03 PERMANENT
# bridge fdb show
. . .
02:42:c0:a8:00:03 dev vxlan1 master br0
. . .
터미널 #3 (overns@192.168.104.2)
(실습1) 오버레이
네트워크
route table ~ 12.12.12.0 대역은 br0가 gateway
arp table ~ 12.12.12.3 → 02:42:c0:a8:00:03
bridge fdb ~ 02:42:c0:a8:00:03 → vxlan1가 처리하고 br0에 연결돼 있다는 정보
뭔가 정보가 부족한가 봅니다
vxlan1
12.12.12.3 → 02:42:C0:a8:00:03
so … how to deliver ?
Ping 12.12.12.2 → 12.12.12.3 No Reply ICMP ?
# bridge fdb add 02:42:c0:a8:00:03 dev vxlan1 self dst 192.168.104.3 vni 42 port 4789
# bridge fdb show | grep 02:42:c0:a8:00:03
02:42:c0:a8:00:03 dev vxlan1 dst 192.168.104.3 link-netnsid 0 self permanent
터미널 #3 (overns@192.168.104.2)
판교역 앞
마을버스 1번 ..
H스퀘어
건너편 하차 ..
vxlan
판교역에서 마을버스
1번을 타고
H스퀘어 건너편에서
내리면 돼요
(실습1) 오버레이
네트워크
Ping 12.12.12.2 → 12.12.12.3 No Reply ICMP ?
vxlan 에게 정확한 길을 상세히 알려 줍시다
실제 목적지의
물리 IP 주소
VTEP ID
패킷을 수령할
엔드포인트
실제 목적지의
물리 port
FDB
“02:42:c0:a8:00:03은 가상의 MAC address로
vxlan이 잘 포장해서 퀵으로 보내야 하므로
MAC주소를 처리할 수신처(호스트) IP를 적어주어야 합니다. “
192.168.104.2
# bridge fdb add 02:42:c0:a8:00:03 dev vxlan1 self dst 192.168.104.3 vni 42 port 4789
. . .
02:42:c0:a8:00:03 dev vxlan1 dst 192.168.104.3 link-netnsid 0 self permanent
터미널 #3 (overns@192.168.104.2)
(실습1) 오버레이
네트워크
Ping 12.12.12.2 → 12.12.12.3 No Reply ICMP ?
pinkns
vxlan 에게 정확한 길을 상세히 알려 줍시다
12.12.12.3/24
02:42:c0:a8:00:03
12.12.12.2/24
02:42:c0:a8:00:02
eth1
pinkns
overns overns
192.168.104.3
eth0
veth1 veth1
br0 br0
vxlan1
(vni 42)
eth0
eth1
vxlan1
FDB
FDB
ARP
12.12.12.2/24
02:42:c0:a8:00:02
(실습1) 오버레이
네트워크
eth1
pinkns
overns pinkns
overns
eth1
192.168.104.2 192.168.104.3
# ping 12.12.12.3
eth0
veth1 eth0
veth1
12.12.12.3/24
02:42:c0:a8:00:03
터미널 #1 (pinkns@192.168.104.2) 터미널 #2 (192.168.104.3)
br0 br0
vxlan1 vxlan1
# tcpdump -i vxlan1
. . .
IP 12.12.12.2 > 12.12.12.3: ICMP echo request, id 2648, seq
60, length 64
터미널 #3 (overns@192.168.104.2)
Ping 12.12.12.2 → 12.12.12.3 오.. 터미널#2에 패킷이 보입니다
# tcpdump -i eth1
. . .
IP 192.168.104.2.39783 > ubuntu1804-2.4789: VXLAN, flags [I] (0x08), vni 42
IP 12.12.12.2 > 12.12.12.3: ICMP echo request, id 2815, seq 3082, length 64
. . .
FDB
ARP
12.12.12.2/24
02:42:c0:a8:00:02
(실습1) 오버레이
네트워크
eth1
pinkns
overns pinkns
overns
eth1
192.168.104.2 192.168.104.3
# ping 12.12.12.3
eth0
veth1 eth0
veth1
12.12.12.3/24
02:42:c0:a8:00:03
터미널 #1 (pinkns@192.168.104.2) 터미널 #2 (192.168.104.3)
br0 br0
vxlan1 vxlan1
# tcpdump -i vxlan1
. . .
IP 12.12.12.2 > 12.12.12.3: ICMP echo request, id 2648, seq
60, length 64
터미널 #3 (overns@192.168.104.2)
Ping 12.12.12.2 → 12.12.12.3 But … No ICMP reply ...
# tcpdump -i eth1
. . .
IP 192.168.104.2.39783 > ubuntu1804-2.4789: VXLAN, flags [I] (0x08), vni 42
IP 12.12.12.2 > 12.12.12.3: ICMP echo request, id 2815, seq 3082, length 64
. . .
?
FDB
ARP
Ping 12.12.12.2 → 12.12.12.3 자 .. 이제 192.168.104.3 을 들여다 볼
차례입니다
# nsenter --net=/var/run/nents/overns
터미널 #2 (192.168.104.3)
터미널 #2의 overns 로 nsenter 합니다.
(실습1) 오버레이
네트워크
12.12.12.2/24
02:42:c0:a8:00:02
(실습1) 오버레이
네트워크
eth1
pinkns
overns pinkns
overns (터미널#2)
eth1
192.168.104.2 192.168.104.3
# ping 12.12.12.3
eth0
veth1 eth0
veth1
12.12.12.3/24
02:42:c0:a8:00:03
터미널 #1 (pinkns@192.168.104.2) 터미널 #2 (overns@192.168.104.3)
br0 br0
vxlan1 vxlan1
# tcpdump -i vxlan1
. . .
IP 12.12.12.2 > 12.12.12.3: ICMP echo request, id 2648, seq
60, length 64
터미널 #3 (overns@192.168.104.2)
Ping 12.12.12.2 → 12.12.12.3 “감” 오시나요 ?
# tcpdump -i vxlan1
…
IP 12.12.12.2 > 12.12.12.3: ICMP echo request, id 2833, seq 288, length 64
ARP, Request who-has 12.12.12.2 tell 12.12.12.3, length 28
…
FDB
ARP
터미널 #2 (overns@192.168.104.3)
# tcpdump -i vxlan1
…
IP 12.12.12.2 > 12.12.12.3: ICMP echo request, id 2833, seq 288, length 64
ARP, Request who-has 12.12.12.2 tell 12.12.12.3, length 28
…
(실습1) 오버레이
네트워크
Ping 12.12.12.2 → 12.12.12.3 “감” 오시나요 ?
# ip neigh show
# bridge fdb
02:42:c0:a8:00:02 dev vxlan1 dst 192.168.104.2 link-netnsid 0 self
# ip route
12.12.12.0/24 dev br0 proto kernel scope link src 12.12.12.1
ARP 없고
터미널 #2 (overns@192.168.104.3)
(실습1) 오버레이
네트워크
Ping 12.12.12.2 → 12.12.12.3 “감” 오시나요 ?
FDB 는 있고
터미널 #2 (overns@192.168.104.3)
# ip neigh add 12.12.12.2 lladdr 02:42:c0:a8:00:02 dev vxlan1
(실습1) 오버레이
네트워크
Ping 12.12.12.2 → 12.12.12.3 “감” 오시나요 ?
(실습1) 오버레이
네트워크
12.12.12.2의 MAC주소가 뭐에요?
# ip neigh add 12.12.12.2 lladdr 02:42:c0:a8:00:02 dev vxlan1
12.12.12.2 dev vxlan1 lladdr 02:42:c0:a8:00:02 PERMANENT
현백 .. 9F
.. lynn.h ...
vxlan
판교 현대백화점 9F
lynn.h 이요
핸펀 010-OOO-XXXX
목적지 IP 주소 목적지 MAC
주소
전송을 담당할
디바이스
arp table에 기록
lladdr? L2 주소 영구 사용
조회
ARP
12.12.12.2/24
02:42:c0:a8:00:02
(실습1) 오버레이
네트워크
eth1
pinkns
overns pinkns
overns
eth1
192.168.104.2 192.168.104.3
# ping 12.12.12.3
64 bytes from 12.12.12.3: icmp_seq=1 ttl=64 time=0.549 ms
eth0
veth1 eth0
veth1
12.12.12.3/24
02:42:c0:a8:00:03
터미널 #1 (pinkns@192.168.104.2) 터미널 #2 (overns@192.168.104.3)
br0 br0
vxlan1 vxlan1
# tcpdump -i vxlan1
IP 12.12.12.2 > 12.12.12.3: ICMP echo request, id 2933, seq 3315 ...
IP 12.12.12.3 > 12.12.12.2: ICMP echo reply, id 2933, seq 3315 ...
터미널 #3 (overns@192.168.104.2)
Ping 12.12.12.2 → 12.12.12.3 성공 ~
# tcpdump -i vxlan1
…
IP 12.12.12.2 > 12.12.12.3: ICMP echo request, id 2933, seq 288, length 64
IP 12.12.12.3 > 12.12.12.2: ICMP echo reply, id 2933, seq 288, length 64
ARP, Request who-has 12.12.12.2 tell 12.12.12.3, length 28
ARP, Reply 12.12.12.2 is-at 02:42:c0:a8:00:02 (oui Unknown), length 28
…
FDB
ARP
FDB
ARP
101100010001000100010001000111001111111001111111000111111100
vxlan1 vxlan1
Overlay Network 열일해준 vxlan 에게 박수 ~ 👏👏👏
Overlay Network
Virtual Local Area Network
12.12.12.3 ~ I’m here !
그런데 말입니다 ...
bridge FDB는 어떻게 입력이 되었을까요?
12.12.12.2/24
02:42:c0:a8:00:02
eth1
pinkns
overns pinkns
overns
eth1
192.168.104.2 192.168.104.3
eth0
veth1 eth0
FDB
veth1
ARP
12.12.12.3/24
02:42:c0:a8:00:03
br0 br0
vxlan1 vxlan1
ARP
직접입력
누가입력?
FDB
그런데 말입니다 ...
12.12.12.2/24
02:42:c0:a8:00:02
eth1
pinkns
overns pinkns
overns
eth1
192.168.104.2 192.168.104.3
eth0
veth1 eth0
FDB
veth1
ARP
12.12.12.3/24
02:42:c0:a8:00:03
br0 br0
vxlan1 vxlan1
ARP
직접입력
누가입력?
bridge FDB는 어떻게 입력이 되었을까요?
# ip link add dev vxlan1 type vxlan id 42 proxy learning dstport 4789
vxlan 디바이스 생성 시에 learning 옵션을 켜주었습니다
FDB
→ 커널이 요청 패킷을 검사하여 bridge fdb에 기록해 줍니다.
(지난 시간에 배운 bridge의 기능 중 포트별 MAC 주소를 기억하는 learning 이 있었죠 )
그런데 말입니다 ...
# 수동 입력
02:42:c0:a8:00:03 dev vxlan1 dst 192.168.104.3 link-netnsid 0 self permanent
# 자동 입력
02:42:c0:a8:00:02 dev vxlan1 dst 192.168.104.2 link-netnsid 0 self
Aging 에 의해서 일정시간이 지나면 삭제됨
→ 지난 시간에 배운 … bridge는 aging 기능이 있고 TTL은 보통 300초
그런데 말입니다 ...
02:42:c0:a8:00:02 dev vxlan1 dst 192.168.104.2 link-netnsid 0 self
aging ? fdb에서 삭제되면 … 통신이 ???
��
네.. 12.12.12.3 → 12.12.12.2 으로의 통신은 되지 않습니다.
12.12.12.2 로 부터 통신이 있지 않으면 bridge fdb entry가 갱신이 되지 않기
때문이죠
bridge fdb 에서 02:42:c0:a8:00:02 를 지우고 ping 12.12.12.2 를 해보세요
# bridge fdb del 02:42:c0:a8:00:02 dev vxlan1 dst 192.168.104.2
# ping 12.12.12.2
. . .
--- 12.12.12.2 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1019ms
터미널 #2 (overns@192.168.104.3)
bridge fdb가 지워지면 통신이 되지 않습니다.
직접 fdb를 삭제 하긴 했습니다만.. 일정시간이 지나면 aging에 의하여 실제 fdb가 삭제됩니다
# bridge fdb replace 02:42:c0:a8:00:02 dev vxlan1 self dst 192.168.104.2 vni 42 port 4789
# bridge fdb show | grep 02:42:c0:a8:00:02
02:42:c0:a8:00:02 dev vxlan1 dst 192.168.104.2 link-netnsid 0 self permanent
터미널 #2 (overns@192.168.104.3)
(실습1) 오버레이
네트워크
192.168.104.3에서도 bridge fdb에 등록해 주세요
FDB
실제 목적지의
물리 IP 주소
VTEP ID
패킷을 수령할
엔드포인트
실제 목적지의
물리 port
## 이미 learning된 정보가 있으면 add는 실패하므로 replace 사용하였습니다
12.12.12.2/24
02:42:c0:a8:00:02
(실습1) 오버레이
네트워크
eth1
pinkns
overns pinkns
overns
eth1
192.168.104.2 192.168.104.3
eth0
veth1 eth0
veth1
12.12.12.3/24
02:42:c0:a8:00:03
터미널 #2 (pinkns@192.168.104.3)
br0 br0
vxlan1 vxlan1
Ping 12.12.12.3 → 12.12.12.2 성공 ~
# ping 12.12.12.3 → 12.12.12.2
…
IP 12.12.12.3 > 12.12.12.2: ICMP echo request, id 3933, seq 288, length 64
IP 12.12.12.2 > 12.12.12.3: ICMP echo reply, id 3933, seq 288, length 64
…
FDB
ARP
FDB
ARP
(실습1) 오버레이
네트워크
그림 완성
eth1
192.168.104.2
pinkns
12.12.12.2
02:42:c0:a8:00:02
overns
eth0
veth1
br0
vxlan1
eth1
pinkns
12.12.12.3
02:42:c0:a8:00:03
192.168.104.3
overns
eth0
veth1
br0
vxlan1
FDB
ARP
FDB
ARP
END
목차 보기

More Related Content

What's hot

Introduction to Linux
Introduction to Linux Introduction to Linux
Introduction to Linux Harish R
 
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt projectPorting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt projectMacpaul Lin
 
Janus/SIP @ OpenSIPS 2019
Janus/SIP @ OpenSIPS 2019Janus/SIP @ OpenSIPS 2019
Janus/SIP @ OpenSIPS 2019Lorenzo Miniero
 
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3Ji-Woong Choi
 
LUA를 이용한 스마트한 웹서버 만들기 (Ray. Lee)
LUA를 이용한 스마트한 웹서버 만들기 (Ray. Lee)LUA를 이용한 스마트한 웹서버 만들기 (Ray. Lee)
LUA를 이용한 스마트한 웹서버 만들기 (Ray. Lee)삵 (sarc.io)
 
The Yocto Project
The Yocto ProjectThe Yocto Project
The Yocto Projectrossburton
 
Docker (Compose) 활용 - 개발 환경 구성하기
Docker (Compose) 활용 - 개발 환경 구성하기Docker (Compose) 활용 - 개발 환경 구성하기
Docker (Compose) 활용 - 개발 환경 구성하기raccoony
 
Docker로 서버 개발 편하게 하기
Docker로 서버 개발 편하게 하기Docker로 서버 개발 편하게 하기
Docker로 서버 개발 편하게 하기Dronix
 
Docker - un outil pour faciliter le développement et le déploiement informatique
Docker - un outil pour faciliter le développement et le déploiement informatiqueDocker - un outil pour faciliter le développement et le déploiement informatique
Docker - un outil pour faciliter le développement et le déploiement informatiquesdenier
 
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!pyrasis
 
Arm device tree and linux device drivers
Arm device tree and linux device driversArm device tree and linux device drivers
Arm device tree and linux device driversHoucheng Lin
 
왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법GeunCheolYeom
 
Kubernetes in Docker
Kubernetes in DockerKubernetes in Docker
Kubernetes in DockerDocker, Inc.
 
Everything you want to know about Ingress
Everything you want to know about IngressEverything you want to know about Ingress
Everything you want to know about IngressJanakiram MSV
 
Getting started with Docker
Getting started with DockerGetting started with Docker
Getting started with DockerRavindu Fernando
 
Linux Kernel Programming
Linux Kernel ProgrammingLinux Kernel Programming
Linux Kernel ProgrammingNalin Sharma
 

What's hot (20)

Introduction to Linux
Introduction to Linux Introduction to Linux
Introduction to Linux
 
Jenkins with SonarQube
Jenkins with SonarQubeJenkins with SonarQube
Jenkins with SonarQube
 
Porting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt projectPorting a new architecture (NDS32) to open wrt project
Porting a new architecture (NDS32) to open wrt project
 
Janus/SIP @ OpenSIPS 2019
Janus/SIP @ OpenSIPS 2019Janus/SIP @ OpenSIPS 2019
Janus/SIP @ OpenSIPS 2019
 
Docker, LinuX Container
Docker, LinuX ContainerDocker, LinuX Container
Docker, LinuX Container
 
Configuration Management in Ansible
Configuration Management in Ansible Configuration Management in Ansible
Configuration Management in Ansible
 
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
 
LUA를 이용한 스마트한 웹서버 만들기 (Ray. Lee)
LUA를 이용한 스마트한 웹서버 만들기 (Ray. Lee)LUA를 이용한 스마트한 웹서버 만들기 (Ray. Lee)
LUA를 이용한 스마트한 웹서버 만들기 (Ray. Lee)
 
Linux architecture
Linux architectureLinux architecture
Linux architecture
 
The Yocto Project
The Yocto ProjectThe Yocto Project
The Yocto Project
 
Docker (Compose) 활용 - 개발 환경 구성하기
Docker (Compose) 활용 - 개발 환경 구성하기Docker (Compose) 활용 - 개발 환경 구성하기
Docker (Compose) 활용 - 개발 환경 구성하기
 
Docker로 서버 개발 편하게 하기
Docker로 서버 개발 편하게 하기Docker로 서버 개발 편하게 하기
Docker로 서버 개발 편하게 하기
 
Docker - un outil pour faciliter le développement et le déploiement informatique
Docker - un outil pour faciliter le développement et le déploiement informatiqueDocker - un outil pour faciliter le développement et le déploiement informatique
Docker - un outil pour faciliter le développement et le déploiement informatique
 
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
 
Arm device tree and linux device drivers
Arm device tree and linux device driversArm device tree and linux device drivers
Arm device tree and linux device drivers
 
왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법
 
Kubernetes in Docker
Kubernetes in DockerKubernetes in Docker
Kubernetes in Docker
 
Everything you want to know about Ingress
Everything you want to know about IngressEverything you want to know about Ingress
Everything you want to know about Ingress
 
Getting started with Docker
Getting started with DockerGetting started with Docker
Getting started with Docker
 
Linux Kernel Programming
Linux Kernel ProgrammingLinux Kernel Programming
Linux Kernel Programming
 

Similar to Make container without_docker_6-overlay-network_1

Linux Networking Explained
Linux Networking ExplainedLinux Networking Explained
Linux Networking ExplainedThomas Graf
 
Deep Dive in Docker Overlay Networks - Laurent Bernaille - Architect, D2SI
Deep Dive in Docker Overlay Networks - Laurent Bernaille - Architect, D2SIDeep Dive in Docker Overlay Networks - Laurent Bernaille - Architect, D2SI
Deep Dive in Docker Overlay Networks - Laurent Bernaille - Architect, D2SIDocker, Inc.
 
[오픈소스컨설팅] Linux Network Troubleshooting
[오픈소스컨설팅] Linux Network Troubleshooting[오픈소스컨설팅] Linux Network Troubleshooting
[오픈소스컨설팅] Linux Network TroubleshootingOpen Source Consulting
 
Deep Dive in Docker Overlay Networks
Deep Dive in Docker Overlay NetworksDeep Dive in Docker Overlay Networks
Deep Dive in Docker Overlay NetworksLaurent Bernaille
 
Octo talk : docker multi-host networking
Octo talk : docker multi-host networking Octo talk : docker multi-host networking
Octo talk : docker multi-host networking Hervé Leclerc
 
SR-IOV+KVM on Debian/Stable
SR-IOV+KVM on Debian/StableSR-IOV+KVM on Debian/Stable
SR-IOV+KVM on Debian/Stablejuet-y
 
Open stack advanced_part
Open stack advanced_partOpen stack advanced_part
Open stack advanced_partlilliput12
 
SR-IOV, KVM and Emulex OneConnect 10Gbps cards on Debian/Stable
SR-IOV, KVM and Emulex OneConnect 10Gbps cards on Debian/StableSR-IOV, KVM and Emulex OneConnect 10Gbps cards on Debian/Stable
SR-IOV, KVM and Emulex OneConnect 10Gbps cards on Debian/Stablejuet-y
 
Deeper Dive in Docker Overlay Networks
Deeper Dive in Docker Overlay NetworksDeeper Dive in Docker Overlay Networks
Deeper Dive in Docker Overlay NetworksDocker, Inc.
 
Intel DPDK Step by Step instructions
Intel DPDK Step by Step instructionsIntel DPDK Step by Step instructions
Intel DPDK Step by Step instructionsHisaki Ohara
 
Multicloud connectivity using OpenNHRP
Multicloud connectivity using OpenNHRPMulticloud connectivity using OpenNHRP
Multicloud connectivity using OpenNHRPBob Melander
 
VyOS Users Meeting #2, VyOSのVXLANの話
VyOS Users Meeting #2, VyOSのVXLANの話VyOS Users Meeting #2, VyOSのVXLANの話
VyOS Users Meeting #2, VyOSのVXLANの話upaa
 
Tiny Server Clustering using Vyatta/VyOS (MEMO)
Tiny Server Clustering using Vyatta/VyOS (MEMO)Tiny Server Clustering using Vyatta/VyOS (MEMO)
Tiny Server Clustering using Vyatta/VyOS (MEMO)Naoto MATSUMOTO
 
Deeper dive in Docker Overlay Networks
Deeper dive in Docker Overlay NetworksDeeper dive in Docker Overlay Networks
Deeper dive in Docker Overlay NetworksLaurent Bernaille
 
Docker Networking with New Ipvlan and Macvlan Drivers
Docker Networking with New Ipvlan and Macvlan DriversDocker Networking with New Ipvlan and Macvlan Drivers
Docker Networking with New Ipvlan and Macvlan DriversBrent Salisbury
 
Make container without_docker_7
Make container without_docker_7Make container without_docker_7
Make container without_docker_7Sam Kim
 
Openstack openswitch basics
Openstack openswitch basicsOpenstack openswitch basics
Openstack openswitch basicsnshah061
 
Linux Network commands
Linux Network commandsLinux Network commands
Linux Network commandsHanan Nmr
 

Similar to Make container without_docker_6-overlay-network_1 (20)

Linux Networking Explained
Linux Networking ExplainedLinux Networking Explained
Linux Networking Explained
 
Deep Dive in Docker Overlay Networks - Laurent Bernaille - Architect, D2SI
Deep Dive in Docker Overlay Networks - Laurent Bernaille - Architect, D2SIDeep Dive in Docker Overlay Networks - Laurent Bernaille - Architect, D2SI
Deep Dive in Docker Overlay Networks - Laurent Bernaille - Architect, D2SI
 
Secure LXC Networking
Secure LXC NetworkingSecure LXC Networking
Secure LXC Networking
 
[오픈소스컨설팅] Linux Network Troubleshooting
[오픈소스컨설팅] Linux Network Troubleshooting[오픈소스컨설팅] Linux Network Troubleshooting
[오픈소스컨설팅] Linux Network Troubleshooting
 
Deep Dive in Docker Overlay Networks
Deep Dive in Docker Overlay NetworksDeep Dive in Docker Overlay Networks
Deep Dive in Docker Overlay Networks
 
Octo talk : docker multi-host networking
Octo talk : docker multi-host networking Octo talk : docker multi-host networking
Octo talk : docker multi-host networking
 
SR-IOV+KVM on Debian/Stable
SR-IOV+KVM on Debian/StableSR-IOV+KVM on Debian/Stable
SR-IOV+KVM on Debian/Stable
 
Open stack advanced_part
Open stack advanced_partOpen stack advanced_part
Open stack advanced_part
 
SR-IOV, KVM and Emulex OneConnect 10Gbps cards on Debian/Stable
SR-IOV, KVM and Emulex OneConnect 10Gbps cards on Debian/StableSR-IOV, KVM and Emulex OneConnect 10Gbps cards on Debian/Stable
SR-IOV, KVM and Emulex OneConnect 10Gbps cards on Debian/Stable
 
Deeper Dive in Docker Overlay Networks
Deeper Dive in Docker Overlay NetworksDeeper Dive in Docker Overlay Networks
Deeper Dive in Docker Overlay Networks
 
Intel DPDK Step by Step instructions
Intel DPDK Step by Step instructionsIntel DPDK Step by Step instructions
Intel DPDK Step by Step instructions
 
Linux router
Linux routerLinux router
Linux router
 
Multicloud connectivity using OpenNHRP
Multicloud connectivity using OpenNHRPMulticloud connectivity using OpenNHRP
Multicloud connectivity using OpenNHRP
 
VyOS Users Meeting #2, VyOSのVXLANの話
VyOS Users Meeting #2, VyOSのVXLANの話VyOS Users Meeting #2, VyOSのVXLANの話
VyOS Users Meeting #2, VyOSのVXLANの話
 
Tiny Server Clustering using Vyatta/VyOS (MEMO)
Tiny Server Clustering using Vyatta/VyOS (MEMO)Tiny Server Clustering using Vyatta/VyOS (MEMO)
Tiny Server Clustering using Vyatta/VyOS (MEMO)
 
Deeper dive in Docker Overlay Networks
Deeper dive in Docker Overlay NetworksDeeper dive in Docker Overlay Networks
Deeper dive in Docker Overlay Networks
 
Docker Networking with New Ipvlan and Macvlan Drivers
Docker Networking with New Ipvlan and Macvlan DriversDocker Networking with New Ipvlan and Macvlan Drivers
Docker Networking with New Ipvlan and Macvlan Drivers
 
Make container without_docker_7
Make container without_docker_7Make container without_docker_7
Make container without_docker_7
 
Openstack openswitch basics
Openstack openswitch basicsOpenstack openswitch basics
Openstack openswitch basics
 
Linux Network commands
Linux Network commandsLinux Network commands
Linux Network commands
 

Recently uploaded

HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 

Recently uploaded (20)

HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 

Make container without_docker_6-overlay-network_1

  • 1. 도커 없이 컨테이너 만들기 6편 Sam.0 실습과 함께 완성해보는
  • 2. 시작하기에 앞서 … 본 컨텐츠는 앞편을 보았다고 가정하고 준비되었습니다. 원활한 이해 및 실습을 위하여 앞편을 먼저 보시기를 추천드립니다 네트워크 네임스페이스 3,4편에 기초하여 준비되었습니다. 3편 링크 클릭 4편 링크 클릭
  • 3. # sudo -Es 실습 계정 (root) # cd /vagrant 실습 폴더 vagrant + virtual vm ubuntu 18.04, docker (Vagrantfile) - ubuntu1804 (기존) - ubuntu1804-2 (추가) 실습환경 설치 환경 # apt-get -y install python-pip > /dev/null 2>&1 # pip install pyroute2 실습환경 구성 링크
  • 4. Network namespace 호스트 안의 가상 네트워크 eth0 Host routes iptables lo eth0 Container 11.11.11.2 routes iptables lo arp table bridge fdb arp table bridge fdb eth0 Container 11.11.11.3 routes iptables lo arp table bridge fdb
  • 5. eth0 veth0 Host veth pair RED BLUE veth1 11.11.11.2/24 11.11.11.3/24 네임스페이스 간 1:1 통신
  • 6. reth0 Host RED BLUE reth1 beth0 beth1 arp, fdb정보를 이용하여 통신하고 iptables rule에 따라 전송여부 결정 eth0 Bridge 통신 bridge fdb route table iptables arp table bridge fdb arp table route table iptables bridge fdb arp table route table iptables 11.11.11.2/24 11.11.11.3/24 d2:e5:f4:1c:d6:93 3a:c6:51:d6:08:40 br0
  • 7. eth0 reth0 Host RED BLUE beth0 beth1 인터넷 reth1 외부 네트워크 통신 bridge fdb route table iptables arp table bridge fdb arp table route table iptables bridge fdb arp table route table iptables br0 default route 설정 iptables nat, forward 설정
  • 8. Overlay Network 호스트 간의 가상 네트워크 eth0 Host routes iptables lo eth0 Container 11.11.11.2 routes iptables lo arp table bridge fdb arp table bridge fdb eth0 Container 11.11.11.3 routes iptables lo arp table bridge fdb
  • 9. 서버 간에도 (가상의) 네트워크 네임스페이스 통신이 가능할까요? 11.11.11.2 11.11.11.4
  • 10. PING 11.11.11.2 → 11.11.11.4 eth0 geth0 Host GREEN ORANGE oeth0 oeth1 geth1 bridge fdb route table iptables arp table bridge fdb arp table route table iptables bridge fdb arp table route table iptables br0 11.11.11.4 192.168.104.3 11.11.11.2 192.168.104.2 eth0 reth0 Host RED BLUE beth0 beth1 reth1 bridge fdb route table iptables arp table bridge fdb arp table route table iptables bridge fdb arp table route table iptables br0
  • 11. PING 11.11.11.2 → 11.11.11.4 eth0 geth0 Host GREEN ORANGE oeth0 oeth1 geth1 bridge fdb route table iptables arp table bridge fdb arp table route table iptables bridge fdb arp table route table iptables br0 11.11.11.2 11.11.11.4 192.168.104.2 192.168.104.3 eth0 reth0 Host RED BLUE beth0 beth1 reth1 bridge fdb route table iptables arp table bridge fdb arp table route table iptables bridge fdb arp table route table iptables br0
  • 12. Bridge 1 2 PC1 PC2 PC3 PC4 PC5 PC6 PC7 PC8 PC1(MAC) PC2(MAC) PC3(MAC) PC4(MAC) PC5(MAC) PC6(MAC) PC7(MAC) PC8(MAC) 세그먼트1 세그먼트2 서버는 포트에 연결되고 포트별로 어떤 세그먼트에 속하는지 관리 bridge 11.11.11.2 11.11.11.4 ? ARP broadcasting .. looking for 11.11.11.4
  • 14. 같은동네 (LAN) 같은 동네 (LAN) ? 연결 - LAN : Local Area Network (브로드캐스트 도메인) - WAN : Wide Area Network (라우터로 구분되는 네트워크) Sam~ Me ! 다른 동네 (WAN) R Sam~ I know ... ! ! R
  • 15. VLAN Virtual Local Area Network Real Network has 11.11.11.2 has 11.11.11.4 11.11.11.4 ~ I’m here ! 가상의 Local Area Network 가 가능하다면 ?
  • 17. 오버레이 네트워크 Underlay Network 하부 네트워크 구조가 어찌됐건 “동일한 네트워크 구성을 유지" Overlay Network
  • 18. VLAN VLAN (Virtual LAN) 오버레이 네트워크 구현 기술 중 하나 … GRE tunnel, MPLS, VPN , …
  • 19. VxLAN Virtual eXtensible LAN - VLAN ID (12bit) 4,096개 제약 → ID(24bit) 2^24 개 (16,777,216) - L2 over L3 : UDP 패킷 내부에 L2 프레임을 캡슐화하는 터널링 기술 - VTEP (Vxlan Tunnel End Point) : 종단역할. encapsulation / termination https://atthis.tistory.com/7?category=750237
  • 20. Network Stack - 캡슐화 : Layer 구분 / Layer간 통신 캡슐화
  • 21. 터널링 터널링의 구성요소 : - 승객 Passenger Protocol : 캡슐화 대상 프로토콜 - 전달 Carrier Protocol : 캡슐화 시킬 프로토콜 - 전송 Transport Protocol : 전달 프로토콜을 끌고 갈 프로토콜
  • 22. MAC-in-UDP VXLAN L2 정보 (MAC address)를 L3에 넣어서 통신 VXLAN Packet Size : 50 Bytes (14 + 20 + 8 + 8)
  • 23. MTU Maximum frame or packet size for a particular network medium. Typically 1500 bytes for Ethernet networks VXLAN 사용 시 MTU 는 1450 (1500-50) 으로 설정 한다. * VXLAN Packet Size : 50 Bytes (14 + 20 + 8 + 8) * 왜 50을 빼냐고요? (바로 앞 장의 그림을 다시 한번 봐주세용~) 물리 네트워크 통신의 decapsulation 과정에서 50 bytes 가 사용되었고 VXLAN이 가상 네트워크 통신을 위한 나머지 1450 bytes를 전달하게 됩니다. 50 bytes 1450 bytes
  • 25. (실습1) 오버레이 네트워크 eth1 pinkns overns pinkns overns eth1 192.168.104.2 192.168.104.3 # ip netns add overns # ip netns add pinkns 터미널 #1 (192.168.104.2) + 터미널 #2 (192.168.104.3) 네트워크 네임스페이스 생성
  • 26. (실습1) 오버레이 네트워크 eth1 pinkns overns pinkns overns eth1 192.168.104.2 # ip link add dev veth1 mtu 1450 netns overns type veth peer name eth0 mtu 1450 netns pinkns 192.168.104.3 eth0 veth1 eth0 veth1 터미널 #1 (192.168.104.2) + 터미널 #2 (192.168.104.3) 네트워크 네임스페이스로 veth pair 이동
  • 27. (실습1) 오버레이 네트워크 eth1 pinkns overns pinkns overns eth1 192.168.104.2 192.168.104.3 12.12.12.2/24 02:42:c0:a8:00:02 # ip netns exec pinkns ip link set dev eth0 address <MAC ADDRESS - 02:42:c0:a8:00:0?> # ip netns exec pinkns ip addr add dev eth0 <IP/CIDR - 12.12.12.?/24> eth0 12.12.12.3/24 02:42:c0:a8:00:03 veth1 eth0 veth1 ? : 각 창에 알맞은 숫자로 넣어주세요 터미널 #1 (192.168.104.2) + 터미널 #2 (192.168.104.3) veth pair 에 MAC / IP address 설정
  • 28. (실습1) 오버레이 네트워크 eth1 pinkns overns pinkns overns eth1 192.168.104.2 192.168.104.3 # ip netns exec overns ip link add dev br0 type bridge # ip netns exec overns ip addr add dev br0 12.12.12.1/24 eth0 veth1 eth0 veth1 12.12.12.2/24 02:42:c0:a8:00:02 12.12.12.3/24 02:42:c0:a8:00:03 터미널 #1 (192.168.104.2) + 터미널 #2 (192.168.104.3) br0 br0 bridge (br0) 추가 및 설정 12.12.12.1/24 12.12.12.1/24
  • 29. (실습1) 오버레이 네트워크 eth1 pinkns overns pinkns overns eth1 192.168.104.2 192.168.104.3 # ip link add dev vxlan1 netns overns type vxlan id 42 proxy learning dstport 4789 eth0 veth1 eth0 veth1 12.12.12.2/24 02:42:c0:a8:00:02 12.12.12.3/24 02:42:c0:a8:00:03 터미널 #1 (192.168.104.2) + 터미널 #2 (192.168.104.3) br0 br0 vxlan 생성 및 설정 vxlan1 vxlan1
  • 30. (실습1) 오버레이 네트워크 # ip link add dev vxlan1 netns overns type vxlan id 42 proxy learning dstport 4789 id 42 ~ VNI . vxlan endpoint 식별 proxy ~ vxlan 이 arp 쿼리에 응답하도록 허용 learning ~ bridge fdb entry 자동 갱신 허용 dstport 4789 ~ UDP port for 터널링 vxlan 생성 및 설정
  • 31. (실습1) 오버레이 네트워크 eth1 pinkns overns pinkns overns eth1 192.168.104.2 192.168.104.3 # ip netns exec overns ip link set veth1 master br0 # ip netns exec overns ip link set vxlan1 master br0 eth0 veth1 eth0 veth1 12.12.12.2/24 02:42:c0:a8:00:02 12.12.12.3/24 02:42:c0:a8:00:03 터미널 #1 (192.168.104.2) + 터미널 #2 (192.168.104.3) br0 br0 vxlan1 vxlan1 veth1, vxlan1을 br0에 연결
  • 32. (실습1) 오버레이 네트워크 eth1 pinkns overns pinkns overns eth1 192.168.104.2 192.168.104.3 # ip netns exec overns ip link set br0 up # ip netns exec overns ip link set vxlan1 up # ip netns exec overns ip link set veth1 up # ip netns exec pinkns ip link set eth0 up eth0 veth1 eth0 veth1 12.12.12.2/24 02:42:c0:a8:00:02 12.12.12.3/24 02:42:c0:a8:00:03 터미널 #1 (192.168.104.2) + 터미널 #2 (192.168.104.3) br0 br0 vxlan1 vxlan1 각 virtual interface 의 전원 On ~
  • 33. (실습1) 오버레이 네트워크 eth1 pinkns (터미널#1) overns (터미널#3) pinkns overns eth1 192.168.104.2 192.168.104.3 # nsenter --net=/var/run/netns/pinkns eth0 veth1 eth0 veth1 12.12.12.2/24 02:42:c0:a8:00:02 12.12.12.3/24 02:42:c0:a8:00:03 터미널 #1 (192.168.104.2) 터미널 #2 (192.168.104.3) br0 br0 vxlan1 vxlan1 # tcpdump -i eth1 생성한 네트워크 네임스페이스에 들어가 봅시다 # nsenter --net=/var/run/netns/overns 터미널 #3 (192.168.104.2) 하나 더
  • 34. 12.12.12.2/24 02:42:c0:a8:00:02 (실습1) 오버레이 네트워크 eth1 pinkns overns pinkns overns eth1 192.168.104.2 192.168.104.3 # ping 12.12.12.3 eth0 veth1 eth0 veth1 12.12.12.3/24 02:42:c0:a8:00:03 터미널 #1 (pinkns@192.168.104.2) 터미널 #2 (192.168.104.3) br0 br0 vxlan1 vxlan1 # tcpdump -i eth1 Ping 12.12.12.2 → 12.12.12.3 # tcpdump -i br0 터미널 #3 (overns@192.168.104.2)
  • 35. ? 12.12.12.2/24 02:42:c0:a8:00:02 (실습1) 오버레이 네트워크 eth1 pinkns overns pinkns overns eth1 192.168.104.2 192.168.104.3 # ping 12.12.12.3 eth0 veth1 eth0 veth1 12.12.12.3/24 02:42:c0:a8:00:03 터미널 #1 (pinkns@192.168.104.2) 터미널 #2 (192.168.104.3) br0 br0 vxlan1 vxlan1 12.12.12.3의 MAC주소가 뭐에요? # tcpdump -i br0 ARP, Request who-has 12.12.12.3 tell 12.12.12.2, length 28 터미널 #3 (overns@192.168.104.2) # tcpdump -i eth1
  • 36. 12.12.12.3/24 02:42:c0:a8:00:03 ? 12.12.12.2/24 02:42:c0:a8:00:02 (실습1) 오버레이 네트워크 eth1 pinkns overns pinkns overns eth1 192.168.104.2 192.168.104.3 eth0 veth1 veth1 br0 br0 vxlan1 vxlan1 eth0 12.12.12.3의 MAC주소가 뭐에요? 12.12.12.3은 응답할 수가 없습니다. R 동네 배송은 취급 안함 12.12.12.3
  • 37. 12.12.12.3/24 02:42:c0:a8:00:03 ? 12.12.12.2/24 02:42:c0:a8:00:02 (실습1) 오버레이 네트워크 eth1 pinkns overns pinkns overns eth1 192.168.104.2 192.168.104.3 eth0 veth1 veth1 br0 br0 vxlan1 vxlan1 eth0 12.12.12.3의 MAC주소가 뭐에요? 혹시 ... 퀵 부르셨나용 ? 12.12.12.3 vxlan 12.12.12.3은 누가 전달해 줄 수 있을까요?
  • 38. 12.12.12.3/24 02:42:c0:a8:00:03 12.12.12.2/24 02:42:c0:a8:00:02 (실습1) 오버레이 네트워크 eth1 pinkns overns pinkns overns eth1 192.168.104.2 192.168.104.3 eth0 veth1 veth1 br0 br0 vxlan1 vxlan1 eth0 12.12.12.3의 MAC주소가 뭐에요? # ip neigh show # ip neigh add 12.12.12.3 lladdr 02:42:c0:a8:00:03 dev vxlan1 # ip neigh show 12.12.12.3 dev vxlan1 lladdr 02:42:c0:a8:00:03 PERMANENT H스퀘.. N9 .. sam.0 ... vxlan 판교 H스퀘어 N동 N9 AB-TF sam.0 이요 핸펀은 010-XXX-XXXX 터미널 #3 (overns@192.168.104.2)
  • 39. (실습1) 오버레이 네트워크 12.12.12.3의 MAC주소가 뭐에요? # ip neigh add 12.12.12.3 lladdr 02:42:c0:a8:00:03 dev vxlan1 12.12.12.3 dev vxlan1 lladdr 02:42:c0:a8:00:03 PERMANENT H스퀘.. N9 .. sam.0 ... vxlan 판교 H스퀘어 N동 N9 AB-TF sam.0 이요 핸펀은 010-XXX-XXXX 목적지 IP 주소 목적지 MAC 주소 전송을 담당할 디바이스 arp table에 기록 lladdr? L2 주소 영구 사용 arp 상태 참고 : https://ebt-forti.tistory.com/m/145?category=849281 조회 ARP
  • 40. 12.12.12.2/24 02:42:c0:a8:00:02 (실습1) 오버레이 네트워크 eth1 pinkns overns pinkns overns eth1 192.168.104.2 192.168.104.3 # ping 12.12.12.3 eth0 veth1 eth0 veth1 12.12.12.3/24 02:42:c0:a8:00:03 터미널 #1 (pinkns@192.168.104.2) 터미널 #2 (192.168.104.3) br0 br0 vxlan1 vxlan1 12.12.12.3의 MAC주소가 뭐에요? # tcpdump -i br0 . . . ARP, Reply 12.12.12.3 is-at 02:42:c0:a8:00:03 (oui Unknown), length 28 터미널 #3 (overns@192.168.104.2) # tcpdump -i eth1 ARP
  • 41. 12.12.12.2/24 02:42:c0:a8:00:02 (실습1) 오버레이 네트워크 eth1 pinkns overns pinkns overns eth1 192.168.104.2 192.168.104.3 # ping 12.12.12.3 eth0 veth1 eth0 veth1 12.12.12.3/24 02:42:c0:a8:00:03 터미널 #1 (pinkns@192.168.104.2) 터미널 #2 (192.168.104.3) br0 br0 vxlan1 vxlan1 12.12.12.3의 MAC주소가 뭐에요? # tcpdump -i vxlan1 . . . ARP, Reply 12.12.12.3 is-at 02:42:c0:a8:00:03 (oui Unknown), length 28 터미널 #3 (overns@192.168.104.2) # tcpdump -i eth1 ARP
  • 42. 12.12.12.2/24 02:42:c0:a8:00:02 (실습1) 오버레이 네트워크 eth1 pinkns overns pinkns overns eth1 192.168.104.2 192.168.104.3 # ip neigh show 12.12.12.3 dev eth0 lladdr 02:42:c0:a8:00:03 REACHABLE eth0 veth1 eth0 veth1 12.12.12.3/24 02:42:c0:a8:00:03 터미널 #1 (pinkns@192.168.104.2) 터미널 #2 (192.168.104.3) br0 br0 vxlan1 vxlan1 12.12.12.3의 MAC주소가 뭐에요? 02:42:c0:a8:00:03 # tcpdump -i vxlan1 . . . ARP, Reply 12.12.12.3 is-at 02:42:c0:a8:00:03 (oui Unknown), length 28 터미널 #3 (overns@192.168.104.2) # tcpdump -i eth1 ARP
  • 43. 12.12.12.2/24 02:42:c0:a8:00:02 (실습1) 오버레이 네트워크 eth1 pinkns overns pinkns overns eth1 192.168.104.2 192.168.104.3 # ping 12.12.12.3 eth0 veth1 eth0 veth1 12.12.12.3/24 02:42:c0:a8:00:03 터미널 #1 (pinkns@192.168.104.2) 터미널 #2 (192.168.104.3) br0 br0 vxlan1 vxlan1 # tcpdump -i vxlan1 . . . IP 12.12.12.2 > 12.12.12.3: ICMP echo request, id 2648, seq 60, length 64 터미널 #3 (overns@192.168.104.2) # tcpdump -i eth1 Ping 12.12.12.2 → 12.12.12.3 No ICMP reply ? ARP
  • 44. ICMP (Internet Control Message Protocol) IP 동작 진단/제어에 사용되고 오류에 대한 응답을 source IP에 제공 - L3 (Network Layer) 프로토콜 - 인터넷/통신 상황 report , 오류 보고, 위험상황에 대한 경보 등에 사용 - ping : destination host 작동여부 / 응답 시간 측정 - tracert : destination routing 경로 추적 (실습1) 오버레이 네트워크 Ping 12.12.12.2 → 12.12.12.3 No ICMP reply ?
  • 45. 목적지가 로컬? Y N Packet flow chain (hook) } table iptables FOWARD : NF_IP_FORWARD (hook)에 등록된 체인 ㄴ NF_IP_FORWARD : incoming 패킷이 다른 호스트로 포워딩되는 경우에 트리거되는 netfilter hook filter (table) : 패킷을 목적지로 전송 여부를 결정 (실습1) 오버레이 네트워크 Ping 12.12.12.2 → 12.12.12.3 No ICMP reply ?
  • 46. (실습1) 오버레이 네트워크 Ping 12.12.12.2 → 12.12.12.3 No ICMP reply ? # iptables -t filter -L | grep policy Chain INPUT (policy ACCEPT) Chain FORWARD (policy ACCEPT) Chain OUTPUT (policy ACCEPT) 터미널 #3 (overns@192.168.104.2) iptables forward 룰을 확인해 봅니다 Q) 왜 호스트가 아닌 overns의 iptables을 확인하였을까요? 네~ br0가 호스트가 아닌 overns 에 있기 때문입니다.
  • 47. 12.12.12.2/24 02:42:c0:a8:00:02 (실습1) 오버레이 네트워크 eth1 pinkns overns pinkns overns eth1 192.168.104.2 192.168.104.3 # ping 12.12.12.3 eth0 veth1 eth0 veth1 12.12.12.3/24 02:42:c0:a8:00:03 터미널 #1 (pinkns@192.168.104.2) 터미널 #2 (192.168.104.3) br0 br0 vxlan1 vxlan1 # tcpdump -i vxlan1 . . . IP 12.12.12.2 > 12.12.12.3: ICMP echo request, id 2648, seq 60, length 64 터미널 #3 (overns@192.168.104.2) Ping 12.12.12.2 → 12.12.12.3 No Reply ICMP ? # tcpdump -i eth1 ? ARP
  • 48. # ip route 12.12.12.0/24 dev br0 proto kernel scope link src 12.12.12.1 # ip neigh show 12.12.12.3 dev vxlan1 lladdr 02:42:c0:a8:00:03 PERMANENT # bridge fdb show . . . 02:42:c0:a8:00:03 dev vxlan1 master br0 . . . 터미널 #3 (overns@192.168.104.2) (실습1) 오버레이 네트워크 route table ~ 12.12.12.0 대역은 br0가 gateway arp table ~ 12.12.12.3 → 02:42:c0:a8:00:03 bridge fdb ~ 02:42:c0:a8:00:03 → vxlan1가 처리하고 br0에 연결돼 있다는 정보 뭔가 정보가 부족한가 봅니다 vxlan1 12.12.12.3 → 02:42:C0:a8:00:03 so … how to deliver ? Ping 12.12.12.2 → 12.12.12.3 No Reply ICMP ?
  • 49. # bridge fdb add 02:42:c0:a8:00:03 dev vxlan1 self dst 192.168.104.3 vni 42 port 4789 # bridge fdb show | grep 02:42:c0:a8:00:03 02:42:c0:a8:00:03 dev vxlan1 dst 192.168.104.3 link-netnsid 0 self permanent 터미널 #3 (overns@192.168.104.2) 판교역 앞 마을버스 1번 .. H스퀘어 건너편 하차 .. vxlan 판교역에서 마을버스 1번을 타고 H스퀘어 건너편에서 내리면 돼요 (실습1) 오버레이 네트워크 Ping 12.12.12.2 → 12.12.12.3 No Reply ICMP ? vxlan 에게 정확한 길을 상세히 알려 줍시다 실제 목적지의 물리 IP 주소 VTEP ID 패킷을 수령할 엔드포인트 실제 목적지의 물리 port FDB “02:42:c0:a8:00:03은 가상의 MAC address로 vxlan이 잘 포장해서 퀵으로 보내야 하므로 MAC주소를 처리할 수신처(호스트) IP를 적어주어야 합니다. “
  • 50. 192.168.104.2 # bridge fdb add 02:42:c0:a8:00:03 dev vxlan1 self dst 192.168.104.3 vni 42 port 4789 . . . 02:42:c0:a8:00:03 dev vxlan1 dst 192.168.104.3 link-netnsid 0 self permanent 터미널 #3 (overns@192.168.104.2) (실습1) 오버레이 네트워크 Ping 12.12.12.2 → 12.12.12.3 No Reply ICMP ? pinkns vxlan 에게 정확한 길을 상세히 알려 줍시다 12.12.12.3/24 02:42:c0:a8:00:03 12.12.12.2/24 02:42:c0:a8:00:02 eth1 pinkns overns overns 192.168.104.3 eth0 veth1 veth1 br0 br0 vxlan1 (vni 42) eth0 eth1 vxlan1 FDB FDB ARP
  • 51. 12.12.12.2/24 02:42:c0:a8:00:02 (실습1) 오버레이 네트워크 eth1 pinkns overns pinkns overns eth1 192.168.104.2 192.168.104.3 # ping 12.12.12.3 eth0 veth1 eth0 veth1 12.12.12.3/24 02:42:c0:a8:00:03 터미널 #1 (pinkns@192.168.104.2) 터미널 #2 (192.168.104.3) br0 br0 vxlan1 vxlan1 # tcpdump -i vxlan1 . . . IP 12.12.12.2 > 12.12.12.3: ICMP echo request, id 2648, seq 60, length 64 터미널 #3 (overns@192.168.104.2) Ping 12.12.12.2 → 12.12.12.3 오.. 터미널#2에 패킷이 보입니다 # tcpdump -i eth1 . . . IP 192.168.104.2.39783 > ubuntu1804-2.4789: VXLAN, flags [I] (0x08), vni 42 IP 12.12.12.2 > 12.12.12.3: ICMP echo request, id 2815, seq 3082, length 64 . . . FDB ARP
  • 52. 12.12.12.2/24 02:42:c0:a8:00:02 (실습1) 오버레이 네트워크 eth1 pinkns overns pinkns overns eth1 192.168.104.2 192.168.104.3 # ping 12.12.12.3 eth0 veth1 eth0 veth1 12.12.12.3/24 02:42:c0:a8:00:03 터미널 #1 (pinkns@192.168.104.2) 터미널 #2 (192.168.104.3) br0 br0 vxlan1 vxlan1 # tcpdump -i vxlan1 . . . IP 12.12.12.2 > 12.12.12.3: ICMP echo request, id 2648, seq 60, length 64 터미널 #3 (overns@192.168.104.2) Ping 12.12.12.2 → 12.12.12.3 But … No ICMP reply ... # tcpdump -i eth1 . . . IP 192.168.104.2.39783 > ubuntu1804-2.4789: VXLAN, flags [I] (0x08), vni 42 IP 12.12.12.2 > 12.12.12.3: ICMP echo request, id 2815, seq 3082, length 64 . . . ? FDB ARP
  • 53. Ping 12.12.12.2 → 12.12.12.3 자 .. 이제 192.168.104.3 을 들여다 볼 차례입니다 # nsenter --net=/var/run/nents/overns 터미널 #2 (192.168.104.3) 터미널 #2의 overns 로 nsenter 합니다. (실습1) 오버레이 네트워크
  • 54. 12.12.12.2/24 02:42:c0:a8:00:02 (실습1) 오버레이 네트워크 eth1 pinkns overns pinkns overns (터미널#2) eth1 192.168.104.2 192.168.104.3 # ping 12.12.12.3 eth0 veth1 eth0 veth1 12.12.12.3/24 02:42:c0:a8:00:03 터미널 #1 (pinkns@192.168.104.2) 터미널 #2 (overns@192.168.104.3) br0 br0 vxlan1 vxlan1 # tcpdump -i vxlan1 . . . IP 12.12.12.2 > 12.12.12.3: ICMP echo request, id 2648, seq 60, length 64 터미널 #3 (overns@192.168.104.2) Ping 12.12.12.2 → 12.12.12.3 “감” 오시나요 ? # tcpdump -i vxlan1 … IP 12.12.12.2 > 12.12.12.3: ICMP echo request, id 2833, seq 288, length 64 ARP, Request who-has 12.12.12.2 tell 12.12.12.3, length 28 … FDB ARP
  • 55. 터미널 #2 (overns@192.168.104.3) # tcpdump -i vxlan1 … IP 12.12.12.2 > 12.12.12.3: ICMP echo request, id 2833, seq 288, length 64 ARP, Request who-has 12.12.12.2 tell 12.12.12.3, length 28 … (실습1) 오버레이 네트워크 Ping 12.12.12.2 → 12.12.12.3 “감” 오시나요 ?
  • 56. # ip neigh show # bridge fdb 02:42:c0:a8:00:02 dev vxlan1 dst 192.168.104.2 link-netnsid 0 self # ip route 12.12.12.0/24 dev br0 proto kernel scope link src 12.12.12.1 ARP 없고 터미널 #2 (overns@192.168.104.3) (실습1) 오버레이 네트워크 Ping 12.12.12.2 → 12.12.12.3 “감” 오시나요 ? FDB 는 있고
  • 57. 터미널 #2 (overns@192.168.104.3) # ip neigh add 12.12.12.2 lladdr 02:42:c0:a8:00:02 dev vxlan1 (실습1) 오버레이 네트워크 Ping 12.12.12.2 → 12.12.12.3 “감” 오시나요 ?
  • 58. (실습1) 오버레이 네트워크 12.12.12.2의 MAC주소가 뭐에요? # ip neigh add 12.12.12.2 lladdr 02:42:c0:a8:00:02 dev vxlan1 12.12.12.2 dev vxlan1 lladdr 02:42:c0:a8:00:02 PERMANENT 현백 .. 9F .. lynn.h ... vxlan 판교 현대백화점 9F lynn.h 이요 핸펀 010-OOO-XXXX 목적지 IP 주소 목적지 MAC 주소 전송을 담당할 디바이스 arp table에 기록 lladdr? L2 주소 영구 사용 조회 ARP
  • 59. 12.12.12.2/24 02:42:c0:a8:00:02 (실습1) 오버레이 네트워크 eth1 pinkns overns pinkns overns eth1 192.168.104.2 192.168.104.3 # ping 12.12.12.3 64 bytes from 12.12.12.3: icmp_seq=1 ttl=64 time=0.549 ms eth0 veth1 eth0 veth1 12.12.12.3/24 02:42:c0:a8:00:03 터미널 #1 (pinkns@192.168.104.2) 터미널 #2 (overns@192.168.104.3) br0 br0 vxlan1 vxlan1 # tcpdump -i vxlan1 IP 12.12.12.2 > 12.12.12.3: ICMP echo request, id 2933, seq 3315 ... IP 12.12.12.3 > 12.12.12.2: ICMP echo reply, id 2933, seq 3315 ... 터미널 #3 (overns@192.168.104.2) Ping 12.12.12.2 → 12.12.12.3 성공 ~ # tcpdump -i vxlan1 … IP 12.12.12.2 > 12.12.12.3: ICMP echo request, id 2933, seq 288, length 64 IP 12.12.12.3 > 12.12.12.2: ICMP echo reply, id 2933, seq 288, length 64 ARP, Request who-has 12.12.12.2 tell 12.12.12.3, length 28 ARP, Reply 12.12.12.2 is-at 02:42:c0:a8:00:02 (oui Unknown), length 28 … FDB ARP FDB ARP
  • 61. Overlay Network Virtual Local Area Network 12.12.12.3 ~ I’m here !
  • 62. 그런데 말입니다 ... bridge FDB는 어떻게 입력이 되었을까요? 12.12.12.2/24 02:42:c0:a8:00:02 eth1 pinkns overns pinkns overns eth1 192.168.104.2 192.168.104.3 eth0 veth1 eth0 FDB veth1 ARP 12.12.12.3/24 02:42:c0:a8:00:03 br0 br0 vxlan1 vxlan1 ARP 직접입력 누가입력? FDB
  • 63. 그런데 말입니다 ... 12.12.12.2/24 02:42:c0:a8:00:02 eth1 pinkns overns pinkns overns eth1 192.168.104.2 192.168.104.3 eth0 veth1 eth0 FDB veth1 ARP 12.12.12.3/24 02:42:c0:a8:00:03 br0 br0 vxlan1 vxlan1 ARP 직접입력 누가입력? bridge FDB는 어떻게 입력이 되었을까요? # ip link add dev vxlan1 type vxlan id 42 proxy learning dstport 4789 vxlan 디바이스 생성 시에 learning 옵션을 켜주었습니다 FDB → 커널이 요청 패킷을 검사하여 bridge fdb에 기록해 줍니다. (지난 시간에 배운 bridge의 기능 중 포트별 MAC 주소를 기억하는 learning 이 있었죠 )
  • 64. 그런데 말입니다 ... # 수동 입력 02:42:c0:a8:00:03 dev vxlan1 dst 192.168.104.3 link-netnsid 0 self permanent # 자동 입력 02:42:c0:a8:00:02 dev vxlan1 dst 192.168.104.2 link-netnsid 0 self Aging 에 의해서 일정시간이 지나면 삭제됨 → 지난 시간에 배운 … bridge는 aging 기능이 있고 TTL은 보통 300초
  • 65. 그런데 말입니다 ... 02:42:c0:a8:00:02 dev vxlan1 dst 192.168.104.2 link-netnsid 0 self aging ? fdb에서 삭제되면 … 통신이 ??? �� 네.. 12.12.12.3 → 12.12.12.2 으로의 통신은 되지 않습니다. 12.12.12.2 로 부터 통신이 있지 않으면 bridge fdb entry가 갱신이 되지 않기 때문이죠
  • 66. bridge fdb 에서 02:42:c0:a8:00:02 를 지우고 ping 12.12.12.2 를 해보세요 # bridge fdb del 02:42:c0:a8:00:02 dev vxlan1 dst 192.168.104.2 # ping 12.12.12.2 . . . --- 12.12.12.2 ping statistics --- 2 packets transmitted, 0 received, 100% packet loss, time 1019ms 터미널 #2 (overns@192.168.104.3) bridge fdb가 지워지면 통신이 되지 않습니다. 직접 fdb를 삭제 하긴 했습니다만.. 일정시간이 지나면 aging에 의하여 실제 fdb가 삭제됩니다
  • 67. # bridge fdb replace 02:42:c0:a8:00:02 dev vxlan1 self dst 192.168.104.2 vni 42 port 4789 # bridge fdb show | grep 02:42:c0:a8:00:02 02:42:c0:a8:00:02 dev vxlan1 dst 192.168.104.2 link-netnsid 0 self permanent 터미널 #2 (overns@192.168.104.3) (실습1) 오버레이 네트워크 192.168.104.3에서도 bridge fdb에 등록해 주세요 FDB 실제 목적지의 물리 IP 주소 VTEP ID 패킷을 수령할 엔드포인트 실제 목적지의 물리 port ## 이미 learning된 정보가 있으면 add는 실패하므로 replace 사용하였습니다
  • 68. 12.12.12.2/24 02:42:c0:a8:00:02 (실습1) 오버레이 네트워크 eth1 pinkns overns pinkns overns eth1 192.168.104.2 192.168.104.3 eth0 veth1 eth0 veth1 12.12.12.3/24 02:42:c0:a8:00:03 터미널 #2 (pinkns@192.168.104.3) br0 br0 vxlan1 vxlan1 Ping 12.12.12.3 → 12.12.12.2 성공 ~ # ping 12.12.12.3 → 12.12.12.2 … IP 12.12.12.3 > 12.12.12.2: ICMP echo request, id 3933, seq 288, length 64 IP 12.12.12.2 > 12.12.12.3: ICMP echo reply, id 3933, seq 288, length 64 … FDB ARP FDB ARP