引 入
网络,是一个很大的话题。这篇文章不是介绍OSI七层模型的,也不涉及网桥,路由器等网络设备,仅仅描述的是在CentOS下一些网络相关常用命令的用法以及配置文件的配置。其他方面的知识,后面再聊,好了,开始这繁多选项的网络命令了···
ifcfg家族: net-tools
这是一个古老的家族,通过procfs(/proc)和ioctl系统调用,访问和更改内核网络配置。centos6之后就推荐用iproute2家族来取代它,不过作为一个经典的网络系列,还是值得我们花点时间去了解的。
ifconfig:接口及地址查看和管理
ifconfig [INTERFACE] ifconfig interface [aftype] options | address ... # ifconfig:显示激活状态的网卡接口; # ifconfig -a:显示所有接口,包括未激活状态的接口; # ifconfig IFACE IP/MASK [up|down] 例: 启用eth0这块网卡: ifconfig eth0 up # ifconfig IFACE IP netmask NETMASK 例: 给eth0这块网卡设置ip为1.1.1.1,子网掩码为255.0.0.0: ifconfig eth0 1.1.1.1 netmask 255.0.0.
route: 路由表管理
路由条目类型: 主机路由:目标地址为单个IP; 网络路由:目标地址为IP网络; 默认路由:目标为任意网络,0.0.0.0/0.0.0.0 查看:# route -n 添加:route add [-net|-host] target [netmask Nm] [gw GW] [[dev] If] 示例: 1.新添一条通往10.0.0.0/8的路由,网关为192.168.234.1,对应网卡为eth1; route add -net 10.0.0.0/8 gw 192.168.234.1 dev eth1 或 route add -net 10.0.0.0/255.0.0.0 gw 192.168.234.1 2. 新添一条默认路由,网关为192.168.234.1 route add default gw 192.168.234.1 删除: route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If] 示例: route del -net 10.0.0.0/8 gw 192.168.10.1 route del default
注意:添加路由条目时,网关必须要跟相关网卡IP在同一个网段,否则会出现Network is unreachable错误。
arp: 管理arp缓存表
查看arp表: arp -en 添加静态arp项: arp -s 192.168.234.100 00:0c:29:c0:5a:ef 删除静态arp项: arp -d 192.168.234.100
netstat: 状态及统计数据查看
显示路由表: netstat -rn -r:显示内核路由表 -n:数字格式 显示网络连接: netstat [options] options: -t:TCP协议的相关连接,连接均有其状态;FSM(Finate State Machine); -u:UDP相关的连接 -w:raw socket相关的连接 -l:处于监听状态的连接 -a:所有状态 -n:以数字格式显示IP和Port; -e:扩展格式 -p:显示相关的进程及PID; 常用组合: -tan, -uan, -tnl, -unl, -tunlp
ifup/ifdown命令:
通过配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE来识别接口并完成配置; 例:ifdown eth0 + ifup eth0 <==> 读取配置文件重启eth0
iproute2家族:
这是通过网络链路套接字接口与内核进行联系。网络链路接口比/proc接口轻盈,更重要的是,例如基于源的路由、服务质量等绑定操作必须要用iproute2才能完成。所以你仍在使用net-tools,是时候改用iproute2了。
ip命令:设备属性与路由管理等,功能强大--》取代ifconfig跟route
ip [ OPTIONS ] OBJECT { COMMAND | help } OBJECT := { link | addr | route } 注意: OBJECT可简写,各OBJECT的子命令也可简写; OBJECT: link:两层设备管理(物理层+链路层) ip link set-->修改设备属性 dev NAME (default):指明要管理的设备,dev关键字可省略; up和down: multicast on或multicast off:启用或禁用多播功能; name NAME:重命名接口 mtu NUMBER:设置MTU的大小,默认为1500; ip link show - 显示设备属性 ip link help - 显示简要使用帮助; address -->三层设备管理(物理层+链路层+ip层) ip address add - 添加ip 例:给eth1添加ip为1.1.1.1,掩码为255.0.0.0: ip addr add 1.1.1.1/8 dev eth1 [label NAME]:为额外添加的地址指明接口别名; [broadcast ADDRESS]:广播地址;会根据IP和NETMASK自动计算得到; [scope SCOPE_VALUE]: global:全局可用; link:接口可用; host:仅本机可用; ip addr delete - 删除ip地址 ip addr show - 查看ip协议信息 ip addr list [IFACE]:显示接口的地址; ip addr flush 清空ip地址 例:清空eth0的ip ip addr flush dev eth0 route --> 路由表管理 ip route add - 新添路由条目 ip route change - 修改路由条目 ip route del - 删除路由条目 ip route replace - 修改或新添路由条目 ip route show - 查看路由条目 ip route flush dev IFACE - 清空IFACE相关的路由条目 ip route get TYPE PRIFIX - 详细查看具体一条路由条目 ip route add TYPE PREFIX(路由类型) via GW [dev IFACE] 示例: 新添路由条目,到192.168.0.0/24网段,通过10.0.0.1网关 # ip route add 192.168.0.0/24 via 10.0.0.1 dev eth1 查看 192.168.0.0/24网段的详细路由条目 # ip route get 192.168.0.0/24 arp --> arp缓存表管理 ip neigh -- 查看arp缓存表 ip neigh add IP lladdr MAC dev IFACE -- 静态添加arp缓存 ip neigh del IP dev IFACE -- 删除静态arp项
ss [选项] [ 过滤器 ] 选项: -t:TCP协议的相关连接 -u:UDP相关的连接 -w:raw socket相关的连接 -l:监听状态的连接 -a:所有状态的连接 -n:数字格式 -p:相关的程序及其PID -e:扩展格式信息 -m:内存用量 -o:计时器信息 过滤器 := [ state TCP-STATE ] [ EXPRESSION ] TCP的常见状态 FSM: LISTEN:监听 ESTABLISEHD:建立的连接 CLOSED:关闭 EXPRESSION: dport = :目标端口 sport = :源端口 示例: 查看源端口或目标端口为22的socket连接状态 ~]# ss -tan '( dport = :22 or sport = :22 )' 查看连接状态为建立的socket连接 ~]# ss -tan state ESTABLISHED
注:上述命令行的修改,是通过内核直接调用执行的,其效果可以立马显示出来,但它只是临时生效,当网络重启的时候就会失效,想要永久生效,就要修改配置文件,下面,我们就来说一下网络相关的配置文件。
配置文件
主机名配置文件:
/etc/sysconfig/network
配置DNS服务器指向:
/etc/resolv.conf
网卡配置文件:
/etc/sysconfig/network-scripts/ifcfg-eth2
注:当/etc/resolv.conf跟ifcfg-eth2都有配置DNS服务器时,会选择网卡配置的DNS服务器。
路由器配置文件:
配置方式:目的 via 网关
注:修改配置文件可以使IP,路由等相关信息永久有效,不过却要重启网络服务才能第一次生效。
重启网络命令:
CentOS6: service network restart CentOS7: systemctl restart network.service
后 记
Centos系的网络配置命令还是不复杂的,但如果想架构一套安全,有效的网络体系,这还得多多去学习网络相关原理,也需要一定的工作经验。网络,值得每个人去学习!
附:如对上面描述有疑问,期待与朋友您共同探讨。本人QQ:1084569767