Linux网络管理
涉及到的命令:
ifconfig、ifup、ifdown、ping、route、setup、chkconfig、reset、dig、ip、traceroute、mtr、netstat、ss、iftop、nethogs
==============================================================
ISO定义OSI模型(七层)
物理层 定义物理设备规范及电气信号特性
数据链路层 本地网络通信,定义MAC地址
网络层 定义网络通信,定义IP地址
传输层 进程间通信,定义进程地址(端口号) IP+端口号=套接字
会话层 会话建立和拆除
表示层 数据表示方式
应用层 完成数据交换
TCP/IP模型(4层)
物理层
互联网层
传输层
应用层
传输层:
进程启动时向内核注册使用某端口,所以当网络报文到达时,首先到达内核
应用层:
进程负责处理应用层协议
修改主机IP方法:
1、ifconfig命令
2、ip命令
3、编辑配置文件
4、GUI命令(不常用)
5、TUI命令(不常用) setup命令,根据向导修改
网卡接口命名方式:
以太网:ethx (有些机器是emx)
centos7的叫ensx
PPP网络:pppx
本地换回接口:lo 接口
仅用于本机上的进程间基于内核完成通信
==================================================================
ifconfig命令
查看、修改网卡属性
ifconfig输出结果解释:
eth0 Link encap:Ethernet HWaddr 00:0C:29:21:F3:BE
inet addr:172.20.1.33 Bcast:172.20.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe21:f3be/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:266187 errors:0 dropped:0 overruns:0 frame:0
TX packets:14251 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:25547336 (24.3 MiB) TX bytes:1400737 (1.3 MiB)
大致可以得到以下内容:
网络类型是以太网、硬件地址(MAC)
IP、广播地址、掩码
IPV6地址
MTU:1500
接收包个数
发送包个数
收发包大小
collisions:0 冲突为0
txqueuelen:1000 传送队列为1000(包数量)
直接执行ifconfig,可以查看到激活状态接口的属性,查看所有的:
ifconfig -a
设定IP地址:
ifconfig IF_NAME IP/NETMASK(长度数字) [up]
ifconfig IF_NAME IP netmask NETMASK
如:ifconfig eth0 192.168.1.100/24 或者 ifconfig eth0 192.168.1.100 netmask 255.255.255.0
注意:此种修改方法可立即生效,但临时有效,重启系统或服务丢失
禁用、启用网卡接口
ifconfig IF_NAME down|up
ifup IF_NAME
ifdown IF_NAME
====================================================================
ping命令
ping命令 用ICMP的ECHO _REQUEST报文,测试主机连通性
ping [options] DESTINATION
-c # count 发送ping包次数
-s # 发送探测报文的大小
-w # 表示ping多久,-w 5 : ping 5秒钟后退出
[root@localhost ~]# ping -c 5 -s 128 www.baidu.com
指定ping 5次,包大小为128个字节
[root@localhost ~]# ping -w 3 -s 128 www.baidu.com
指定ping 3秒钟,包大小为128个字节
=====================================================================
route命令
查看路由:
route -n,以数字方式显示路由表,对结果不进行解析,比直接执行route查看的要略快
添加路由:
route add {-host|-net} Target[/prefix] [gw Gw] [[dev] IfNAME]
如:route add -net 192.168.109.0/24 gw 192.168.101.1 dev eth2
-host 设置到某主机的路由,-net设置到某网段的路由
添加默认网关:
route add -net 0.0.0.0 gw 192.168.2.1 dev eth0 静态路由
route add default gw 192.168.2.1 [dev eth0]根据实际情况,接口名可省略
删除路由
route del {-host|-net} Target[/prefix] [gw Gw] [[dev] IfNAME]
如: route del -net 0.0.0.0 gw 192.168.2.1
注意:添加路由后,立即生效,但也只是临时有效,重启服务或者系统就会消失
静态路由配置文件(永久生效):
/etc/sysconfg/network-scripts/route-IFNAME route-IFNAME文件不存在,自建即可
配置方式一:每一行定义一个路由条目
DESTINATION via GATEWAY
如:
192.168.0.0/24 via 172.16.0.2
192.168.1.1 via 172.16.0.3
配置方式二:
每三行定义一个路由条目
ADDRESS=
NETMASK=
GATEWAY=
例如:
ADDRESS=192.168.0.0
NETMASK=255.255.255.0
GATEWAY=172.20.0.2
注意:这两种方式不可以混合使用,只能选一种使用
========================================================================
setup命令、chkconfig命令
配置IP、掩码、网关
命令:setup 图形界面下修改(如果语言乱码可以export LANG=en)
此种配置方式的配置结果是保存至配置文件
生效方法:重启服务,比较繁琐不常用
网络管理的相关服务有两个
NetworkManager(建议停用)
network
查看服务是否开机启动:
chkconfig --list|grep "SERVICE_NAME"
禁止或者启用开机启动
chkconfig SERVICE_NAME on|off
立即启动或关闭服务
service SERVICE_NAME start|stop|restart
/etc/init.d/SERVICE_NAME start|stop|restart
reset命令 当做一些设置是界面发生奇怪变化,可以尝试初始化一下
terminal initialization终端初始化
==============================================================================
通过修改配置文件,进行修改ip、netmask、DNS
每个网络接口都有一个配置文件
/etc/sysconfig/network-scripts/ifcfg-IFNAME
常用参数:
DEVICE=eth0 设备名(与ifcfg-IFNAME中的IFNAME一致)
HWADDR=00:0C:29:21:F3:BE MAC地址,此地址不可更改,要跟网卡的ROM中固定地址一致
TYPE=Ethernet 接口类型
UUID= 可以删掉,如果存在不可以修改其值
ONBOOT=yes 开机时是否随机激活
NM_CONTROLLED=yes NM=networkmanager ,是否受NetworkManager服务控制,建议选no
BOOTPROTO=static 启动时配置协议:static(手动配置)、none(手动配置)、dhcp(动态获取)、bootp(动态获取)
IPADDR=172.20.1.33 IP地址
NETMASK=255.255.255.0 掩码地址
GATEWAY=172.20.1.1 网关地址
DNS1=192.168.1.13 主DNS
DNS2=192.168.1.14 备用DNS
IPV6INIT 是否初始化IPV6协议地址 可以不存在
USERCTL 是否允许普通用户管理此接口 可以不存在
PEERDNS 当BOOTPROTO的值为dhcp时,是否允许自动获取的覆盖手动指定的
注意:不能立即生效,重启网络服务生效
配置DNS服务器指向(在网络接口的配置文件中或者在此文件中修改DNS都可以)
/etc/resolv.conf
nameserver DNSSERVER_IP
最多可以填写3个dns服务器
dig命令, domain information groper
正向解析:
dig -t FQDN
dig -t A www.baidu.com
dig -t A www.baidu.com @8.8.8.8 指定使用某个DNS进行解析
反向解析:
dig -x IP
ip命令
ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT := { link | addr | route }
link 链接接口,如eth0
addr 管理接口的IP地址
route 管理路由
link 设定接口属性
set 设置接口属性
ip link set DEVICE {up|down}
ip link set DEVICE promisc {on|off} 是否支持混杂模式
ip link set DEVICE tx queuelen PACKETS 队列长度
ip link set DEVICE name NAME 修改接口名字
show 显示接口状态
如:ip link show [eth0]
addr 接口地址管理
add 添加地址
del 删除地址
格式:ip addr {add|del} IFADDR dev STRING (添加的地址ifconfig看不到,可以ip addr show查看)
ip addr add 192.168.100.100/24 dev eth0
ip addr del 192.168.100.100/24 dev eth0
show 查看地址
ip addr show [dev_name]
flush 清空地址
ip addr flush dev DEV_NAME 清除指定网卡的所有地址
如:ip addr flush dev eth0
route
list 列出路由
ip route list == ip route show
add 添加路由
ip route add DESINATION via GATEWAY [ dev IF_NAME]
如:ip route add default via 192.168.1.1 (默认网关)
ip route add 192.168.100.0/24 via 172.20.1.1 dev eth0
del 删除路由
ip route del DESINATION
如:ip route del 192.168.100.0/24
==================================================================================
给接口配置多个IP的其他方式
ifconfig 临时生效,立即生效
ethX:Y 如:ifconfig eth0:1 192.168.1.100/24 [up]
配置文件 永久生效,不会立即生效
/etc/sysconfig/network-scripts/ifcfg-IF_ALIAS 如ifcfg-eth0:0
DEVICE=IF_ALIAS
BOOTPROTO=static|none
ONBOOT=yes
IPADDR=XXXXXXX
NETMASK=XXXXXXX
ip命令如:ip addr add 192.168.100.100/24 dev eth0:0
也是临时生效
配置主机名:
hostname HOSTNAME 其结果保存在/proc/sys/kernel/hostname echo “HOSTNAME” > /proc/sys/kernel/hostname
配置文件
修改:/etc/sysconfig/network 其中NETWORKING=yes 网络总开关,关闭后主机不能联网
网络管理的几个常用工具
ping
traceroute 路由跟踪
traceroute www.baidu.com
mtr
融合了ping和traceroute功能的诊断工具
mrt HOST
网络状态探测工具
netstat
-r 显示路由表
-n numeric 数字显示,不反解IP或者主机名、端口等
-l listening,处于监听状态
-t tcp相关连接
-u udp相关连接
-a all,显示所有连接(针对于TCP而言,处于各种状态)
-p process ,显示相关连接的程序名和进程名
常用组合:
-rn -tnl -nul -tunl -tan -tanlp
ss 跟netstat很像,但效率更高
-n 数字格式
-l 处于监听状态
-a 显示所有连接,针对tcp
-e 扩展信息
-m 内存使用信息
-o state { established|fin_wait_1|fin_wait_2|listening } 状态过滤
常用组合
-tnl -unl -tan -tunl -tnlp
iftop 以连接为中心,显示带宽占用情况
iftop -i eth0
nethogs 按照进程为中心,显示带宽占用情况
nethogs [IF_NAME]
练习:
写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间所有主机的在线状态
不在线的主机使用红色显示,在线的使用绿色显示
#!/bin/bash
for i in {1..254};do
if ping 172.16.250.$i -w 1 -c 1 &> /dev/null ;then
echo -e "\033[32m 172.16.250.$i is exist \033[0m"
else
echo -e "\033[31m 172.16.250.$i is not exist \033[0m"
fi
done
echo -e "\033[30m 黑色字 \033[0m"
echo -e "\033[31m 红色字 \033[0m"
echo -e "\033[32m 绿色字 \033[0m"
echo -e "\033[33m ×××字 \033[0m"
echo -e "\033[34m 蓝色字 \033[0m"
echo -e "\033[35m 紫色字 \033[0m"
echo -e "\033[36m 天蓝字 \033[0m"
echo -e "\033[37m 白色字 \033[0m"
echo -e "\033[40;37m 黑底白字 \033[0m"
echo -e "\033[41;37m 红底白字 \033[0m"
echo -e "\033[42;37m 绿底白字 \033[0m"
echo -e "\033[43;37m 黄底白字 \033[0m"
echo -e "\033[44;37m 蓝底白字 \033[0m"
echo -e "\033[45;37m 紫底白字 \033[0m"
echo -e "\033[46;37m 天蓝底白字 \033[0m"
echo -e "\033[47;30m 白底黑字 \033[0m"