linux ens4 网络接口停止和启动

linux ens4 网络接口停止和启动

当我在 google vm 中使用 ifconfig ens4 down 和 ifconfig ens4 up 时,连接没有返回,并且保持断开状态

sudo -s
apt install screen
screen -s test sh start.sh
ctrl + a + d
echo "1"
ifconfig ens4 up
sleep 5
echo "2"
ifconfig ens4 down
sleep 5
echo "3"
sleep 5
ifconfig ens4 up
echo "4"

ifconfig ens4 down 后停止,不要执行 ifconfig ens4 up

所以我重新启动谷歌云控制台面板以恢复正常

我需要关闭它然后再打开以使机器处于桥接模式,但是当 ens4 关闭时它就会停止工作,即使使用 screen -s test sh start.sh;

我也尝试

ip link set dev ens4 up

我更新:linux bridge.sh 连接丢失

答案1

当接口关闭时,与此接口上的 IP 地址相关联的任何手动路由都将被删除。当接口启动时,这些手动路由(肯定包括默认路线仍丢失。

为了现代性,我将使用ifconfig ens4 down完整语法ip link set dev ens4 down替换任何出现的ifconfig ens4 upip link set dev ens4 up

假设ens4应分配 192.0.2.2/24,并使用 192.0.2.1 作为网关的默认路由。


当前问题

添加地址:

ip address add 192.0.2.2/24 dev ens4

管理上启动接口:

ip link set dev ens4 up

noprefixroute如果地址中没有选项,则proto kernel在管理启动接口时会自动(=>)添加此路由:

192.0.2.0/24 dev ens4 proto kernel scope link

(如果命令是,ip address add dev 192.0.2.2/24 dev ens4 noprefixroute那么配置也必须手动添加路线,例如ip route add 192.0.2.0/24 dev ens4。)

添加默认路由:

ip route add default via 192.0.2.1 dev ens4

再次打开接口根本没有效果。现在,一旦关闭接口,任何需要其地址的路由都会消失(连锁效应):192.0.2.0/24,因此默认路由,因为它依赖于到 192.0.2.1 的路由。

一旦接口再次启动,只有自动(原始内核作用域链接路由恢复,而不是手动添加的默认路由:连接仍然丢失。只需再次添加此默认路由:

ip link set dev ens4 up
ip route add default via 192.0.2.1 dev ens4

关于桥接

假设有一座桥叫做bridge0

ip link add name bridge0 type bridge
ip link set dev bridge0 up

当接口成为桥接端口时,会出现类似的情况:

ip link set dev ens4 master bridge0

此接口的路由停止:在此接口上接收的数据包被转发到网桥,而不再转发到 IPv4 路由层(详细信息请参见此处博客,查看项目 5)。但同时,如果没有删除,接口上仍会保留一条已定义的路由,这可能会使网络堆栈对传出的数据包、严格反向路径转发等产生混淆。

因此最好在之前删除所有地址(=> 也自动删除路由),例如:

ip address flush dev ens4

并将其添加到网桥中,以及默认路由:

ip address add 192.0.2.2/24 dev bridge0
ip route add default via 192.0.2.1 dev bridge0

所有这些步骤都会中断网络几秒钟,因此应该自动执行,通过控制台访问,甚至在屏幕层。

相关内容