网络服务(4)——以太网配置IP、网关

博客介绍了以太网自启动配置服务,包括buildroot的自动分配IP、静态IP及源码修改patch,以及ubuntu和debian的network manager、netplan。还阐述了手动配置的方法,如使用ifconfig、IP、nmcli指令,并列举了nmcli常用指令及网络配置示例,最后提及了route表。

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

以太网自启动配置服务

buildroot

/etc/network/interfaces

自动分配IP

auto eth0
iface eth0 inet dhcp

(当前使用的系统在配置了dhcp之后,如果获取不到IP,会影响到桌面显示)

静态IP

auto eth0
iface eth0 inet static
address 192.168.0.232
gateway 192.168.0.1
netmask 255.255.255.0

buildroot源码修改patch

diff --git a/buildroot/package/ifupdown-scripts/ifupdown-scripts.mk b/buildroot/package/ifupdown-scripts/ifupdown-scripts.mk
index fc4d51bda..52d0b803b 100644
--- a/buildroot/package/ifupdown-scripts/ifupdown-scripts.mk
+++ b/buildroot/package/ifupdown-scripts/ifupdown-scripts.mk
@@ -8,6 +8,12 @@ define IFUPDOWN_SCRIPTS_LOCALHOST
        ( \
                echo "# interface file auto-generated by buildroot"; \
                echo ; \
+               echo "auto eth0"; \
+               echo "iface eth0 inet static"; \
+               echo "address 192.168.0.232"; \
+               echo "gateway 192.168.0.1"; \
+               echo "netmask 255.255.255.0"; \
+               echo ; \
                echo "auto lo"; \
                echo "iface lo inet loopback"; \
        ) > $(TARGET_DIR)/etc/network/interfaces

ubuntu & debian

参考链接:
https://blog.youkuaiyun.com/qq_18376583/article/details/128353450
https://blog.youkuaiyun.com/banyejiu/article/details/114433836
https://blog.youkuaiyun.com/weixin_43669941/article/details/107893322

network manager
netplan

手动配置

ifconfig指令

设置IP 地址
ifconfig eth0 192.168.1.120

修改mac 地址
ifconfig eth0 hw ether 08:90:90:90:90:90

设置子网掩码
ifconfig eth0 netmask 255.255.255.0

设置广播地址
ifconfig eth0 broadcast 192.168.1.120

添加默认网关
route add default gw 192.168.1.1

删除默认网关
route del default gw 192.168.1.1

IP指令

ip -4 address flush dev usb0
ip -4 address add 10.186.0.187/29 dev usb0
ip -4 route add default via 10.186.0.188 dev usb0



ip -4 address flush dev enxf6214ac2aa73
ip -4 address add 192.168.42.2/29 dev enxf6214ac2aa73
ip -4 route add default via 192.168.42.2 dev enxf6214ac2aa73

nmcli指令

参考链接:https://blog.youkuaiyun.com/wq1205750492/article/details/124497231

红帽、CentOS 7、Ubuntu、debian等系统中默认的网络服务可以通过 NetworkManager管理。这是动态控制及配置网络的守护进程,它用于保持当前网络设备及连接处于工作状态,同时也支持传统的 ifcfg 类型的配置文件。

NetworkManager 可以管理多种网络类型:Ethernet,VLANS,Bridges,Wi-Fi,移动网络等。

NetworkManager 可以配置网络别名,IP 地址,静态路由,DNS,VPN以及很多其它的特殊参数。

对应的网络管理命令行工具,nmcli – command-line tool for controlling NetworkManager。

常用指令:
1、nmcli:查看网络接口ip等信息

linaro@linaro-alip:~$ nmcli
eth0: 连接中(正在获取 IP 配置) to eth0
        "eth0"
        ethernet (rk_gmac-dwmac), 0A:CE:C0:5A:A1:56, 硬件, mtu 1500

eth1: 不可用
        "eth1"
        ethernet (rk_gmac-dwmac), D2:8A:B5:89:42:A6, 硬件, mtu 1500

