Ubuntu 가상 머신을 GNS3 시뮬레이션 네트워크에 연결하는 방법

Ubuntu 가상 머신을 GNS3 시뮬레이션 네트워크에 연결하는 방법

Ubuntu VM에 설치된 모니터링 소프트웨어를 사용하여 Ubuntu VM에도 설치된 GNS3로 시뮬레이션된 네트워크를 관리하고 싶습니다.

내 가상 머신의 인터페이스는 다음과 같습니다.

docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:01:73:bd:8e  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.221.143  netmask 255.255.255.0  broadcast 192.168.221.255
        inet6 fe80::5f6a:96d3:65b9:4fe0  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:96:7f:80  txqueuelen 1000  (Ethernet)
        RX packets 408  bytes 440051 (440.0 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 303  bytes 35261 (35.2 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 166  bytes 16050 (16.0 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 166  bytes 16050 (16.0 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:f8:73:7f  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

GNS3의 네트워크에는 다음 토폴로지를 갖는 두 개의 라우터가 있습니다.

여기에 이미지 설명을 입력하세요.

가상 브리지 인터페이스 virbr0:192.168.122.1을 사용하여 두 개의 라우터 R1과 R2를 VM Ubuntu와 연결했습니다. 토폴로지의 클라우드는 Ubuntu VM 호스트에 대한 연결을 나타냅니다.

R1과 R2에서 OSPF 라우팅 프로토콜을 사용하고 있습니다.

R1의 라우팅 테이블:

R1#sh ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is 192.168.122.1 to network 0.0.0.0

C    192.168.122.0/24 is directly connected, GigabitEthernet0/0
     10.0.0.0/8 is variably subnetted, 3 subnets, 2 masks
O       10.0.0.2/32 [110/2] via 10.1.1.2, 00:11:04, GigabitEthernet1/0
C       10.1.1.0/24 is directly connected, GigabitEthernet1/0
C       10.0.0.1/32 is directly connected, Loopback0
S*   0.0.0.0/0 [1/0] via 192.168.122.1

R2 라우팅 테이블:

R2#sh ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is 10.1.1.1 to network 0.0.0.0

S    192.168.122.0/24 [1/0] via 10.1.1.1
     10.0.0.0/8 is variably subnetted, 3 subnets, 2 masks
C       10.0.0.2/32 is directly connected, Loopback0
C       10.1.1.0/24 is directly connected, GigabitEthernet0/0
O       10.0.0.1/32 [110/2] via 10.1.1.1, 00:32:36, GigabitEthernet0/0
O*E2 0.0.0.0/0 [110/1] via 10.1.1.1, 00:32:36, GigabitEthernet0/0

R1과 R2 사이의 통신은 정상입니다. 예를 들어 서로의 루프백 인터페이스를 ping할 수 있습니다.

R1은 virbr0 인터페이스 192.168.122.1로 PING을 할 수 있습니다. R2는 R1의 g0/0(IP 192.168.122.2)로 PING할 수 있지만 virbr0 IP 192.168.122.1로 PING할 수 없습니다.

Ubuntu VM 호스트에서 경로는 다음과 같습니다.

$ ip route
default via 192.168.221.2 dev ens33 proto dhcp metric 100 
169.254.0.0/16 dev ens33 scope link metric 1000 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 
192.168.221.0/24 dev ens33 proto kernel scope link src 192.168.221.143 metric 100

Ubuntu VM에서 R1 및 R2의 루프백 인터페이스를 핑할 수 있지만 출력 인터페이스를 설정한 경우에만 가능합니다.

$ ping -I virbr0 10.0.0.2
PING 10.0.0.2 (10.0.0.2) from 192.168.122.1 virbr0: 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_seq=1 ttl=254 time=50.6 ms
64 bytes from 10.0.0.2: icmp_seq=2 ttl=254 time=29.2 ms

Ubuntu VM은 라우터 R2(Lo:10.0.0.2)로부터 PING 요청을 수신하는 것처럼 보이지만 PING 응답을 반환하는 데 사용할 인터페이스를 알지 못합니다.

또한 Ubuntu VM의 PING 요청에도 동일한 문제가 있습니다. PING 요청에 사용되는 인터페이스를 표시해야 합니다.

virbr0을 통해 정적 경로를 추가할 수 있습니다.

IP route add 10.0.0.0/24 via 192.168.122.1 dev virbr0

그러나 이는 특정 네트워크에서만 작동하는 솔루션이며 IP 할당이 다른 일반적인 시나리오에서는 작동하지 않습니다. 또한 이 특정 네트워크에서 이 솔루션을 사용하면 소스 IP 10.0.0.2를 나타내는 R2에서 PING을 수행해야 하는데 이는 바람직하지 않습니다.

VM이 R1의 인터페이스 g0/0에 직접 연결할 수 있도록 최고의 Ubuntu VM을 GNS3 네트워크에 통합하고 싶습니다.

Ubuntu VM에서 OSPF 라우팅 프로토콜을 사용하는 것이 가능하고 VM과 라우터 간의 통신 문제를 해결할 수 있는지 궁금합니다.

답변1

당신이 언급했듯이 이것은 다음과 같습니다.

Ubuntu VM에서 R1 및 R2의 루프백 인터페이스를 핑할 수 있지만 출력 인터페이스를 설정한 경우에만 가능합니다.

다음과 같은 이유로 사실입니다:

VM(VM)은 PING 응답을 반환하는 데 사용할 인터페이스를 모릅니다.

가상 머신에는 10.xxx IP에 대한 특정 경로가 없기 때문에 이러한 패킷을 default"기본적으로 192.168.221.2 dev ens33을 통해" 게이트웨이로 보냅니다.

10.xxx에 대한 패킷을 보낼 위치를 알 수 있도록 가상 머신에 경로가 있어야 합니다. 이것이 바로 다음을 추가하면 모든 것이 제대로 작동하는 이유입니다.

IP route add 10.0.0.0/24 via 192.168.122.1 dev virbr0

10.0.0.0/16예를 들어 언급한 "특정 네트워크" 문제를 극복하는 데 도움이 되는 경우(그리고 전체 10.xxx 네트워크가 다른 곳에서는 사용되지 않는다고 가정할 경우) 이 경로에 "더 넓은" 범위를 추가할 수도 있습니다.

수동으로 경로를 추가하는 것을 방지하기 위해 두 가지 가능한 솔루션을 생각해 볼 수 있습니다. (둘 중 하나도 수행하지 않았으므로 세부 정보를 제공할 수는 없지만 도움이 될 경우 언급하겠습니다.)

  • 언급한 대로 Linux VM에서 OSPF를 활성화해 볼 수 있습니다(Quagga를 사용할 수도 있음). 이에 대한 일부 정보는 다음과 같습니다.여기

  • 활성화된 DHCP 서비스에서 다음 을 추가할 수 있습니다 g0/0.R1옵션(33 또는 121) DHCP 클라이언트로 경로 보내기(DHCP 서버가 이 기능을 제공하는 경우)

관련 정보