我刚刚启动了一个新的虚拟化 Ubuntu 机器(映像文件:ubuntu-18.04-server-cloudimg-amd64.img),当它启动时,它自动创建了一个连接到主机的接口:
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)
RX packets 816060 bytes 59441737 (59.4 MB)
RX errors 0 dropped 39912 overruns 0 frame 0
TX packets 775552 bytes 66017744 (66.0 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
root@ubuntu:~#
IPv4 和 MAC 地址由主机分配,我可以使用 192.0.2.100 IP 地址顺利通过 SSH 进入 Ubuntu VM。界面运行良好。
到目前为止一切顺利。但我需要创建另外两个接口,所以我使用“ifconfig”来创建:
root@ubuntu:~# ifconfig ens4 10.0.0.10/24
root@ubuntu:~# ifconfig ens5 10.10.10.200/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.200 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:~#
请注意,新的接口必须使用这些分配的 IP,我不能依赖 DHCP 获取地址。
我注意到,从 10.10.10.x 网络上的其他服务器,我可以 ping 10.10.10.200 上的 Ubuntu VM。因此,网络第 3 层正在运行。
问题就在这里……虽然我可以 ping 10.10.10.200,但我无法对同一 IP 地址执行 SSH、FTP、netcat 或任何 TCP 操作。尝试连接超时。当我在 Ubuntu 上使用 tcpdump 时,我可以看到 TCP 握手的开始,但看起来连接从未建立:
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:~#
此时,我假设问题在于我如何创建新的 ens4 和 ens5 接口;我只是使用了带有最少选项的“ipconfig”命令:
root@ubuntu:~# ifconfig ens4 10.0.0.10/24
root@ubuntu:~# ifconfig ens5 10.10.10.200/24
我知道在 RedHat 中,接口被分配了安全级别或区域等,如果你想让所有流量都通过接口,你必须确保这些设置是正确的。但我似乎在 Ubuntu 世界中找不到任何类似的信息。
那么...我是否采取了过于简单的方法来创建这些界面?有没有更好的方法?或者我的困境是由其他原因造成的?
非常感谢!