如何通过ifconfig添加路由,轻松解决网络连接问题?
- 内容介绍
- 文章标签
- 相关推荐
为什么网络会不通?常见痛点
很多小伙伴在日常使用 Linux 时会遇到以下困扰:
- 无法 ping 通外部地址,提示 “Network is unreachable”
- 内网主机可以访问。但访问互联网时超时或丢包
- 刚刚配置的 IP 地址看似正常,却仍然无法上网
- 路由表显示缺少关键目标网络,导致流量走错出口
这些问题往往源于路由表没有正确指向目标网络的下一跳。
再看第一步先。检查网络接口状态
在添加路由之前,先确认本机的网卡是否已经ขึ้น IP、掩码还有状态正常。
$ ifconfig -a
再看eth0,flags=4163 mtu 1500
inet 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::a00:27ff:fe4e:66a1 prefixlen 64 scopeid 0x20
er 08:00:27:4e:66:a1 txqueuelen 1000
RX packets 12456 bytes 9876543
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 8765 bytes 654321
TX errors 0 dropped 0 overruns 0 carrier 0 collisions
从lo来看。flags=73 mtu=65536
inet 127.0.0.1 netmask=ffffffff
...
痛点对应:
-
如果看不到
或没有分配到期望的 IP,说明接口未启动或 IP 配置错误。 -
ifconfig输出中没有对应子网(如192.168.x.x/24) 时需要先用ifconfig eth0 ip netmask配置好基础地址。
用 ifconfig 配置基础 IP 地址与子网掩码
$ sudo ifconfig eth0 down
$ sudo ifconfig ethotup
$ sudo ifconfig ethotup
$ sudo ifconfig ethotup
$ sudo ifconfig ethotup
$ sudo ifconfig ethotup $ sudo ifconfig ethotup $ sudo ifconfignetwork-scripts/ifcfg-etho $ sudo ip link set dev etho up $ sudo ip address add dev ethoooot /etc/syscoonfig/network-scripts/ifcfg-etho

用 ip addr 配置更现代的方式
$ sudo ip addr add dev etho ooot /etc/syscoonfig/network-scripts/ifcfg-etho
痛点:明明已经有了正确的 IP 和掩码,却仍然 ping 不通目标子网。
再看方法一,使用传统 route 命令
$ sudo route add -net ooot /etc/syscoonfig/network-scripts/ifcfg-etho ooot via ooot dev etho ooot
-
-net 指定要添加的是整个子网;不过,-gw 指定下一跳;-dev 指定经由哪块 NIC 转发;老实说,若省略 -dev,程序会自行根据现有路由选择出口。
-
-net 同上;via 指定下一跳地址,dev 指定出站接口。老实说,
oiu 的流量经 ethi 转发到 gateway
ptptptptptptptpt/////////// _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ >/////////////////////////////////////////////////////////////////_
bash
sudo ip route add oiuu/uu via uuuu.dev ehi
sudo ip route show | column -t
bash
`
为什么网络会不通?常见痛点
很多小伙伴在日常使用 Linux 时会遇到以下困扰:
- 无法 ping 通外部地址,提示 “Network is unreachable”
- 内网主机可以访问。但访问互联网时超时或丢包
- 刚刚配置的 IP 地址看似正常,却仍然无法上网
- 路由表显示缺少关键目标网络,导致流量走错出口
这些问题往往源于路由表没有正确指向目标网络的下一跳。
再看第一步先。检查网络接口状态
在添加路由之前,先确认本机的网卡是否已经ขึ้น IP、掩码还有状态正常。
$ ifconfig -a
再看eth0,flags=4163 mtu 1500
inet 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::a00:27ff:fe4e:66a1 prefixlen 64 scopeid 0x20
er 08:00:27:4e:66:a1 txqueuelen 1000
RX packets 12456 bytes 9876543
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 8765 bytes 654321
TX errors 0 dropped 0 overruns 0 carrier 0 collisions
从lo来看。flags=73 mtu=65536
inet 127.0.0.1 netmask=ffffffff
...
痛点对应:
-
如果看不到
或没有分配到期望的 IP,说明接口未启动或 IP 配置错误。 -
ifconfig输出中没有对应子网(如192.168.x.x/24) 时需要先用ifconfig eth0 ip netmask配置好基础地址。
用 ifconfig 配置基础 IP 地址与子网掩码
$ sudo ifconfig eth0 down
$ sudo ifconfig ethotup
$ sudo ifconfig ethotup
$ sudo ifconfig ethotup
$ sudo ifconfig ethotup
$ sudo ifconfig ethotup $ sudo ifconfig ethotup $ sudo ifconfignetwork-scripts/ifcfg-etho $ sudo ip link set dev etho up $ sudo ip address add dev ethoooot /etc/syscoonfig/network-scripts/ifcfg-etho

用 ip addr 配置更现代的方式
$ sudo ip addr add dev etho ooot /etc/syscoonfig/network-scripts/ifcfg-etho
痛点:明明已经有了正确的 IP 和掩码,却仍然 ping 不通目标子网。
再看方法一,使用传统 route 命令
$ sudo route add -net ooot /etc/syscoonfig/network-scripts/ifcfg-etho ooot via ooot dev etho ooot
-
-net 指定要添加的是整个子网;不过,-gw 指定下一跳;-dev 指定经由哪块 NIC 转发;老实说,若省略 -dev,程序会自行根据现有路由选择出口。
-
-net 同上;via 指定下一跳地址,dev 指定出站接口。老实说,
oiu 的流量经 ethi 转发到 gateway
ptptptptptptptpt/////////// _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ >/////////////////////////////////////////////////////////////////_
bash
sudo ip route add oiuu/uu via uuuu.dev ehi
sudo ip route show | column -t
bash
`

