网络相关常用命令 - 基于Ubuntu 16.04以上版本
ifconfig — 查看网卡信息
lspci | grep -I eth — 查看网卡硬件
Ethtool <网卡名> —查看网卡详细信息
sudo ip link ls <网卡名> —查看网卡状态
sudo ip link set <网卡名> up —启动网卡
iptables -L -nv —查看防火墙设置
service iptables status —查看防火墙状态
Iptables -F —关闭防火墙
ufw status —ufw防火墙状态
ufw disable —关闭防火墙
/etc/init.d/networking restart —重启网络
service networking restart —重启网络
网卡配置文件: /etc/network/interfaces
DNS配置文件: /etc/resolv.conf 或者 /etc/resolvconf/resolv.conf.d/head 文件
ufw防火墙配置文件: /etc/ufw/before.rules
如果网络Ping不通,从硬件到软件依次检查:
1、使用 ifconfg可以看到目前的卡配置,物理网卡,虚拟网卡等信息,
2、使用lspci | grep -I eth, 如下,看到我的服务器有6块网卡,4块GE和2块10G
root@hs01:~# lspci | grep -i eth
02:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5720 Gigabit Ethernet PCIe
02:00.1 Ethernet controller: Broadcom Corporation NetXtreme BCM5720 Gigabit Ethernet PCIe
03:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5720 Gigabit Ethernet PCIe
03:00.1 Ethernet controller: Broadcom Corporation NetXtreme BCM5720 Gigabit Ethernet PCIe
05:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM57810 10 Gigabit Ethernet (rev 10)
05:00.1 Ethernet controller: Broadcom Corporation NetXtreme II BCM57810 10 Gigabit Ethernet (rev 10)
用ehtool <网卡名>命令来显示网卡详细信息:
root@hs01:~# ethtool eno1
Settings for eno1:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Advertised pause frame use: Symmetric
Advertised auto-negotiation: Yes
Link partner advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Link partner advertised pause frame use: No
Link partner advertised auto-negotiation: Yes
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 1
Transceiver: internal
Auto-negotiation: on
MDI-X: on
Supports Wake-on: g
Wake-on: d
Current message level: 0x000000ff (255)
drv probe link timer ifdown ifup rx_err tx_err
Link detected: yes
root@hs01:~#
3、检查网卡是否up (这里我的网卡是eno1,你的可能是eth0,eth1,或者其他)
root@hs01:~# sudo ip link ls eno1
2: eno1: mtu 1500 qdisc mq state **UP** mode DEFAULT group default qlen 1000
link/ether d0:94:66:1e:e4:84 brd ff:ff:ff:ff:ff:ff
如果显示状态是“DOWN”,可以尝试使用
sudo ip link set eno0 up 命令来启动
4、检查网卡配置文件
IP地址,网关,DNS这些在配置文件里,检查每项数据是否正确,子网掩码,网关等
下面范例配置了主接口和子接口地址:
root@hs01:~# vim /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto br0 br0:1
iface br0 inet **static**
address 192.168.1.42
netmask 255.255.255.252
network 192.168.1.40
broadcast 192.168.1.43
gateway 192.168.1.41
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 8.8.8.8
# dns-search thn.lon
bridge_ports enp5s0f0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
iface br0:1 inet static
address 192.168.1.65
network 192.168.1.64
netmask 192.168.1.240
这里配置的是静态IP地址,配完后重启网络,Ping自己地址看看是否能通,再Ping网关检查是否能通。
如果配置的是DHCP,要用ifconfig看是否获取到IP地址,如果获取不到,可能是路由或者链路问题,也可能是ICMP禁止ping。如果DHCP服务器能Ping通却获取不到地址,需要联系DHCP服务器管理员,或者找网关查下路由器DHCP relay的配置。
这是如果可以的话,找网关要一个测试的静态地址,看静态地址能不能通,以排除和定位DHCP服务器问题。
5、下一步,如过Ping网关能通,Ping不通DNS服务器地址,那么ping一下网内其他机器地址,用排除法确认是否DNS服务器本身的问题。也可以用traceroute <服务器地址>或 mtr -n <服务器地址>来看下路由对不对。
如果IP地址没错,Ping网关也能通,ping DNS服务器也能通,就是不解析,那我们要查看DNS服务配置文件。
先看下dns服务器配置信息,下面是我机器上的正常输出:
root@hs01:~# nslookup 8.8.8.8
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
8.8.8.8.in-addr.arpa name = [google-public-dns-a.google.com](http://google-public-dns-a.google.com).
Authoritative answers can be found from:
root@hs01:~#
检查配置文件
root@hs01:~# cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 8.8.8.8
root@hs01:~#
如果没有nameserver配置,没有的话补上
Vim /etc/resolv.conf
重启网络。但如果改完后重启网络发现这个文件里面刚才写入的DNS服务器地址不见了,去改 /etc/resolvconf/resolv.conf.d/head ,增加nameserver x.x.x.x语句,再重启网络,一般就好了。
6、外网Ping自己不通,检查防火墙配置,检查防火墙命令要用sudo命令或root用户
iptables -L 显示现有防火墙策略,查看是否允许ICMP,可以尝试iptables -F 关闭防火墙再试试通不通。
如果没有启用iptables,而是用了ufw,则使用ufw status查看状态,关闭ufw使用 sudo ufw disable命令
root@hs01:~# ufw status
Status: active
To Action From
-- ------ ----
443 ALLOW Anywhere
22 ALLOW Anywhere
5901 ALLOW Anywhere
443 (v6) ALLOW Anywhere (v6)
22 (v6) ALLOW Anywhere (v6)
5901 (v6) ALLOW Anywhere (v6)
编辑ufw规则文件
sudo vim /etc/ufw/before.rules
其中
-A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT 表示允许Ping
-A ufw-before-input -p icmp --icmp-type echo-request -j DROP 表示不允许ping