在arch系统的安装过程中,我因为个人的网络环境而有设置静态ip的需求,因而没有选用
dhcpcd
服务来获取动态ip在此记录设置静态ip过程中的思路与一些工具的使用,还有永久固定静态ip的方法
前置知识#
排查网络连接问题#
1. 网络接口网卡设备可见且已经启用 1. ip link 2. ip link set 网卡名 up 2. 已经连接到网络. 网线已经接好 或者已经连接到无线局域网 3. 网络接口设备拥有一个ip地址 4. 路由表设置正确 6. 可以ping通一个本地ip地址 例如默认网关 7. 可以ping通一个公网ip地址 例如8.8.8.8 谷歌的DNS服务器 8. 检查是否能解析域名 例如baidu.com
Ping#
ping
用于测试是否可以连接到某个主机$ ping www.example.com PING www.example.com (93.184.216.34): 56(84) data bytes 64 bytes from 93.184.216.34: icmp_seq=0 ttl=56 time=11.632 ms 64 bytes from 93.184.216.34: icmp_seq=1 ttl=56 time=11.726 ms 64 bytes from 93.184.216.34: icmp_seq=2 ttl=56 time=10.683 ms ...
如果没有收到回应,原因可能与你的默认网关配置或者你的网络接入服务商(ISP)有关。
iproute2使用#
iproute2
是base
元包 的依赖,提供 ip 命令行接口,用于管理 网络接口,IP 地址 和 路由表。注意使用 ip 进行的配置会在重启后丢失。要进行永久配置,可以使用 网络管理器 或通过脚本和 systemd 单元 使 ip 命令自动化。同时需要注意的是 ip 命令通常能够缩写,为了清楚起见,本文对其进行了详细说明。网络接口#
默认情况下, udev 使用 可预测的网络接口名称 分配给你的网络接口,该名称以 en (有线/以太网) ,wl (无线/WLAN) 或 ww (WWAN) 。
列出网络接口#
有线和无线接口名称都可以通过
ls /sys/class/net
或ip link
找到。要注意的是 lo 是 Loop 设备 ,不被用于建立网络连接。启用禁用网络接口#
ip link set 'interface'网络接口名 up|down
启用与禁用网络接口
列出IP地址#
ip address show
将IP地址添加到接口#
ip address add address地址/prefix_len子网掩码长度 broadcast 广播范围 + dev interface网络接口
+
是使 ip 从 IP 地址和子网掩码派生 broadcast address 的特殊符号例如
ip address add 192.168.3.18/24 broadcast 192.168.3.255 dev wlo1
或ip address add 192.168.3.18/24 broadcast + dev wlo1
address
可缩写为addr
实际操作中省略广播貌似可行将IP地址从接口中删除#
ip address del address/prefix_len dev interface
删除某个特定接口的地址
ip address flush dev interface
列出路由表#
列出
IPV4
路由ip route show
列出
IPV6
路由ip -6 route
添加路由表,即网关#
ip route add PREFIX via address dev interface
一般默认
PREFIX
为default
例如ip route add default via 192.168.3.1 dev wlo1
网关ip一般为
网段.1
或网段.254
删除路由表#
ip route del PREFIX via address dev interface
删除某接口所有路由表
ip route flush dev wlo1
现在我们正式开始设置静态ip
手动设置静态IP地址#
ip address add 192.168.3.18/24 broadcast 192.168.3.255 dev wlo1 ip route add defalut via 192.168.3.254 dev wlo1
编辑
/etc/resolv.conf
添加DNS服务器nameserver 192.168.3.254
也可改为一些公共dns
永久固定ip#
每次重启都得手动执行命令就显得有些麻烦。因此通过系统服务与脚本来固定ip地址
首先先为
systemd
服务创建一个网络设定的配置 以网络接口设备名取代以下的interface
vim /etc/conf.d/network@interface -------------------------------- address=192.168.3.18 netmask=24 broadcast=192.168.3.255 gateway=192.168.3.254
具体ip与网关根据个人设置
建立
systemd unit
档案vim /etc/systemd/system/network@.service --------------------------------------- [Unit] Description=Network connectivity (%i) Wants=network.target Before=network.target BindsTo=sys-subsystem-net-devices-%i.device After=sys-subsystem-net-devices-%i.device [Service] Type=oneshot RemainAfterExit=yes EnvironmentFile=/etc/conf.d/network@%i ExecStart=/usr/bin/ip link set dev %i up ExecStart=/usr/bin/ip addr add ${address}/${netmask} broadcast ${broadcast} dev %i ExecStart=/usr/bin/sh -c 'test -n ${gateway} && /usr/bin/ip route add default via ${gateway}' ExecStop=/usr/bin/ip addr flush dev %i ExecStop=/usr/bin/ip link set dev %i down [Install] WantedBy=multi-user.target
启用该
unit
并将其启用,加入网络接口名称systemctl enable network@网络接口.service systemctl start network@网络接口.service
至此结束
Arch系linux静态ip设置与固定
·339 字·2 分钟