《rk3399:基于一个物理网卡设置两个网络接口》

本文介绍了如何在只有一个物理网卡的系统中,利用macvlan技术创建一个虚拟网卡,实现一个接口DHCP获取IP,另一个接口静态IP,详细步骤包括内核配置修改、开机脚本设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、前言

针对需要在系统中(只有一个物理网卡),添加一个虚拟网卡并给定其一个静态IP以供调试使用,同时不影响另一个正常的网卡进行DHCP获取IP的需求,可以在系统中增加一个macvlan虚拟网卡。macvlan 一种虚拟网卡解决方案。

二、什么是macvlan

macvlan 一种虚拟网卡解决方案

三、内核修改配置

可以执行以下命令测试内核是否支持
sudo ip link add macvlan0 link enp1s0 type macvlan mode bridge
如未支持,需要修改内核设置
CONFIG_MACVLAN=y
CONFIG_MACVTAP=y
修改/etc/network/interfaces
增加以下内容,给添加的虚拟网卡设置一个静态IP

auto macvlan0
iface macvlan0 inet static
    address 192.168.200.4
    netmask 255.255.255.0
    #gateway 192.168.1.1
    #dns-nameservers 8.8.8.8
    pre-up ip link add macvlan0 link enp1s0 type macvlan mode bridge
	post-down ip link del macvlan0

四、开机执行脚本

macvlan虚拟网卡是基于网卡enp1s0的,所以必须得enp1s0 up后才能upmacvlan。该脚本开机后检测enp1s0是否up,如果已经up,则up macvlan0。

#!/bin/bash

MAX_RETRIES=10
DELAY_SEC=1

counter=0

while true; do
	if ip link | grep -q enp1s0; then
		break
	fi

	((counter++))
	if [ $counter -eq $MAX_RETRIES ]; then
		echo "Interface not found after maximum attempts. Exiting..."
		exit 1
	else
		echo "Interface not found yet. Waiting for ${DELAY_SEC}s (attempt ${counter})..."
		sleep $DELAY_SEC
	fi
done

# Enable macvlan0 interface
ifup macvlan0

echo "Enabled macvlan0 interface."

exit 0

比如在 rc.local或者其他开机启动脚本中 增加
sudo createMacvlan.sh &
开机自启动 createMacvlan.sh

五、最终效果

enp1s0 DHCP动态获取IP,macvlan0使用静态IP,两者互不影响。
image.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程界的小学生、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值