저는 Mac의 VMware Fusion에서 Linux를 실행하고 있습니다. Linux에서는 TAP 장치(아래 링크된 PicoTCP라고 함)를 기반으로 하는 TCP 에코 서버를 사용합니다.https://github.com/tass-belgium/picotcp). 다음 명령을 사용하여 에코 서버를 실행합니다. sudo ./build/test/picoapp.elf --tap tap1:192.168.13.37:255.255.255.0 --app tcpecho:8000
터미널 창에서 다음 명령을 사용하여 에코 서버와 통신할 수 있습니다. sudo ip addr add 192.168.13.38/24 dev tap1 ; sudo ip link set tap1 up;
그 뒤에 다음과 같은 간단한 netcat이 옵니다 nc 192.168.13.37 8000
. 이제 나의 목표는 가상 머신 외부에서 netcat(또는 이에 상응하는 명령)을 실행하여 Mac(또는 동일한 네트워크에 있는 다른 컴퓨터)에서 tcp echo 서버와 통신할 수 있게 되는 것입니다. 어떻게 해야 하나요? 현재 VM 네트워크 카드의 IP 주소나 picotcp 서버 실행 시 지정한 IP 주소(이 경우 192.168.13.37)를 이용하여 netcat을 실행하려고 하면 동작하지 않습니다.
매우 감사합니다! 또한 현재 설정에 대한 추가 정보가 필요하면 알려주시기 바랍니다!
답변1
가지고 있는 네트워크를 이해해야 합니다. 통신이 중지될 수 있는 지점은 여러 개(적어도 2개) 있으며, 외부에서 장치에 액세스하려면 먼저 이러한 지점을 모두 해결해야 합니다.
설명에 따르면 서버가 수신 대기 중인 로컬 컴퓨터에 TAP 장치가 있습니다. 일반적으로 Linux 시스템 외부에서는, 심지어 VMWare 네트워크의 다른 가상 시스템에서도 이 TAP 인터페이스에 액세스할 수 없습니다. 해결책은 TAP를 Linux의 이더넷 인터페이스에 연결하는 것입니다(어리석은 RedHat 솔루션이 없으면 eth0이어야 합니다. 확인하려면 ifconfig를 사용하세요).
따라서 먼저 브리지를 만듭니다.
ip link add br0 type bridge
그런 다음 장치를 브리지에 추가합니다(eth0이어야 한다고 가정한 것처럼 tap0이라고 가정합니다).
ip link set tap0 master br0
ip link set dev eth0 down
ip addr flush dev eth0
ip link set dev eth0 up
ip link set eth0 master br0
그리고 브리지가 작동하는지 확인하세요.
ip link set dev br0 up
이제 동일한 VMWare 가상 네트워크에 있는 가상 머신에서 tap0의 서버에 액세스할 수 있습니다. 두 번째 가상 머신을 시작하여 이를 테스트해야 합니다.
가상 Linux 상자에는 이제 다음과 같은 네트워크가 있습니다.
+------+ +-------+
| tap0 | | eth0 |
+------+ +-------+
| | |
+-------------+ +--------
bridge 0 "outside world"
다음 기사: 이 VMWare 가상 네트워크는 어떻게 외부 세계에 연결됩니까? 이 네트워크가 Mac에서도 연결되어 있습니까? 아니면 이미 NAT인가요? 이 경우 몇 가지 포트 전달 규칙을 제공해야 합니다. 많은 사람들이 VirtualBox를 사용하고 있기 때문에 이것이 VMWare에서 어떻게 작동하는지 잘 모르겠습니다.
VirtualBox에서 "외부 세계"에는 여러 가지가 있을 수 있으며, 가장 중요한 것은 다음과 같습니다.
브리지 어댑터: Tap 인터페이스에서와 마찬가지로 가상 인터페이스는 VirtualBox를 실행하는 호스트의 외부 인터페이스에 브리지됩니다. 가상 머신은 외부적으로 자체 IP 주소를 갖습니다.
NAT: 가상 인터페이스는 NAT(Network Address Translation)를 통해 외부와 연결됩니다. 이것이 대부분의 SOHO DSL 라우터가 인터넷에 연결되는 방식입니다. 외부적으로는 IP 주소가 있으며 외부에서 머신에 액세스하려면 포트 전달을 설정해야 합니다. (절대 이 작업을 수행하지 마십시오. VirtualBox에서 가능한지 확실하지 않습니다.)
호스트 전용: VirtualBox 환경에서만 사용할 수 있는 별도의 네트워크입니다.
따라서 VirtualBox에서는 브리지 어댑터가 가장 적합합니다.
VirtualBox에서 브리징한다고 가정하면 이제 다음과 같은 네트워크가 생성됩니다.
+------+ +-----+ }
| tap0 | | eth0| }
+------+ +-----+ } in your Linux virtual machine
| br0 | | }
+------------+ | }
|
Your host (mac) |
-----------------+ |
| |
+-----------+ physical outside world
| mac's eth0|--------------
+-----------+
주의해야 할 다른 문제는 IP 계획과 서브넷입니다.