Computer Science%/Network

가상 사설 네트워크 망 만들기 (feat. vm router 만들기)

ch4rli3kop 2018. 7. 12. 20:58
반응형
가상 사설 네트워크 망을 만들어 봅시다.

적당히 vmware를 이용해서 구축해보도록 하겠습니다.

구성도는 위와 같습니다. 총 필요한 가상 PC는 3대이상(Router, PC 1, PC 2...) 입니다. 하나는 라우터 역할, 나머지는 그냥 guest입니다.

 우선, 3대의 PC를 설치해줍시다. 저는 ubuntu 16.04 버전으로 진행했습니다. 



네트워크를 구성하는 것에 총 세 개의 스위치가 필요합니다. 기본적으로 NAT용으로 제공되는 VMnet8은 제외하고 VMnet2와 VMnet3를 추가해줍시다. 
두 개의 스위치가 추가되면, 각 각의 Subnet IP와 Subnet mask를 구성해줍니다. 저는 VMnet2의 경우 192.168.65.0, 255.255.255.0으로, VMnet3의 경우 192.168.66.0, 255.255.255.0으로 설정했습니다.

먼저, 라우터로 동작할 리눅스에 위의 그림처럼 세 개의 랜카드(network interface card)를 만들어줍니다.


나머지 guest vm들은 위와같이 각 각 VMnet2와 VMnet3로 network adapter를 설정해줍니다.

자 다시, 라우터용 리눅스로 돌아옵니다.




위와 같이 /etc/network/interfaces를 설정해줍니다. eth0니 eth1이니 하는 것들은 본인의 네트워크 인터페이스에 따라 달라지므로 ifconfig 명령어로 네트워크 인터페이스의 이름을 확인하여 설정해줍니다.
auto [interface name] # 해당 이름을 가진 네트워크 인터페이스를 부팅 시 사용합니다.
iface [interface name] inet [dhcp/static] # 해당 이름을 가진 네트워크 인터페이스 장치를 설정합니다.


만약 본인의 기본 네트워크 인터페이스 이름이 ens33과 같이 되어있을 경우 eth0과 같이 바꾸려면 다음 링크를 참고하도록 합시다.
 

> /etc/init.d/networking restart # 전체 네트워크 설정 다시 시작
혹은
> sudo ifdown eth0 # eth1, eth2에도 적용/ 디바이스 다운
> sudo ifup eth0 # eth1, eth2에도 적용/ 디바이스 구동
스크립트를 사용해서 네트워크 설정을 다시 적용시켜줍니다. 

> ifconfig
를 실행했을 때, eth1과 eth2의 ip가 제대로 설정이 되었는지 확인해봅시다.



위와 같이 적용이 되었다면 다행히 성공적으로 진행되고 있습니다. 



제대로 설정이 되었다면 이제 dns-server를 설치해줍시다.
> sudo apt install dnsmasq

dnsmasq는 리눅스용 local dns cache server입니다. 


> sudo vim /etc/dnsmasq.conf
명령어를 통해 dnsmasq.conf 파일을 수정함으로써 설정을 해줄 수 있습니다.



총 필요한 부분들은 다음과 같습니다.

server = 8.8.8.8@eth0

interface=eth1
interface=eth2

no-dhcp-interface=eth0

dhcp-range=interface:eth1,192.168.65.100,192.168.65.120,12h
dhcp-range=interface:eth2,192.168.66.100,192.168.66.120,12h

dhcp-option=interface:eth1,3,192.168.65.1
dhcp-option=interface:eth2,3,192.168.66.1

dhcp-authoritative

위의 내용들이 dnsmasq.conf 파일에 들어가면 됩니다.


설정이 완료되면 dnsmasq 를 재시작해줍니다.

> sudo service dnsmasq restart


dnsmasq가 정상적으로 실행이 된다면 이제 iptable 을 설정해줍니다.

아 그전에, 특정 인터페이스로 들어온 패킷을 다른 인터페이스로 전달할 수 있도록 하기위한 설정을 해주어야 합니다.

> sudo sysctl -w net.ipv4.ip_forward=1

혹은

/etc/sysctl.conf 파일에서 net.ipv4.ip_forward=1 이 되도록 수정해주시면 됩니다.





다음으로는 iptable을 설정해주면 됩니다. 아래의 명령어들을 통하여 iptable 설정을 완료하도록 합시다.

> sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
> sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
> sudo iptables -A FORWARD -i eth0 -o eth2 -m state --state RELATED,ESTABLISHED -j ACCEPT
> sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
> sudo iptables -A FORWARD -i eth2 -o eth0 -j ACCEPT
> sudo iptables -A FORWARD -i eth1 -o eth2 -m state --state RELATED,ESTABLISHED -j ACCEPT
> sudo iptables -A FORWARD -i eth2 -o eth1 -j ACCEPT




위와 같이 모두 설정을 완료하였다면, 이제 라우터에서의 설정은 끝났습니다.

guest로서 동작할 리눅스에서 설정을 해주도록 합니다.



두 guest에서 모두 위와 같이 설정이 되도록 합니다.

But, guest에서 route에서 default gateway가 설정되지 않았다면
> sudo route add default gw 192.168.65.1 ens33
와 같이 default gateway를 추가해주도록 합니다.


정상적으로 통신이 된다면 성공입니다.


반응형

'Computer Science% > Network' 카테고리의 다른 글

Scapy Example  (0) 2020.05.09
네트워크 공부  (0) 2018.07.15
WPA2 무선랜 해킹  (6) 2018.05.24
PCAPNG 파일  (0) 2017.10.30
패킷과 프레임의 차이  (0) 2017.10.17