가상 머신의 네트워크 섹션에서는 VirtualBox가 가상 네트워크 카드를 VM에 제공하는 방법과 작동 방식을 구성할 수 있다. 각 네트워킹 어댑터는 다음 모드 중 하나로 작동하도록 별도로 구성할 수 있다.
방법 | VM→호스트 | VM←호스트 | VM1↔VM2 | VM→Net/LAN | VM←넷/LAN |
---|---|---|---|---|---|
호스트 전용 | + | + | + | – | – |
내부 | – | – | + | – | – |
브리지 | + | + | + | + | + |
NAT | + | 포트 포워드 | – | + | 포트 포워드 |
NAT 서비스 | + | 포트 포워드 | + | + | 포트 포워드 |
출처 : https://www.virtualbox.org/manual/ch06.html
NAT(Network Address Translation)는 가상 머신에서 외부 네트워크에 액세스하는 가장 간단한 방법으로, 이때 NAT 방식으로 연결된 가상머신은 모두 같은 IP가 할당된다.
NAT 모드에서 라우터는 각 가상 머신과 호스트 사이에 배치된다. 따라서 내부의 가상 머신들은 서로 통신할 수 없고, 외부의 호스트에서도 접근이 불가능하다.
하나의 IP 주소와 포트 번호 결합의 통신 요청을 다른 곳으로 넘겨주는 NAT의 응용이다.
NAT는 송신 전용 게이트로 라우터가 없기 때문에 외부에서 내부(인바운드)로 수신이 불가하다. 따라서 수신을 위해서는 포트포워딩 설정을 통해, 호스트의 특정 포트를 통해 들어오는 패킷을 내부의 게스트에게 다시 전달해야 한다.
ssh root@<host IP>
C:\Users\user>ssh root@192.168.0.4
The authenticity of host '192.168.0.4 (192.168.0.4)' can't be established.
ECDSA key fingerprint is SHA256:UtZ1c/AE5Ix2E3+tnW4ITpYcsGGMDBimAW24NS8vMSI.
Are you sure you want to continue connecting (yes/no)?
yes
: known host로 등록C:\Users\user>ssh root@192.168.0.4
root@192.168.0.4's password:
Last login:
[root@localhost ~]# adduser <USER>
[root@localhost ~]# passwd <USER>
Changing password for user <USER>.
New password:
passwd: all authentication tokens updated successfully.
[root@localhost ~]#
DHCP (Dynamic Host Configuration Protocol)
VM 안에도 DHCP 기능 존재 - 자동으로 NAT ip 부여
개별 설정
두개의 호스트 - 10.0.2.
: 같은 네트워크 / 5.
or .4
: 호스트
하나의 ip로 두개의 vm에 접근 가능해야 함 - 도커 컨테이너 !
VM1 접속
C:\Users\user>ssh root@192.168.0.4
root@192.168.0.4's password:
Last login: Tue Apr 5 12:17:01 2022 from 10.0.2.5
[root@localhost ~]#
VM2 접속
-p
: port 번호
C:\Users\user>ssh -p 2222 root@192.168.0.4
root@192.168.0.4's password:
Last login: Tue Apr 5 12:14:31 2022
[root@localhost ~]#
NatNetwork를 사용하는 것이 바람직!
127.0.0.1
는 localhost IP (loopback IP)Host-Only Network의 가상 랜카드를 통해 ping, ssh 가능
포트 포워딩 필요 x
192.168.56.~
: 네트워크가 같음
ping
C:\Users\user>ping 192.168.56.101
Ping 192.168.56.101 32바이트 데이터 사용:
192.168.56.101의 응답: 바이트=32 시간=1ms TTL=64
192.168.56.101의 응답: 바이트=32 시간<1ms TTL=64
192.168.56.101의 응답: 바이트=32 시간<1ms TTL=64
192.168.56.101에 대한 Ping 통계:
패킷: 보냄 = 3, 받음 = 3, 손실 = 0 (0% 손실),
왕복 시간(밀리초):
최소 = 0ms, 최대 = 1ms, 평균 = 0ms
Control-C
^C
C:\Users\user>ping 192.168.56.102
Ping 192.168.56.102 32바이트 데이터 사용:
192.168.56.102의 응답: 바이트=32 시간<1ms TTL=64
192.168.56.102의 응답: 바이트=32 시간<1ms TTL=64
192.168.56.102의 응답: 바이트=32 시간<1ms TTL=64
192.168.56.102에 대한 Ping 통계:
패킷: 보냄 = 3, 받음 = 3, 손실 = 0 (0% 손실),
왕복 시간(밀리초):
최소 = 0ms, 최대 = 0ms, 평균 = 0ms
ssh
C:\Users\user>ping 192.168.56.101
Ping 192.168.56.101 32바이트 데이터 사용:
192.168.56.101의 응답: 바이트=32 시간=1ms TTL=64
192.168.56.101의 응답: 바이트=32 시간<1ms TTL=64
192.168.56.101의 응답: 바이트=32 시간<1ms TTL=64
192.168.56.101에 대한 Ping 통계:
패킷: 보냄 = 3, 받음 = 3, 손실 = 0 (0% 손실),
왕복 시간(밀리초):
최소 = 0ms, 최대 = 1ms, 평균 = 0ms
Control-C
^C
C:\Users\user>ping 192.168.56.102
Ping 192.168.56.102 32바이트 데이터 사용:
192.168.56.102의 응답: 바이트=32 시간<1ms TTL=64
192.168.56.102의 응답: 바이트=32 시간<1ms TTL=64
192.168.56.102의 응답: 바이트=32 시간<1ms TTL=64
192.168.56.102에 대한 Ping 통계:
패킷: 보냄 = 3, 받음 = 3, 손실 = 0 (0% 손실),
왕복 시간(밀리초):
최소 = 0ms, 최대 = 0ms, 평균 = 0ms
인터넷 연결하기 위해 랜카드 하나 더 생성
C:\Users\user> ssh kosa@192.168.0.21
kosa@192.168.0.21's password:
Last login: Tue Apr 5 11:30:15 2022 from gateway
[kosa@localhost ~]$
외부IP사용가능
개별설정 > 네트워크 > 어댑터1 > 어댑터에 브리지
C:\Users\user>ssh kosa@192.168.0.96
kosa@192.168.0.96's password:
Last login: Tue Apr 5 14:35:27 2022 from 192.168.0.4
[kosa@localhost ~]$