Linux 重新获取局域网IP 地址
发布于 2021-12-24
背景
这两天压测一个项目, 结果 Mysql
报了一个很少见到的错误: SQLSTATE[1129] too many connection errors from 172.16.36.41:34364
.
关于这个 mysql 错误的成因和基于 mysql 层面怎么解决, 并不是本文要讨论的问题. 文末会附上一个关于这个问题讨论的链接.
Mysql 是公司的服务器,由专门的运维同学管理,我手上的帐号权限不够,所以要想其他办法绕过这个问题。 通过报错信息,结果自己本机的内网 IP, 能确定被封的是我本机的内网 IP, 那是不是我换一个内网 IP 就可以绕过问题。
实践
方案一: 切换另一个 dhcp
客户端
我的电脑上装有两个 dhcp
客户端, dhclient
和 dhcpcd
.
默认使用的 dhclient
, 这个时候只需要停用 dhclient
, 转为使用 dhcpcd
.
即可以获取到一个新的 IP
地址.
- 查看本机
IP
ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:1d:98:5a:d1:3a brd ff:ff:ff:ff:ff:ff inet 172.16.36.139/24 brd 172.16.36.255 scope global dynamic noprefixroute enp4s0 valid_lft 336229sec preferred_lft 260629sec inet6 fe80::75bc:a2b2:962e:5bd3/64 scope link valid_lft forever preferred_lft forever
- 查看所有网络接口
ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: enp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 00:1d:98:5a:d1:3a brd ff:ff:ff:ff:ff:ff
- 清空
enp4s0
网卡配置sudo ip addr flush enp4s0
- 启用
dhcpcd
客户端sudo systemctl start dhcpcd.service
- 再次使用
ip addr show
查看IP
地址, 确认已获取到新的地址
方案二: 修改网卡 MAC
地址
- 查看所有网络接口和
MAC
地址ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: enp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 00:1d:98:5a:d1:3a brd ff:ff:ff:ff:ff:ff
- 禁用网卡
ip link set dev enp4s0 down
- 修改
MAC
地址ip link set dev enp4s0 address 00:1d:98:5a:d1:3b
- 重新启用网卡
ip link set dev enp4s0 up
- 使用
dhclient
重新获取IP
sudo dhclient -v enp4s0
- 使用
ip addr show
查看IP
地址, 确认一切正常, 获取到了新的地址