보안 실습/linux

[실습]Linux VM 네트워크 구성해보기

이수민 2024. 1. 20. 22:22

 

 

bridged:DHCP, 실제 IP를 할당해준다, 실제 IP를 할당하므로 부하를 준다.

NAT: 매핑, 가상의 IP와 실제 정적IP를 매핑해준다.

host-only: host와 연결되는 네트워크로, 본 실습에서는 host와 vm간의 ssh연결을 위해 사용할 것이다.

LAN Segment: 내부 네트워크, 내부에서 사용하는 네트워크다.

 

 

아래는 실습 구조다.

 

위의 그림과 달리, VM1, 2, 3 모두 NAT 설정이 되어있다면 모두 개별의 랜이겠지만, 

VM1에서만 NAT설정이 되었기 때문에 주요한 랜은 하나이며 내부 네트워크가 각기 다른 VM을 이어주고 있다.

 

그림과 같은 구조를 만들어본다.

 

VM1

host-only, NAT, LAN1(내부네트워크)

 

VM2

Add탭을 누르고, 네트워크 어댑터를 추가한뒤 다음과 같이 세팅을 해준다.

host-only

Adapter1는 LAN2 (내부네트워크)

Adapter3는 LAN1 (내부네트워크) 이다. (실습은 위 아래를 바꾸어 했으나, 실제로는 어댑터1이 LAN1, 어댑터3이, LAN2일 것을 권장한다. 헷갈린다.)

 

VM3

LAN2 (내부네트워크)와 host-only를 사용한다.

 

 

그리고 내부 ifconfig를 하면, 네트워크 어댑터에 따른 정보들이 나온다.(OS 종류마다 네트워크 인터페이스가 다르다)

 

VM1
VM의 ens38, LAN1 세팅 GUI설정

 

Route 설정, 10.0.2.0(LAN2) 로 넘어가는 요청은 모두 10.0.1.2(VM2)로 보낸다.

Address 부분은 ifconfig 할 때 ens38 부분의 ip addr를 10.0.1.1로 세팅한다

 

 

VM2

VM2의 ifconfig

 

LAN1, ens38
LAN2, ens33

 

모든 요청은 10.0.1.1(VM1)로 보낸다.

ip는 LAN1 인터페이스는 10.0.1.2, LAN2 인터페이스 ip addr를 10.0.2.2로 설정한다.

 

 

 

 

VM3

 

VM3 ifconfig
VM3에 있는 모든 요청은 10.0.2.2(VM2)로 보낸다. ip는 10.0.2.3으로 세팅.

다음과 같이 세팅한다.

 

세팅하고 나면 VM1-VM2 / VM2-VM3 끼리 ping이 된다.(내부네트워크 연결이 되어었으므로)

또한, 어느정도 route 설정을 했기 때문에, VM1-VM3과도 연결이 될 것이다. (gateway와 route 설정 등을 통해서)

 

하지만 연결이 되지 않을 것이다.

 

이때 패킷포워딩이 필요하다. VM1-VM2끼리 통신할 때에는 필요가 없으나, VM1과 VM3 간의 패킷 포워딩이 필요하다

 

 

VM1

 

패킷포워딩(ip 포워딩)

sudo sysctl -w net.ipv4.ip_forward=1
sudo echo 1 > /proc/sys/net/ipv4/ip_forward

둘중에 아무 커맨드나 사용해도 된다.

포워딩은 iptables의 input, output chain 말고도 포워딩하는 chain이 있다. 이 체인으로 input, output 을 거쳐가지 않고 forward로 거쳐갈 수 있다.

 

sudo iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE

내부 네트워크의 VM이 외부 네트워크(인터넷)와 통신할 때 자신의 개인 IP 주소를 숨기고, 대신 외부 인터페이스(ens33)의 IP 주소를 사용하여 통신하게 할 수 있는 명령어.

 

 

 

VM2

sudo sysctl -w net.ipv4.ip_forward=1

이 커맨드를 사용하여 두 네트워크 LAN1, 2 간의 포워딩을 해준다.

 

그러면 vm3에서도 NAT없이 인터넷을 연결할 수 있다.