Linux 网络属性配置
IP地址分类
IP地址分为5类,A,B,C,D,E,其中D和E在工作中不会使用
A类地址
第一段为网络号,后三段为主机号;
有效的网络号:0 000 0000 - 0 111 1111 = 1 -127
网络数量:126个,127被用作回环地址;
每个网络中的主机数量:2^24-2,减去全为0和全为1的;
默认子网掩码:255.0.0.0, /8;子网掩码用于与IP地址按位进行与运算,从而取出其网络地址(根据网络地址可以判断出网络是否属于同一网段)
私网地址:10.0.0.0/255.0.0.0
B类地址
前两段为网络号,后两段为主机号;
有效的网络号:10 00 0000 - 10 11 1111 = 128-191
网络数量:2^14
每个网络中的主机数量:2^16-2
默认子网掩码:255.255.0.0, /16;
私网地址:172.16.0.0 - 172.31.0.0
C类地址
前三段为网络号,最后一段为主机号;
有效的网络号:110 0 0000 - 110 1 1111 = 192-223;
网络数量:2^21
每个网络中的主机数量:2^8-2;
默认子网掩码:255.255.255.0 , /24 ;
D类地址
1110 0000 - 1110 1111 = 224-239
E类地址
240-255
注意:IP地址中主机位全为1的表示广播地址;主机位全为0的表示网络地址;
配置Linux主机接入网络
-
本地通信:配置IP/NETMASK(子网掩码)
-
跨网络通信:配置路由(网关);
-
基于主机名通信:配置DNS服务器地址,Linux系统可以配置三个DNS指向;
静态指定
ifcfg系列
-
ifconfig:配置IP,子网掩码;
-
route:配置路由;
-
netstat:状态及统计数据查看工具;
iproute2系列
-
ip OBJECT:
-
addr:地址和掩码
-
route:路由
-
link:接口
Centos7专用
- nmcli(命令行工具)
- nmtui(图形化工具)
配置文件方式:redhat及相关发行版
# 网络配置 /etc/sysconfig/network-scripts/ifcfg-NETCARD_NAME # DNS配置 /etc/resolv.conf # 主机名配置 hostname 配置文件:/etc/sysconfig/network CentOS7系统:hostnamectl命令
动态分配依赖于本地网络中有DHCP服务
网络接口命名方式
传统命名
- 以太网:ethX,例如:eth0, eth1, ...
- ppp网络:pptX,例如:ppp0, ppp1, ...
可预测命名方案(CentOS7)
- 支持多种不同命名机制,firmware拓扑结构
(1)如果firmware或bios为主板上即成的设备提供的索引信息可用,则根据此索引进行命名,如,eno1,eno2, ... (2)如果firmware或bios为PCI-E扩展槽所提供的索引信息可用,且可预测,则根据此信息进行命名,如ens1, ens2, ... (3)如果硬件接口的物理位置信息可用,则根据此信息命名,如enp2s0,... (4)如果用户显示定义,也可根据MAC地址命名,例如:enx122161ab2e10,...
命名格式组成
en: ethernet wl: wlan ww: wwan # 名称类型 o<index>:集成设备的设备索引号; s<slot>:扩展槽的索引号; x<MAC>:基于Mac地址的命名; p<bus>s<slot>:基于总线及槽的拓扑结构进行命名;
ifconfig命令
(1)查看接口地址
使用格式
ifconfig [INFACE]
[INFACE]:表示网卡接口名称;
(2)管理 IP 地址
使用格式
ifconfig INTERFACE IP/MASK [up]
ifconfig INTERFACE IP netmask NETMASK [up]
注意:ifconfig命令会立即将配置送往内核中,并立即生效;重启后无效;
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、添加目标地址为172.16.100.7的主机路由;
route add -host 172.16.100.7 dev ens33
或者
route add -host 172.16.100.7 gw 10.104.205.16
练习2:添加目标地址网络为10.0.0.0/8的网络路由条目
route add -net 10.0.0.0/8 gw 10.104.205.16 dev ens33
练习3、添加默认路由
route add default gw 10.104.205.16 dev ens33
删除路由条目
route del [-net | -host] target [gw Gw] [netmask Nm] [[dev] If]
删除主机路由
route del -host 172.16.100.7
删除网络路由
route del -net 10.0.0.0/8
netstat命令
netstat命令用于显示网络相关信息,如网络连接,路由表,接口状态等
(1)显示路由信息
netstat -rn
- -r:显示路由表
- -n:数字格式显示
netstat -rn
(2) 显示网络连接
netstat [--tcp|-t] [--udp|-u] [--udplite|-U] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-n] [--extend|-e[--extend|-e]] [--program|-p]
常用选项
-
-t:显示tcp协议相关的连接
-
-u:显示udp协议相关的连接
-
-w:raw socket相关的连接
-
-l:显示处于监听状态的连接
-
-a:显示所有状态的连接
-
-n:以数字格式显示ip和port;
-
-e:扩展格式
-
-p:显示相关进程PID
练习1、查看所有tcp协议处于监听状态的连接
netstat -tnlp
练习2、显示tcp协议相关所有状态的连接信息
netstat -tanlp
显示接口的统计数据
-
netstat -i:显示所有接口的信息;
-
netstat -I<IFACE>:显示指定接口的信息;
netstat -i
显示指定接口信息
netstat -Iens33
ifup和ifdown命令
使用格式
-
ifup IFACE:启用接口
-
ifdown IFACE:禁用接口
示例
ifdown eno33554960 ifup eno33554960
注意:通过配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE,来识别接口并完成配置;
Linux主机名配置
(1)hostname命令 查看主机名
配置主机名(临时有效,重启无效)
hostname NEWHOSTNAME
(2)hostnamectl 命令 ,此命令仅使用于 centos7 系统;
使用格式
hostnamectl [OPTIONS...] {COMMAND}
常用选线
-
status:查看当前主机名设定
-
set-hostname HOSTNAME:设定主机名,永久有效;
hostnamectl status
配置文件修改主机名
配置文件:/etc/sysconfig/network
配置文件格式
HOSTNAME=bj-1-141.enzhi.com
注意:此方法不是立即生效,重启后一直有效;
配置DNS服务器指向
配置文件:/etc/resolv.conf
文件格式
nameserver DNS_SERVER_IP
测试dns配置能否解析可使用:host, nslookup, dig三种命令的其中一种;如果系统没有安装三种命令,则使用 yum -y install bind-utils 即可;
使用dig与nslookup解析百度域名
dig -t A www.baidu.com
ip 命令
功用:显示或控制路由设备,策略路由和隧道
使用格式
ip [ OPTIONS ] OBJECT { COMMAND | help }
常用OBJECT
OBJECT={link | addr | route | netns}
ip link
- 功用:网络设备配置
ip link set dev NAME(default):指明要管理的设备,dev关键字可省略; up and down:启用或禁用设备; multicast on or molticast off:启用或禁用多播功能; name NAME:重命名接口;需要停止网络服务; mtu NUMBER:设置MTU大小,默认1500;
练习1 禁用设备或启用设备
ip link set eno33554960 down ip link set eno33554960 up
练习2、禁用eth1网卡多播功能(这是cents6 的网卡,7的查一下,用法一样)
ip addr show eth1 ip link set eth1 multicast off ip addr show eth1
练习3、重命名接口名称
systemctl stop network.service ip link set eno33554960 name eno33557788 systemctl start network.service ip addr show
ip netns
使用格式
-
ip netns list:列出所有的netns;
-
ip netns add NAME:添加一个名称空间;
-
ip link set INTERFACE netns netns_NAME:将指定的接口移动至指定名称空间中;
-
ip netns exec netns_NAME ip link show:查看名称空间中的设备信息;
-
ip netns del netns_NAME:删除指定名称空间;
练习1、在ens33接口添加一个名称空间,名为mynetns;
ip netns add mynetns ip netns list
练习2、将ens33接口移动至mynetns名称空间
ip link set ens33 netns mynetns
练习3、查看mynetns名称空间中的设备信息;
ip netns exec mynetns ip link show
练习4、删除mynetns名称空间
ip netns del mynetns
ip address
添加接口IP地址
ip addr add IFADDR dev IFACE [label NAME] [broadcast ADDRESS] [label NAME]:为额外添加的地址指明接口名;例如:eno33554960:0, eth0:0 [broadcast ADDRESS]:广播地址;会根据ip和netmask自动计算得出;
添加eno33554960:0接口地址为192.168.1.123/24
ip addr add 192.168.1.123/24 dev eno33554960 label eno33554960:0
删除接口IP地址
ip addr del IFADDR dev IFACE
例:删除192.168.1.123/24,接口为eno33554960:0
ip addr del 192.168.1.123/24 dev eno33554960:0
示例:显示eno33554960的详细信息;
ip addr show eno33554960
清空接口地址
ip addr flush dev IFACE
示例
ip addr flush dev eno33554960 ip addr show eno33554960
ip route
功用:路由管理
(1)添加路由条目
练习1、添加目标地址为172.16.100.7的主机路由,网关地址为192.168.152.130;接口为ens38;
ip route add 172.16.100.7 via 192.168.152.130 dev ens38
练习2、添加目标网络地址为10.0.0.0/8的网络路由,下一跳为192.168.152.130,接口为ens38
ip route add 10.0.0.0/8 via 192.168.152.130 dev ens38
(2)删除路由条目
使用格式:
ip route del TYPE PREFIX
删除主机路由172.16.100.7;删除目标网络为10.0.0.8/8的网络路由条目
ip route del 172.16.100.7 dev ens38 ip route del 10.0.0.0/8 dev ens38
(3)获取路由条目创建信息
使用格式:
ip route get TYPE PREFIX
示例:添加一个网络路由,并获取详细信息;
ip route add 10.0.0.0/8 via 192.168.1.141 dev eno16777728 ip route get 10.0.0.0/8
ss命令
功用:与netstat命令类似,都是获取其网络连接状态信息;可使用FILTER过滤其指定的信息
使用格式
ss [OPTIONS] [FILTER]
常用选项
-t:tcp协议相关的连接; -u:udp协议相关的连接; -w:raw socket相关的连接; -l:监听状态的连接; -a:所有状态的连接; -n:数字格式显示; -p:相关的程序及PID; -e:扩展格式信息; -m:内存用量; -o:计时器信息; [FILTER]= [ state TCP-STATE ] [EXPRESSION] EXPRESSION: dport= sport=
TCP的常见状态
LISTEN ESTABLISHED FIN_WAIT_1 FIN_WAIT_2 SYN_SENT SYN_RECV CLOSED
练习1、显示所有tcp协议相关的信息;
ss -tnlp
练习2、显示tcp协议相关的所有状态信息;
ss -tan
练习3、显示tcp协议相关的所有信息,但只显示原端口与目标端口为22的连接状态;
ss -tan '( dport = :22 or sport = :22 )'
练习4、查看tcp协议相关的连接信息中状态为ESTABLISHED的所有信息;
ss -tanl state ESTABLISHED
通过配置文件配置网络属性
etc/sysconfig/network-scripts/ifcfg-IFACE
路由相关的配置文件
/etc/sysconfig/network-scripts/route-IFACE
文件配置IP/DNS/GATEWAY等信息
配置文件:/etc/sysconfig/network-scripts/ifcfg-IFACE;通过大量参数来定义接口的属性,其可通过vim等文本编辑器直接修改,
也可以使用专用的命令进行修改;
centos6:setup命令,centos7:nmtui命令;
Ifcfg-IFACE配置文件参数
DEVICE=:此配置文件对应的设备的名称; ONBOOT=:在系统引导过程中是否激活此接口; UUID=:此设备的唯一标识,可不写; BOOTPROTO=:激活此接口时使用什么协议来配置接口属性,常用的有dhcp,bootp,static,none; TYPE=Ethernet:指明接口类型,常见的有,Ethernet; DNS1=:主DNS服务器指向; DNS2=:备用DNS服务器指向; DOMAIN=:搜索域; IPADDR=:本机的IP地址; NETMASK=:子网掩码, GATEWAY=:默认网关地址; USERCTL=:是否允许普通用户控制此设备; PEERDNS=:如果BOOTPROTO的值为dhcp,是否允许dhcp server,分配的dns服务器指向覆盖本地手动指向的dns服务器,默认允许; HWADDR=:硬件设备的Mac地址;可以不写; NM_CONTROLLED=yes:是否使用network manager 服务来控制接口;
配置示例
网络服务管理
使用格式
-
CentOS6:service SERVICE {start|stop|restart|status|reload}
-
CentOS7:systemctl {start|stop|restart|status|reload} SERVICE.service
注意:使用配置文件方式修改网络属性后,如果要生效,需要重启网络服务
CentOS6:service restart network CentOS7:systemctl restart network.service
配置文件定义永久生效路由
/etc/sysconfig/network-scripts/route-IFACE
配置文件格式:支持两种配置方式,但是不可以混用;
第一种方式:每行一个路由条目
TARGET via GW TARGET:目标地址; via:关键字 GW:下一跳地址;
练习1、添加一条主机路由条目,目标主机地址为172.16.100.7,下一跳地址为192.168.1.141;
CentOS7 配置方式
[root@bj-1-141 network-scripts]# vim route-eno16777728 172.16.100.7 via 192.168.1.141 [root@bj-1-141 network-scripts]# systemctl restart network.service [root@bj-1-141 network-scripts]# ip route show default via 192.168.1.1 dev eno16777728 proto static metric 100 default via 192.168.1.1 dev eno33554960 proto static metric 101 169.254.0.0/16 dev eno33554960 scope link metric 1003 172.16.100.7 via 192.168.1.141 dev eno16777728 proto static metric 100 192.168.1.0/24 dev eno16777728 proto kernel scope link src 192.168.1.141 metric 100 192.168.1.0/24 dev eno33554960 proto kernel scope link src 192.168.1.122 metric 101
CentOS6配置方式
[root@bj-1-160-enzhi network-scripts]# cat route-eth1 10.0.0.0/8 via 192.168.1.161 [root@bj-1-160-enzhi network-scripts]# service network restart Shutting down interface eth0: [ OK ] Shutting down interface eth1: [ OK ] Shutting down loopback interface: [ OK ] Bringing up loopback interface: [ OK ] Bringing up interface eth0: Determining if ip address 192.168.1.160 is already in use for device eth0... [ OK ] Bringing up interface eth1: Determining if ip address 192.168.1.161 is already in use for device eth1... [ OK ] [root@bj-1-160-enzhi network-scripts]# ip route show 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.160 192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.161 169.254.0.0/16 dev eth0 scope link metric 1002 169.254.0.0/16 dev eth1 scope link metric 1003 10.0.0.0/8 via 192.168.1.161 dev eth1 default via 192.168.1.1 dev eth0
第二种方式:每三行一个路由条目
ADDRESS#=TARGET(目标地址) NETMASK#=MASK(子网掩码) GATEWAY#=NEXTHOP(下一跳)
练习1、添加一条网络路由,目标网络地址为172.16.0.0/16,下一跳为192.168.1.141;
[root@bj-1-141 network-scripts]# cat route-eno16777728 ADDRESS0=172.16.0.0 NETMASK0=255.255.0.0 GATEWAY0=192.168.1.141 [root@bj-1-141 network-scripts]# systemctl restart network.service [root@bj-1-141 network-scripts]# ip route show default via 192.168.1.1 dev eno16777728 proto static metric 100 default via 192.168.1.1 dev eno33554960 proto static metric 101 169.254.0.0/16 dev eno33554960 scope link metric 1003 172.16.0.0/16 via 192.168.1.141 dev eno16777728 proto static metric 100 192.168.1.0/24 dev eno16777728 proto kernel scope link src 192.168.1.141 metric 100 192.168.1.0/24 dev eno33554960 proto kernel scope link src 192.168.1.122 metric 101
配置文件给接口配置多个IP地址永久生效
注意:网卡别名不支持动态获取地址
复制要添加多个接口的网卡配置文件;而后修改其DEVICE名称及删除UUID;
练习1、为eth1接口配置网卡别名为eth1:0,其IP地址为192.168.1.188/24,网关为192.168.1.1;
# 第一步:复制eth1到eth1:0 [root@bj-1-160-enzhi network-scripts]# cp ifcfg-eth1 ifcfg-eth1:0 # 第二步:修改其内容 [root@bj-1-160-enzhi network-scripts]# vim ifcfg-eth1:0 DEVICE=eth1:0 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=static IPADDR=192.168.1.188 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=192.168.1.1 # 第三步:重启网络服务查看eth1:0信息 [root@bj-1-160-enzhi network-scripts]# service network restart Shutting down interface eth0: [ OK ] Shutting down interface eth1: [ OK ] Shutting down loopback interface: [ OK ] Bringing up loopback interface: [ OK ] Bringing up interface eth0: Determining if ip address 192.168.1.160 is already in use for device eth0... [ OK ] Bringing up interface eth1: Determining if ip address 192.168.1.161 is already in use for device eth1... Determining if ip address 192.168.1.188 is already in use for device eth1... [ OK ] [root@bj-1-160-enzhi network-scripts]# ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:18:EC:38 inet addr:192.168.1.160 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe18:ec38/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:4041 errors:0 dropped:0 overruns:0 frame:0 TX packets:2376 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:404252 (394.7 KiB) TX bytes:284678 (278.0 KiB) eth1 Link encap:Ethernet HWaddr 00:0C:29:18:EC:42 inet addr:192.168.1.161 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe18:ec42/64 Scope:Link UP BROADCAST RUNNING MTU:1500 Metric:1 RX packets:1168 errors:0 dropped:0 overruns:0 frame:0 TX packets:58 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:130676 (127.6 KiB) TX bytes:4020 (3.9 KiB) eth1:0 Link encap:Ethernet HWaddr 00:0C:29:18:EC:42 inet addr:192.168.1.188 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MTU:1500 Metric:1