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 네트워크가 다른 곳에서는 사용되지 않는다고 가정할 경우) 이 경로에 "더 넓은" 범위를 추가할 수도 있습니다.
수동으로 경로를 추가하는 것을 방지하기 위해 두 가지 가능한 솔루션을 생각해 볼 수 있습니다. (둘 중 하나도 수행하지 않았으므로 세부 정보를 제공할 수는 없지만 도움이 될 경우 언급하겠습니다.)