티스토리 뷰

네트워크

veth에 대하여

삼전동해커 2021. 8. 15. 14:37

veth란?

veth란 가상 네트워크 인터페이스이다. 도커와 같이 가상의 네트워크를 사용해야 하는 경우에 사용한다.

veth는 쌍으로 만들어지며 네트워크 네임스페이스들을 터널로서 연결하거나, 물리 디바이스와 다른 네트워크 네임스페이스의 장비를 연결하는 용도로 사용한다. 여기서 네트워크 네임스페이스란 프로세스의 네트워크 환경을 분리하여 사용할 수 있도록 환경을 만드는 것을 의미한다. 

 

veth를 쌍으로 연결시켜 주어야 한다.

 

$ ip link add veth0 type veth peer name veth1

 

위 명령어를 통해 veth0와 veth1을 연결했고 아직 활성화 되지 않은 상태이다. 둘이 연결되어 있기 때문에 하나를 활성화 시키면 다른하나도 활성화 된다.

 

 

 

 

 

이렇게 veth가 활성화된 모습을 확인할 수 있다.

 

일단 네트워크 네임스페이스를 만들어 준다.

 

 

 

 

 

direct_netns라는 네임스페이스를 만들었다. 이는 /var/run/netns에 생성이 된다. 그리고 /etc/netns에서 설정이 가능하다.

 

direct_netns 네임스페이스에서 ip --br link라는 명령어를 실행 시켜보기 위해 다음 명령어를 이용한다.

 

$ ip netns exec direct_netns ip --br link

 

exec라는 명령어를 이용해 다른 네임스페이스 상에서 명령어를 실행시키는 것이다.

 

 

 

 

 

루프백 하나만 설정되어 있는게 확인된다.

 

이번엔 네임스페이스에서 nginx 서버 실행하고 동작을 확인해 보자.

격리된 네트워크 네임스페이스에서 프로세스를 실행하면 이 또한 컨테이너라고 생각할 수 있겠다. 

 

일단 direct_netns에는 루프백만 동작하고 있다. 그럼 다른 네트워크에서는 direct_netns로 접근할 수 없고, direct_netns만 접근할 수 있다. 

 

 

 

 

루프백을 up하고 , nginx를 로컬 호스트(우분투)에 설치한다. 왜냐하면 로컬 호스트와 네임스페이스 간에 파일 시스템을 공유하고 있기 때문이다. 우분투의 ps와 direct_netns의 ps를 확인해보면 같은 프로세스들이 동작하는게 확인된다.

 

 

 

 

 

$ apt-get install nginx-core

 

그리고 curl 127.0.0.1을 실행해보면 정상적으로 동작된다. 일단 service nginx stop으로 동작을 중지 시키자.

다시 실행하면 nginx가 실행안되는 걸 확인할 수 있다.

 

이제 direct_netns의 포그라운드에서 nginx를 실행시켜보자.

 

$ ip netns exec direct_netns nginx -g 'daemon off;'

 

이 후 direct_netns에서 curl 127.0.0.1을 실행해보면 접속이 된다.

 

 

 

 

 

 

로컬 호스트에서 네임스페이스로는 접근할 수 없지만, 루프백은 사용이 가능하다는 것을 알게 됐다.

 

 

 

 

netstat -tnlp 명령어를 통해 확인할 수 있다.

 

이제 네임스페이스가 외부와 통하기 위해 veth를 사용하자.

 

$ ip link set veth1 netns direct_netns 

 

위 명령어로 veth1을 direct_netns로 옮긴다.

 

 

 

 

이제 veth에 ip를 할당하자.

 

$ ip a add 10.200.0.2/24 dev veth0

$ip netns exec direct_ns ip a add 10.200.0.3/24 dev veth1

 

이제 veth의 상태를 up으로 변경하자.

 

$ip link set dev veth0 up

$ip net exec direct_ns ip link set dev veth1 up

 

이제 ping을 보내보면 통신이 된다.

 

 

'네트워크' 카테고리의 다른 글

[SEED labs]Writing Programs to Sniff and SPoof Packets  (0) 2021.05.20
PCAP 패킷 관리 라이브러리  (0) 2021.05.20
[SEED Labs]Packet Spoofing  (3) 2021.05.12
[SEED Labs]Packet Sniffing  (0) 2021.05.10
[네트워크]TCP에 관하여  (0) 2021.04.08
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함