Linux系统下网络配置方法

来自ARM Wiki
跳转至: 导航搜索

对于busybox、debian、ubuntu系统,大多数网络设置可以通过/etc/network/interfaces配置文件完成。系统启动时通过/etc/init.d/networking服务中的ifup程序来解析/etc/network/interfaces配置文件。若接口设置为dhcp方式则会调用系统下的DHCP客户端程序udhcpc或dhclient来动态获取IP。

使用DHCP自动配置接口

编辑/etc/network/interfaces,参考设置如下:

auto eth0
iface eth0 inet dhcp

重启networking服务生效

/etc/init.d/networking restart

网络接口可以通过命令查看

$ ls /sys/class/net/
eth0  eth1  lo

手动配置接口

编辑/etc/network/interfaces,参考设置如下:

auto eth0
iface eth0 inet static
    address 192.168.0.10
    gateway 192.168.0.1
    netmask 255.255.255.0
    broadcast 192.168.0.255

重启networking服务生效

/etc/init.d/networking restart

设置DNS

/etc/resolv.conf中的DNS列表为其他程序、库最终使用的DNS列表,该文件会被resolvconf、network-manager及DHCP客户端修改覆盖,建议直接编辑/etc/network/interfaces,并确认系统下安装了resolvconf程序,通过以下命令确认。

$ which resolvconf
/sbin/resolvconf

编辑/etc/network/interfaces,参考设置如下:

dns-nameservers 1.2.4.8 114.114.114.114

重启networking服务生效

/etc/init.d/networking restart

NetworkManager

有桌面的debian、ubuntu系统默认安装了network-manager,会进一步管理网络,在系统启动时通过/etc/init.d/network-manager启用。有桌面的系统,一般直接从桌面设置网络即可。若从/etc/network/interfaces中进行配置,对于interfaces中声明过的网络接口NetworkManager默认不再管理,重启NetworkManager服务,会看到桌面上NetworkManager菜单中相应的网络接口显示“device not managed”

/etc/init.d/network-manager restart

若仍需要管理该网络接口,则设置/etc/NetworkManager/NetworkManager.conf中managed为true

[ifupdown]
managed=true

也可以通过卸载network-manager来自己管理网络

apt-get remove network-manager --purge

海思 busybox

海思主板的linux系统使用的busybox文件系统比较精简,没有/etc/network/interfaces配置文件,系统默认在/etc/init.d/S*_norco中用ifconfig命令配置了静态IP。
配置动态IP使用udhcpc命令,参考如下:

udhcpc -i eth0

配置为静态IP及网关使用ip命令,参考如下:

ip addr add 192.168.0.10/24 brd + dev eth0
ip route add default via 192.168.0.1 dev eth0

设置DNS,若设置动态IP,则udhcpc会动态创建/etc/resolv.conf,若设置静态IP,可直接编辑/etc/resolv.conf

nameserver 1.2.4.8
nameserver 114.114.114.114

rockchip buildroot

buildroot构建的busybox文件系统,在/etc/init.d/S40network中调用ifup命令,解析/etc/network/interfaces配置文件。此外系统下/etc/init.d/S41dhcpcd调用DHCP客户端程序dhcpcd对网络进一步管理。
配置静态IP、网关及DNS也可以通过编辑/etc/dhcpcd.conf,参考如下:

interface eth0
static ip_address=192.168.0.10/24
static routers=192.168.0.1
static domain_name_servers=1.2.4.8 114.114.114.114

imx6 debian9

系统安装了connman来进一步管理网络,接管了DNS的设置,安装resolvconf也无法解析/etc/network/interfaces中的DNS设置,可以卸载connman来自己管理网络。

apt-get remove connman --purge

若在/etc/network/interfaces中指定了网络接口获取dhcp,系统启动时有若干systemd服务在一直前台等待网络正常可能造成阻塞,可编辑/etc/network/interfaces为

allow-hotplug eth0
iface eth0 inet dhcp

imx8 yocto

系统的init system使用systemd,系统下没有/etc/init.d/networking及/etc/network/interfaces来管理网络,使用了connman来管理网络。
获取有线网络列表

$ connmanctl services
*AO Wired                ethernet_06ee12e6d6cd_cable

设置静态IP、网关及DNS

$ connmanctl config ethernet_06ee12e6d6cd_cable --ipv4 manual 192.168.0.10 255.255.255.0 192.168.0.1
$ connmanctl config ethernet_06ee12e6d6cd_cable --nameservers 1.2.4.8 114.114.114.114

添加.config来保存设置,新建/var/lib/connman/eth.config

[service_eth]
Type = ethernet
IPv4 = 192.168.0.10/255.255.255.0/192.168.0.1
Nameservers = 1.2.4.8,114.114.114.114

多网络接口

对有NetworkManager的系统,网络会自动选择。NetworkManager会给对应的网络接口都设置默认网关,但metric值不同,以太网比无线网的metric值要低,选择使用以太网。在NetworkManager检测到以太网被down下去,则使用无线网接口。
以下提供一些网络管理命令供参考:

ip route show
ip route add default via 192.168.0.1 dev eth0 metric 10
ip route del default via 192.168.0.1
ip link show
ip link set eth0 down
ip link set eth0 up
ip addr show