can0: 未托管
        "can0"
        can (rockchip_canfd), 硬件, mtu 16

can1: 未托管
        "can1"
        can (rockchip_canfd), 硬件, mtu 16

lo: 未托管
        "lo"
        loopback (unknown), 00:00:00:00:00:00, 软件, mtu 65536

使用 "nmcli device show" 获取关于已知设备的完整信息,以及
"nmcli connection show" 获取活动连接配置集的概述。

完整的用法细节,可参考 nmcli(1) 和 nmcli-examples(5) 手册页。

2、nmcli device status:查看网络设备状态

linaro@linaro-alip:~$ nmcli device status
DEVICE  TYPE      STATE   CONNECTION
eth0    ethernet  已连接  eth0
eth1    ethernet  不可用  --
can0    can       未托管  --
can1    can       未托管  --
lo      loopback  未托管  -

3、nmcli device show:查看网络设备详细信息

linaro@linaro-alip:~$ nmcli device show
GENERAL.DEVICE:                         eth0
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         0A:CE:C0:5A:A1:56
GENERAL.MTU:                            1500
GENERAL.STATE:                          100(已连接)
GENERAL.CONNECTION:                     eth0
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/39
WIRED-PROPERTIES.CARRIER:               开
IP4.ADDRESS[1]:                         172.16.0.161/24
IP4.GATEWAY:                            172.16.0.1
IP4.ROUTE[1]:                           dst = 172.16.0.0/24, nh = 0.0.0.0, mt = 100
IP4.ROUTE[2]:                           dst = 0.0.0.0/0, nh = 172.16.0.1, mt = 100
IP4.DNS[1]:                             8.8.8.8
IP6.ADDRESS[1]:                         fe80::428f:905b:4062:1fa4/64
IP6.GATEWAY:                            --
IP6.ROUTE[1]:                           dst = fe80::/64, nh = ::, mt = 100

GENERAL.DEVICE:                         eth1
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         D2:8A:B5:89:42:A6
GENERAL.MTU:                            1500
GENERAL.STATE:                          20(不可用)
GENERAL.CONNECTION:                     --
GENERAL.CON-PATH:                       --
WIRED-PROPERTIES.CARRIER:               关

GENERAL.DEVICE:                         can0
GENERAL.TYPE:                           can
GENERAL.HWADDR:                         (未知)
GENERAL.MTU:                            16
GENERAL.STATE:                          10(未托管)
GENERAL.CONNECTION:                     --
GENERAL.CON-PATH:                       --
IP4.GATEWAY:                            --
IP6.GATEWAY:                            --

GENERAL.DEVICE:                         can1
GENERAL.TYPE:                           can
GENERAL.HWADDR:                         (未知)
GENERAL.MTU:                            16
GENERAL.STATE:                          10(未托管)
GENERAL.CONNECTION:                     --
GENERAL.CON-PATH:                       --
IP4.GATEWAY:                            --
IP6.GATEWAY:                            --

GENERAL.DEVICE:                         lo
GENERAL.TYPE:                           loopback
GENERAL.HWADDR:                         00:00:00:00:00:00
GENERAL.MTU:                            65536
GENERAL.STATE:                          10(未托管)
GENERAL.CONNECTION:                     --
GENERAL.CON-PATH:                       --
IP4.ADDRESS[1]:                         127.0.0.1/8
IP4.GATEWAY:                            --
IP6.ADDRESS[1]:                         ::1/128
IP6.GATEWAY:                            --
IP6.ROUTE[1]:                           dst = ::1/128, nh = ::, mt = 256

4、nmcli connection show:查看所有连接简略信息

linaro@linaro-alip:~$ nmcli connection show
NAME        UUID                                  TYPE      DEVICE
eth0        59294cec-d46e-48fb-bb12-c91c08afdda9  ethernet  eth0
有线连接 1  5e1c551c-e542-3d13-95df-29d6fd774267  ethernet  --
有线连接 2  6a1985a9-441d-338c-b42c-0a150cadfefd  ethernet  --

