一、配置方式概述
(1)使用命令配置(临时有效)
1、ifcfg系列命令
1)ifconfig:配置ip,NETMASK
2)route:路由
3)netstat:网络状态及统计数据查看
2、iproute系列:
1)ip OBJECT:
此处的OBJECT可为:
addr:地址和掩码
link:接口
route:路由
2)ss:网络状态及统计数据查看
(2)配置文件配置(永久生效)
1、配置网络地址等编辑文件/etc/sysconfig/network-scripts/ifcfg-DEVICE_NAME(大写处替换为具体的网卡名)
2、要指定DNS服务器一般编辑配置文件/etc/resolv.conf
3、主机名配置(本地主机名):编辑配置文件/etc/sysconfig/network
注:在CentOS 7中可使用homenamectl命令,此命令是直接写入配置文件,所以是永久生效。
二、ifcfg系列命令
1、ifconfig命令:接口及地址查看和管理
显示:ifconfig [interface]
# ifconfig eth0
配置IP地址:ifconfig interface [aftype] options | address …
注:此处的interface是指网卡设备名,如eth0;ip即点分十进制的表示;而子网掩码可以给出255.255.0.0或者是16(长度)的格式;up和down分别表示启用或者禁用此网卡。
# ifconfig interface ip/netmask [up|down]
#ifconfig interface ip netmask [up]
# ifconfig eth0 192.168.1.100/24 up # ifconfig eth0 192.168.1.100 255.255.255.0 up
注意:此处亦可使用单独的ifup DEVICE_NAME 和 ifdown DEVICE_NAME来启用和禁用网卡。
选项:
[-]promisc:混杂模式生效与否;有-表示不生效(以下类同)
注:混杂模式即值接收来自互联网的任何类型的报文。
[-]arp:是否允许地址解析
[-]allmutilcast:是否允许组播或多播
注意:立即送往内核,并生效;但是下次重启失效。
管理IPv6地址
options:
addaddr/prefixlen
deladdr/prefixlen
注:此处的prefixlen即指子网掩码长度。
# ifconfig eth0 inet6 add2001:da8:207::9402
2、route命令:路由查看及管理
1)路由条目类型:
主机路由:目标地址为单个IP
网络路由:目标地址为IP网络
默认路由:目标为任意主机,0.0.0.0/0.0.0.0
2)查看当前路由信息:
-n:表示不解析端口和主机为名称,直接显示为IP地址
# route -n
3)添加路由条目:
add [-net|-host] target [netmask Nm] [gwGw] [[dev] IfACE]
例如:
要到10.0.0.0地址要经过192.168.10.1通过自己的eth1接口 # routeadd -net 10.0.0.0/8 gw 192.168.10.1 dev eth1 添加默认路由 # routeadd -net 0.0.0.0/0.0.0.0 gw 172.16.0.1 # routeadd default gw 172.16.0.1
4)删除路由条目:
del[-net|-host] target [gw Gw] [netmask Nm] [[dev] If]
示例:
# routedel -net 10.0.0.8 gw 192.168.10.1 #删除一条路由 # routedel default #删除默认路由
3、netstat命令
1)显示路由表信息:
netstat -rn
-r: 显示内核路由表
-n:数字格式
# netstat -rn Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0 172.16.0.0 0.0.0.0 255.255.0.0 U 1 0 0 eth0 192.168.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0 0.0.0.0 172.16.0.1 0.0.0.0 UG 0 0 0 eth0
2)显示网络连接:
netstat[OPTION]
1)选项
-t:TCP协议相关连接,连接均有其状态。
-u:UDP相关的连接
-w:裸套接字 raw socket相关的连接
-l: 显示处于监听状态的连接
-n:以数字方式显示地址和端口,不需要解析为名称
-e:扩展格式,多余显示用户ID和相关套接字文件的inode
-p:显示相关进程及PID
2)常用组合:
-tan(显示所有tcp连接)
# netstat -tan Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:34296 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN tcp 0 0 192.168.1.6:22 192.168.1.106:52900 ESTABLISHED tcp 0 0 :::111 :::* LISTEN tcp 0 0 :::22 :::* LISTEN tcp 0 0 :::56182 :::* LISTEN tcp 0 0 ::1:631 :::* LISTEN tcp 0 0 ::1:6010 :::* LISTEN
-tn(仅显示处于连接状态的tcp连接)
# netstat -tn Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 52 192.168.1.6:22 192.168.1.106:52900 ESTABLISHED
-tnl(显示处于监听状态的tcp连接)
# netstat -tnl Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:34296 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN tcp 0 0 :::111 :::* LISTEN tcp 0 0 :::22 :::* LISTEN tcp 0 0 :::56182 :::* LISTEN tcp 0 0 ::1:631 :::* LISTEN tcp 0 0 ::1:6010 :::* LISTEN
-tunlp(处于监听状态的TCP和UDP连接并显示调用它们的进程和PID)
# netstat -tunlp
4、hostname(hostnamectl(CentOS 7))配置主机名
1)查看:hostname
2)配置:hostname HOSTNAME
注:当前系统有效,重启后无效;
3)hostnamectl命令:
hostnamectl status:显示当前主机名信息;
hostnamectl set-hostname:设定主机名,永久有效
4)编辑配置文件:/etc/sysconfig/network
HOSTNAME=<hostname>
永久有效
5、配置DNS服务器指向:
配置文件:/etc/resolv.conf
nameserver DNS_SERVER_IP ---->(DNS服务器的地址)
注意:ping 地址解析是先找/etc/hosts,然后再找/etc/resolv.conf上的dns服务器查询。
二、iproute2系列命令
1、ip命令
用途:查看或管理路由、网卡设备、策略路由和隧道
使用格式:ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT := { link | address | route | netns}
注意:OBJECT和COMMAND都能简写,可被唯一识别即可。
例如:ip addr li等同于ip address list。
(1)ip link:网络设备配置
子命令:
set:修改设备属性
dev NAME(default)即dev也可不写
up and down:启用或者禁用设备
multicast on or multicast off:启用或禁用多播(组播)功能
name:重命名接口名称;注意:一般重命名需先禁用设备再改
mtu NUMBER:设置MTU的大小,以太网是1500
netns PID: ns是namespace,用于将接口移动到指定的名称空间;基于此机制可以构建一个大
的内部网络(虚拟网络)
show|list:显示设备属性。 (2)ip netns:管理网络名称空间
ip netns list
ip netns add NAME:创建指定的netns
ip netns del NAME:删除指定的netns
ip netns exec NAME COMMAND:在指定的netns中运行命令
(3)ip address:协议地址管理
子命令:
1)ip addr add [ local ] IFADDR dev IFACE
[label NAME]:为接口额外的地址指明标签
[broadcast ADDRESS]:广播地址;会根据IP和NETMASK计算得到,所以一般不用指出。
[scope SCOPE_VALUE]:
global:全局可用
link:接口可用
host:仅本机可用
注:可添加多个地址。
2) ip addr show IFACE
ifconfig显示不了多余的地址,指明标签label后才可以。而此命令可以显示出来
name一般是(设备名:编号)
# ip addr add 192.168.1.7/24 dev eth0 label eth0:0 scope global # ip addr show dev eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qle n 1000 link/ether 00:0c:29:c4:a4:84 brd ff:ff:ff:ff:ff:ff inet 172.16.25.71/16 brd 172.16.255.255 scope global eth0 valid_lft forever preferred_lft forever inet 192.168.1.7/24 brd 192.168.1.255 scope global eth0:0 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fec4:a484/64 scope link valid_lft forever preferred_lft forever
3)ip address delete - 删除地址
ip addr del IPADDR dev IFACE
用法与add相似
4)ip address flush - 清除某接口的所有地址
ip addr flush dev IFACE
(4)ip route 路由管理
1)ip route add - 添加路由条目
ip route change - 改变路由条目
ip route replace - 改变路由条目或者添加一个新的条目
以上三个命令的用法相同,故以add为例进行说明
ip route add TYPE PREFIX via GW [dev IFACE] [src SOURCE_IP]
说明:TYPE PREFIX 即指明IP和子网掩码,via GW 指明下一跳,dev IFACE指明网卡接口, src SOURCE_IP 即指明发送数据包出去的源地址,但是仅当一个网卡接口上有多个地址时指出
时才有意义。
# 从网卡eth1的10.0.20.200这个地址发往192.168.0.0网络的数据报文的下一跳是10.0.0.1 # ip route add 192.168.0.0/24 via 10.0.0.1 dev eth1 src 10.0.20.200
2)ip route delete - 删除路由条目
ip route del TYPE PRIFIX
# ip route delete 192.168.1.0/24
注意:如果有多个指向192.168.1.0的路由条目要指明此条目关联的网卡接口,必要时还应指
出源地址。
3)ip route show - 列出所有路由条目
# ip route show 192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 172.16.0.0/16 dev eth0 proto kernel scope link src 172.16.25.67 metric 1 192.168.0.0/16 dev eth0 proto kernel scope link src 192.168.1.6 default via 172.16.0.1 dev eth0 proto static
4)ip route flush - 清空路由表
5)ip route get - 获取单个路由条目信息
ip route get TYPE PREFIX
# ip route get 192.168.1.0/24 192.168.1.0 dev eth0 src 192.168.1.6 cache mtu 1500 advmss 1460 hoplimit 64
2、ss命令
ss [options] [ FILTER ]
选项:
-t:tcp协议相关的连接
-u:udp协议相关的连接
-w:裸套接字相关的连接
-l:监听状态的连接
-a:所有状态的连接
-n:数字格式
-p:相关程序和PID
-e:扩展格式信息
-m:内存用量(某个连接的内存使用相关信息)
-o:显示计时器相关信息
注:此处ss命令与netstat显示内容相似,故不做举例。但值得一提的是ss作为netstat的替代工具
它的优势在于比netstat在大范围主机下性能要好。
FILTER := [ state TCP-STATE ] [ EXPRESSION ]
EXPRSSION:
dport=
sport=
# ss -o state established '( dport = :22 or sport = :22 )' Recv-Q Send-Q Local Address:Port Peer Address:Port 0 0 192.168.1.6:ssh 192.168.1.106:54918 timer:(keepalive,81min,0) # ss -o state established '( dport = :ssh or sport = :ssh )' Recv-Q Send-Q Local Address:Port Peer Address:Port 0 52 192.168.1.6:ssh 192.168.1.106:54918 timer:(on,239ms,0)
三、编辑配置文件来进行网络配置
1)IP地址、子网掩码、网关、DNS服务器地址等属性的配置文件(RedHat系列下)
/etc/sysconfig/network-scripts/ifcfg-NETCARD_NAME
例如:/etc/sysconfig/network-scripts/ifcfg-eth0
2)路由的相关配置文件:
/etc/sysconfig/network-scripts/route-NETCARD_NAME
需要用到非默认网关路由,且让其永久有效,编辑配置文件
支持两种配置方式,但不可混用
(1)每行一个路由条目:
TARGET via GW
192.168.0.0/24 via 192.168.1.1
即指要到192.168.0.0网络的报文发出的下一跳是192.168.1.1
(2)每三行一个路由条目:
ADDRESS NUM=TARGET
NETMASK NUM=MASK
GATEWAY NUM=NEXTHOP
ADDRESS0=192.168.0.0 NETMASK0=255.255.255.0 GATEWAY0=192.168.1.1
即指要到192.168.0.0网络的报文发出的下一跳是192.168.1.1
3)配置文件的配置方式
1)可通过vim等编辑器来编辑
2)使用专有命令启动字符配置界面来配置
CentOS 6:system-config-network或者setup
CentOS 7:nmtui字符配置界面
4)ifcfg-NETCARD_NAME配置参数解释
DEVICE:此配置文件对应的设备的名称
ONBOOT:在系统引导过程中,是否激活此接口
UUID:此设备的唯一标识
IPV6INIT:是否初始化IPV6
BOOTPROTO:激活此接口时是用什么协议来配置接口属性,常用的有dhcp、bootp、static、none。
TYPE:接口类型,常见的有Ethernet、Bridge等
DNS1:第一DNS服务器指向;
DNS2:第二DNS服务器指向
DOMAIN:DNS搜索域
IPADDR:IP地址
PREFIX:地址掩码长度
NETMASK:地址掩码
HWADDR:硬件设备的MAC地址
USERCTL:是否允许普通用户控制此设备
PEERDNS:如果BOOTPROTO的值为“dhcp”,是否允许dhcp服务器分配的dns服务器指向覆盖本地手动指向的DNS服务器指向;默认为允许(yes)
NM_CONTROLLED:是否允许使用NetworkManager服务来控制接口;(CentOS 6 上非常有用)
注意:配置文件修改之后,如果需要生效,需要重启网络服务;
CentOS 6:service network restart
CentOS 7:systemctl restart network.service
注:本文测试结果均来自CentOS系统。