我最近使用映像文件ubuntu-18.04-server-cloudimg-amd64.img启动了一个新的Ubuntu 18.04虚拟机。虚拟机启动时,已经有一个 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 ubuntu@192.0.2.100
ubuntu@192.0.2.100'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 ubuntu@10.10.10.20
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吗?还是这是一些奇怪的虚拟化事情?我有点怀疑前者。
谢谢!