5、使用nmcli进行网络配置(以eth0为例)
添加网口配置:

动态获取IP
sudo nmcli c add type ethernet con-name eth0 ifname eth0 ipv4.method auto
静态IP
sudo nmcli c add type ethernet con-name eth0 ifname eth0 ipv4.method manual

设置IP、网关、子网掩码、DNS等

设置IP和子网掩码
sudo nmcli c modify eth0 ipv4.addr 172.16.0.161/24
设置网关
sudo nmcli c modify eth0 ipv4.gateway 172.16.0.1
删除网关
sudo nmcli c modify eth0 ipv4.gateway ""
设置DNS
sudo nmcli connection modify eth0 ipv4.dns 8.8.8.8
删除DNS
sudo nmcli connection modify eth0 -ipv4.dns 114.114.114.114 (注意减号)
配置静态路由?
nmcli connection modify eth0 +ipv4.routes "172.16.0.0/24 10.10.10.1"
设置为动态获取IP
nmcli c modify eth0 ipv4.method auto
设置为静态IP,设置静态地址之前必须先设置IP和掩码
nmcli c modify eth0 ipv4.method manual
网口关闭
nmcli c down eth0
网口开启
nmcli c up eth0

route表

https://zhuanlan.zhihu.com/p/619838356
### Linux 系统中网口网关配置为 0 的处理方法 在 Linux 系统中,如果遇到网口或网关配置为 `0` 的情况,通常意味着未正确分配 IP 地址或者路由表存在问题。以下是针对该问题的具体分析与解决方案。 #### 配置文件检查 Linux网络设备配置文件一般位于 `/etc/sysconfig/network-scripts/` 文件夹下[^1]。对于每个网口对应的配置文件(如 `ifcfg-eth0`),需确认以下参数是否正确设置: - **ONBOOT**: 设置为 `yes` 表示开机自动启用此接口。 - **BOOTPROTO**: 如果希望使用 DHCP 自动获取 IP,则应设为 `dhcp`; 若手动指定静态 IP 则设为 `static`。 - **IPADDR**, **NETMASK**, **GATEWAY**: 当 BOOTPROTO=static 时需要填写具体的数值;而当其等于 dhcp 时这些字段可以留空让系统自行协商获得相应值[^5]。 例如,在一个典型的静态 IP 配置文件中可能看起来像这样: ```bash DEVICE="eth0" BOOTPROTO="static" HWADDR="08:00:07:26:C0:A5" NM_CONTROLLED="no" ONBOOT="yes" TYPE="Ethernet" USERCTL="no" PEERDNS="yes" IPV6INIT="no" # Static configuration below this line. IPADDR="192.168.1.10" NETMASK="255.255.255.0" GATEWAY="192.168.1.1" ``` #### 动态聚合配置中的注意事项 如果是多网口环境并进行了绑定(bonding),则需要注意启动顺序以及状态管理。比如通过 NetworkManager 命令来激活某个作为 slave 的物理端口到 bond 主组里去的操作如下所示[^2]: ```bash nmcli con up bond0-slave-eno4 ``` 这一步骤确保所有的子成员都被正确加入到逻辑组合单元当中从而形成有效的链路层连接路径供上层协议栈调用访问外部资源所用。 #### 关闭防火墙干扰 有时即使完成了上述所有步骤之后仍然无法正常通信可能是由于本地安全策略阻止了必要的数据包交换过程因此有必要临时禁用掉firewalld服务以便排除此类因素的影响[^3]: ```bash systemctl stop firewalld ``` #### 重启网络服务使更改生效 最后不要忘记重新加载整个系统的网络设定以应用刚才所做的调整动作特别是在基于Debian系发行版上的做法会有所不同一点因为它们采用的是另一种机制来进行全局性的刷新工作即执行下面这条指令即可完成全部待办事项列表里的最后一项任务目标达成最终效果呈现给用户查看验证成果如何满足需求期望达到理想状况为止结束本次指导流程[^4]: ```bash /etc/init.d/networking restart ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值