虚拟化 Ubuntu - 我可以通过 SSH 连接到一个接口,但不能连接到另一个接口

虚拟化 Ubuntu - 我可以通过 SSH 连接到一个接口,但不能连接到另一个接口

我最近启动了一个新的 Ubuntu 18.04 虚拟机,使用镜像文件 ubuntu-18.04-server-cloudimg-amd64.img。当虚拟机启动时,已经有一个ens3接口,我的 KVM 主机为其分配了默认的 192.0.2.100/24 IP 地址。

但是我需要两个新的接口,所以我也手动创建了它们。它们分别是ens4和ens5:

root@ubuntu:~# ifconfig ens4 10.0.0.10/24
root@ubuntu:~# ifconfig ens5 10.10.10.20/24
root@ubuntu:~#
root@ubuntu:~# ifconfig
ens3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.0.2.100  netmask 255.255.255.0  broadcast 192.0.2.255
        inet6 fe80::f6a7:39ff:fe24:6fd3  prefixlen 64  scopeid 0x20<link>
        ether f4:a7:39:24:6f:d3  txqueuelen 1000  (Ethernet)
        ...etc...

ens4: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.10  netmask 255.255.255.0  broadcast 10.0.0.255
        inet6 fe80::f6a7:39ff:fe24:6fd2  prefixlen 64  scopeid 0x20<link>
        ether f4:a7:39:24:6f:d2  txqueuelen 1000  (Ethernet)
        ...etc...

ens5: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.10.10.20  netmask 255.255.255.0  broadcast 192.168.71.255
        inet6 fe80::f6a7:39ff:fe24:6fda  prefixlen 64  scopeid 0x20<link>
        ether f4:a7:39:24:6f:da  txqueuelen 1000  (Ethernet)
        ...etc...

root@ubuntu:~#

目前,我仅关注 ens3 和 ens5。我注意到我可以从主机 ping 两个接口:

root@KVMhost:~# ping 192.0.2.100
PING 192.0.2.100 (192.0.2.100) 56(84) bytes of data.
64 bytes from 192.0.2.100: icmp_seq=1 ttl=64 time=0.104 ms
64 bytes from 192.0.2.100: icmp_seq=2 ttl=64 time=0.076 ms
64 bytes from 192.0.2.100: icmp_seq=3 ttl=64 time=0.088 ms
^C
--- 192.0.2.100 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.076/0.089/0.104/0.013 ms
root@KVMhost:~#
root@KVMhost:~# ping 10.10.10.20
PING 10.10.10.20 (10.10.10.20) 56(84) bytes of data.
64 bytes from 10.10.10.20: icmp_seq=1 ttl=64 time=0.216 ms
64 bytes from 10.10.10.20: icmp_seq=2 ttl=64 time=0.158 ms
64 bytes from 10.10.10.20: icmp_seq=3 ttl=64 time=0.100 ms
^C
--- 10.10.10.20 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.100/0.158/0.216/0.047 ms
root@KVMhost:~#

我还可以反向 ping 两个接口。因此网络第 3 层可以正常工作。到目前为止一切顺利。

奇怪的是...使用与上面相同的 IP,我可以从主机 SSH 进入 Ubuntu 的 ens3:

root@KVMhost:~# ssh [email protected]
[email protected]'s password: *******
Welcome to Ubuntu 18.04 LTS (GNU/Linux 4.15.0-20-generic x86_64)

Last login: Thu Jun 13 17:46:15 2019 from 192.0.2.254
ubuntu@ubuntu:~$

但是,当我尝试对 Ubuntu 的 ens5 进行同样的操作时,我无法连接:

root@KVMhost:~# ssh [email protected]
ssh: connect to host 10.10.10.20 port 22: Connection timed out
root@KVMhost:~#
root@KVMhost:~#

我在 Ubuntu 上执行了 TCPdump,然后再次尝试了第二次 SSH 测试,我看到的结果如下:

root@ubuntu:~# tcpdump -i ens5
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens5, link-type EN10MB (Ethernet), capture size 262144 bytes
19:08:05.171265 IP 10.10.10.10.46988 > ubuntu.ssh: Flags [S], seq 4112466036, win 29200, options [mss 1460,sackOK,TS val 2621364955 ecr 0,nop,wscale 9], length 0
19:08:05.171295 IP ubuntu.ssh > 10.10.10.10.46988: Flags [S.], seq 2729080149, ack 4112466037, win 28960, options [mss 1460,sackOK,TS val 3132539741 ecr 2621364955,nop,wscale 7], length 0
19:08:06.171804 IP 10.10.10.10.46988 > ubuntu.ssh: Flags [S], seq 4112466036, win 29200, options [mss 1460,sackOK,TS val 2621365956 ecr 0,nop,wscale 9], length 0
19:08:06.171824 IP ubuntu.ssh > 10.10.10.10.46988: Flags [S.], seq 2729080149, ack 4112466037, win 28960, options [mss 1460,sackOK,TS val 3132540741 ecr 2621364955,nop,wscale 7], length 0
^C
root@ubuntu:~#

因此,来自 KVM 主机的 SSH 数据包成功穿越连接并到达 Ubuntu VM!然而,当我检查/var/log/auth.log日志中,我没有看到主机尝试连接的记录。实际上根本没有任何关于主机尝试连接的记录。

所以,我很困惑。这可能是 Ubuntu 的问题,我必须在新接口上明确启用 SSH?还是这是某种奇怪的虚拟化问题?我有点怀疑是前者。

谢谢!

相关内容