IP地址:
他们可唯一标识IP网络中的每一台设备
每台主机(计算机,网络设备,外围设备)必须具有唯一的地址
IP地址由两部分组成:
网络ID:
标识网络
每个网段分配一个网络ID
主机ID:
标识单个主机
由组织分配给各设备
IPv4地址格式:点分十进制记法
IP地址分类
v A类:
0 000 0000 - 0 111 1111: 1-127
网络数:126, 127 每个网络中的主机数:2^24-2
默认子网掩码:255.0.0.0 私网地址:10.0.0.0
v B类:
10 00 0000 - 10 11 1111:128-191
网络数:2^14 每个网络中的主机数:2^16-2
默认子网掩码:255.255.0.0
私网地址:172.16.0.0-172.31.0.0
v C类:
110 0 0000 - 110 1 1111: 192-223
网络数:2^21 每个网络中的主机数:2^8-2
默认子网掩码:255.255.255.0
私网地址:192.168.0.0-192.168.255.0
v D类:组播
1110 0000 - 1110 1111: 224-239
v E类:
240-255
类 | 公共IP地址范围 |
A | 110.0.0.0 到 9.255.255.255 11.0.0.0 到 126.255.255.255 |
B | 128.0.0.0 到 172.15.255.255 172.32.0.0 到 191.255.255.255 |
C | 192.0.0.0 到 192.167.255.255 192.169.0.0 到 223. 255.255.255 |
类 | 私有地址范围 |
A | 10.0.0.0 到 10.255.255.255 |
B | 172.16.0.0 到 172.31.255.255 |
C | 192.168.0.0 到 192.168.255.255 |
特殊地址:
0.0.0.0 | 0.0.0.0不是一个真正意义上的IP地址。它表示一个集合:所有不清楚的主机和目的网络。 |
255.255.255.255 | 限制广播地址。对本机来说,这个地址指本网段内(同一广播域)的所有主机 | |
127.0.0.1~127.255.255.254 | 本机回环地址,主要用于测试。在传输介质上永远不应该出现目的地址为“127.0.0.1”的 数据包。 | |
224.0.0.0到239.255.255.255 | 组播地址,224.0.0.1特指所有主机,224.0.0.2特指所有路由器。224.0.0.5指OSPF 路由器,地址多用于一些特定的程序以及多媒体程序 | |
169.254.x.x | 如果Windows主机使用了DHCP自动分配IP地址,而又无法从DHCP服务器获取地址,系统会为主机分配这样地址。 |
172.16 .2 . 160
Network Subnet Host
DHCP 协议及动态主机如何获取ip
基本网络设置:
将Linux 主机接入到网络,需要配置网络相关设置
静态指定:
ifcfg : ifconfig,route,netstat
ip : object {link,addr,route},ss,tc
system-config-network-tui(setup)
配置文件
centos 7 :新增工具: nmcli,nmtui
动态分配:
DHCP : Dynamic Host Configuration Protocol
ifconfig命令
ifconfig [interface] #显示该接口信息
ifconfig -a #显示所有接口信息
ifconfig #只显示已经处于激活状态的接口信息
ifconfig interface [aftype] options|address...
ifconfig IFACE ip/mask up
比如 #ifconfig eth1 10.1.1.22/24 up
ifconfig IFACE ip network mask up
比如 ## ifconfig eth1 10.1.1.11 netmask 255.255.0.0
注意:立即送往内核中的TCP/IP协议栈中并且,这些操作都是立即生效的
route命令
路由管理命令;可以通过 route -n 来查看路由信息
路由条目类型
- 主机路由:目标地址为单个IP
- 网络路由:目标地址为IP网络
- 默认路由:目标为任意主机,0.0.0.0/0.0.0.0
路由信息添加命令:
route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
示例:
route add -net 10.0.0.0/8 gw 192.168.10.1 dev eth1
route add -net 0.0.0.0/0.0.0.0 gw 192.168.10.1 dev eth1 #添加默认路由
route add default gw 192.168.10.1 dev eth1 #添加默认路由
route add -host 192.168.1.3 gw 172.16.0.1 dev eth0 #添加单个主机到路由
路由信息删除命令:
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 -host 192.168.1.3 #删除执向主机的路由
route del default #删除默认路由
配置动态路由:通过守护进程获取动态路由
-
安装quagga包,支持多种格式的RIP,OSPF,BGP
-
命令vtysh配置
netstat命令
显示路由表信息:
netstat {--route|-r} [--numeric|-n]
-r : 显示内核路由表
-n : 以数字格式显示
显示网络连接:
netstat [--tcp|-t] [--udp|-u] [--udplite|-U] [--sctp|-S] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-n] [--extend|-e[--extend|-e]] [--program|-p]
-
-t :TCP协议的相关连接,连接均有其状态;FSM(Finate State Machine);
-
-u :UDP相关的连接
-
-w :raw socket相关的连接
-
-l :处于监听状态的连接
-
-a :所有状态
-
-n :以数字格式显示IP和Port
-
-e :扩展格式
-
-p :显示相关的进程及PID
常用组合:
-tan;-uan;-tnl;-unl;-tunlp
显示接口的统计数据:
netstat {--interfaces|-I|-i [--all|-a] [--extend|-e] [--verbose|-v] [--program|-p][--numeric|-n]
所有接口: netstat -i
指定接口: netstat -I<IFACE> ifconfig -s <IFACE>
ip命令
配置Linux网络属性
ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT := { link | addr | route | netns }
注意:OBJECT可简写,各OBJECT的子命令也可简写
(1) ip link :network device configuration
ip link set-change device attributes
ip link set eth1 down #down
ip link set eth1 up #up
ip link set eth1 multicast on/off #启用或禁用多播功能
ip link set eth1 name NAME #重命名接口
ip link set eth1 mtu NUMBER #设定mtu默认1500
ip link set eth1 netns PID #用于将接口移动到指定的网络名称空间
ip link [show|list] display device attributes
ip link help 显示简要帮助
ifup/ifdown命令:
注意:通过配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE来识别并完成设置的
(2) ip netns :ip manage network namespaces
ip netns list #列出所有的netns
ip netns add NAME#创建指定的netns
ip netns del NAME #删除指定的netns
ip netns exec NAME COMMAND#在指定的netns运行命令
(3) ip addr - protocol address management
ip addr {add|del} IFADDR dev STRING
[label LABEL]:添加地址时指明网卡别名
[scope {global|link|host}]:指明作用域
global :全局可用
link :仅链接可用
host :本机可用
[broadcast ADDRESS]:指明广播地址,会根据ip和掩码自动计算得到,我们一般不写
ip addr add IFADDR dev IFACE
ifconfig eth1 0 清空eth1接口ip
ip addr add 10.1.252.32/16 dev eth1
ip addr add 10.1.0.1/16 dev eth3 label eth3:0
ip addr delete IFADDR dev IFACE
和ip address add 命令类似
ip addr show IFACE :显示IFACE指定接口的信息
ip address flush dev eth1 #清空eth1接口的所有地址
ip addr flush dev eth0 label eth0:0
(4) ip route - routing table management
添加路由信息:ip route add
ip route add TARGET via GW IFACE src SOURCE_IP
TARGET:
主机路由:IP
网络路由:NETWORK/MASK
ip route add 192.168.0.0/24 via 172.16.0.1
ip route add 192.168.1.13 via 172.16.0.1
ip route add 10.1.2.1/24 via 10.1.2.1 dev eth1 src 10.3.2.1
添加网关:ip route add default via GW dev IFACE
ip route add default via 172.16.0.1
删除路由信息:ip route del
ip route del TARGET
ip route delete 10.1.2.1/24
显示路由: ip route show|list
清空路由表: ip route flush [dev IFACE] [via PREFIX]
ip route flush dev eht1
路由练习:
设备如下:
PC1:kali linux
PC2:WINDOWS 10
R1:CENTOS 6.8
R2:CENTOS 7.2
命令如下:
R1:
ifconfig eth3 192.168.41.1/24
ifconfig eth2 1.1.1.1/24
route add -net 10.100.41.0/24 gw 1.1.1.2 dev eth2
iptables -F
echo 1 > /proc/sys/net/ipv4/ip_forward
R2:
ifconfig eth3 1.1.1.2/24
ifconfig eth4 10.100.41.1/24
route add -net 192.168.41.0/24 gw 1.1.1.1 dev eth3
iptables -F
echo 1 > /proc/sys/net/ipv4/ip_forward
PC1:
ifconfig eth1 192.168.41.41/24
route add default dev eth1
iptables -F
PC2:
10.100.41.41
255.255.255.0
10.100.41.1
ss命令
格式: ss [OPTION]...[FILTER]
netstat通过遍历proc来获取socket信息,ss使用netlink与内核tcp_diag模块通信获取socket信息
OPTION:
-
-t :TCP协议的相关连接
-
-u :UDP相关的连接
-
-w :raw socket相关的连接
-
-l :监听状态的连接
-
-a :所有状态的连接
-
-n :数字格式
-
-p :相关的程序及其PID
-
-e :扩展格式信息
-
-m :内存用量
-
-o :计时器信息
FILTER: [state TCP-STATE][EXPRESSION]
TCP常见的状态:
tcp finite state machine:
LISTEN: 监听
ESTABLISHED: 已建立的连接
FIN_WAIT_1
FIN_WAIT_2
SYN_SENT
SYN_RECV
CLOSED
EXPRESSION:
dport =
sport =
示例: '( dport = :ssh or sport = :ssh )'
ss -tan '( dport=:22 or sport=:22 )'
ss -tan state ESTABLISHED
常用组合:
-tan,-tanl,-tanlp,-uan
常见做法:
-
ss -l 显示本地打开的所有端口
-
ss -pl 显示每个进程具体打开的socket
-
ss -t -a 显示所有tcp socket
-
ss -u -a 显示所有的UDP Socekt
-
ss -o state established '( dport = :smtp or sport = :smtp )' 显示所有已建立的SMTP连接
-
ss -o state established '( dport = :http or sport = :http )' 显示所有已建立的HTTP连接
-
ss -x src /tmp/.X11-unix/* 找出所有连接X服务器的进程
-
ss -s 列出当前socket详细信息
网络配置文件
IP、MASK、GW、DNS相关配置文件: /etc/sysconfig/network-scripts/ifcfg-IFACE
路由相关的配置文件: /etc/sysconfig/network-scripts/route-IFACE
配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE 通过大量参数来定义接口的属性;其可通过vim等文本编辑器直接修改,也可以使用专用的命令来进行修改(centos 6 :system-config-network(setup),centos 7 :nmtui)
ifcfg-eth0 配置文件详解
DEVICE 此配置文件应用到的设备
HWADDR 对应的设备的MAC地址
BOOTPROTO 激活此设备时使用的地址配置协议,常用的dhcp, static, none, bootp
NM_CONTROLLED NM是NetworkManager的简写,此网卡是否接受NM控制;建议CentOS6为“no”
ONBOOT 在系统引导时是否激活此设备
TYPE 接口类型;常见有的Ethernet, Bridge
UUID 设备的惟一标识
IPADDR 指明IP地址
NETMASK 子网掩码
GATEWAY 默认网关
DNS1 第一个DNS服务器指向
DNS2 第二个DNS服务器指向
USERCTL 普通用户是否可控制此设备
PEERDNS 如果BOOTPROTO的值为“dhcp”,是否允许dhcp server分配的dns服务器指向信息直接覆盖至/etc/resolv.conf文件中
管理网络服务:
centos 6: service SERVICE {start|stop|restart|stop}
centos 7: systemctl {start|stop|restart|stop} SERVICE[.service]
配置文件修改后,如果生效,需要重启网络服务
centos 6: service network restart
centos 7: systemctl restart network.service
本地解析器
解析器执行正向和逆向查询
此配置文件在 /etc/hosts
本地主机名数据库和IP地址的映像
对小型独立网络有效
通常,在使用DNS前检查
可以通过 gentent hosts 命令查看 /etc/hosts 内容
dns解析
此配置文件在 /etc/resolv.conf
nameserver 10.1.0.1
nameserver 202.106.0.20
nameserver 8.8.8.8
注意:最多可以有三个
一般情况下,hosts的优先级高于dns解析的优先级,但是,可以通过 /etc/nsswitch.conf 文件来修改优先级
正向解析: FQDN(主机) --> IP
dig -t A FQDN
host -t A FQDN
反向解析: IP --> FQDN
dig -x IP
host -t PRT IP
配置主机名
hostname 命令:
查看:hostname
配置:hostname HOSTNAME 当前系统有效,重启后失效
hostnamectl命令:(centos 7)
hostnamectl status :显示当前主机名等信息
hostnamectl set-hostname NAME:设定主机名,永久有效
配置文件在/etc/sysconfig/network
HOSTNAME=<HOSTNAME>
注意:此方法不会立即生效;但以后后一直有效
配置路由信息:
/etc/sysconfig/network-scripts/route-IFACE
注意:配置完成后,需要service network restart 或 systemctl restart network 重启网络服务生效
配置文件有两种风格:
(1) TARGET via GW
示例: 10.1.0.0/16 via 172.16.0.1
(2) 每三行定义一条路由
ADDRESS#=TARGET
NETMASK#=MASK
GATEWAY#=NEXTHOP
示例:
ADDRESS1=10.1.0.0
NETMASK1=255.255.0.0
GATEWAY1=172.16.0.1
网卡别名
对虚拟主机有用,可以将多个IP地址绑定到一个NIC上: eth0:1 ; eth0:2 ; eth0:3 ...
ifconfig 命令
ifconfig eth0:0 10.1.2.4/16 up
ifconfig eth0:0 down
ip命令
ip addr add 10.1.4.5/16 dev eth0 label eth0:0
ip addr del 10.1.4.5/16 dev eth0 label eth0:0
ip addr flush dev eth0 label eth0:0
注意:
如果是dhcp必须配置到非别名的网卡上,并且禁用NetworkManager,然后重启service network restart,否则不会生效
查看dhcp获取信息
cat /var/lib/dhclient/网卡名
修改网关
1,可以在/etc/sysconfig/network
2,也可以在/etc/sysconfig/network-scripts/ifcfg-eth0
2的优先级大于1的优先级
设备别名:
为每一个设备别名生成独立的接口配置文件
关闭NetworkManager服务
ifcfg-ethx:xxx
必须使用静态联网
DEVICE=eth0:0
IPADDR=10.10.10.10
NETMASK=255.0.0.0 O
NPARENT=yes
注意:必须重启网络服务才可以生效
网络配置:
Linux 网络属性配置的tui
system-config-network-tui
setup
注意:记得重启网络服务方能使之生效
配置当前的主机的主机名
hostname HOSTNAME
/etc/sysconfig/network
HOSTNAME=XXX
hostnamectl set-hostname liuyu7 #直接写到配置文件并生效
网卡名称
网络接口识别并命名相关的udev配置文件
配置规则如下:
/etc/udev/rules.d/70-persistent-net.rules
查看网卡:
dmesg | grep -i eth
ethtool -i eth0
查看系统的加载的驱动信息 lsmod
卸载网卡驱动:
rmmod e1000 或 modprobe -r e1000
装载网卡驱动:
modprobe e1000
网络接口配置-bonding
概念:Bonding 就是讲多块网卡绑定到同一IP地址对外提供服务,可以实现高可用或者负载均衡,当然,直接给两块网卡设置同一IP地址也是不可能的.通过bonding,虚拟一块网卡对外提供连接,物理网卡则被修改为相同的MAC地址
Bonding的工作模式:
Mode 0(balance-rr): 轮转(Round-robin)策略:从头到尾顺序的在每一个slave接口上面发送数据包。本模式提供负载均衡和容错的能力
Mode 1(active-backup): 活动-备份(主备)策略:在绑定中,只有一个slave被激活。当且仅当活动的slave接口失败时才会激活其他的salve。为了避免交换机发生混乱此时绑定的MAC地址只有一个外部端口上可见
Mode 3(broadcast): 广播策略:在所有的slave接口上传送所有的报文。本模式提供容错能力
课外:
mode指定了bond0的工作模式,在redhat中有0-6共7种工作模式,常用的是0和1。
mode=0 表示 load balancing (round-robin)为负载均衡方式,两块网卡都工作。
mode=1 表示 fault-tolerance (active-backup)提供冗余功能,工作方式是主 从的工作方式,也就是说默认情况下只有一块网卡工作,另一块做备份。
mode=2 表示 XOR policy 为平衡策略。此模式提供负载平衡和容错能力
mode=3 表示 broadcast 为广播策略。此模式提供了容错能力
mode=4 表示 IEEE 802.3ad Dynamic link aggregation 为 IEEE 802.3ad 为 动态链接聚合。该策略可以通过 xmit_hash_policy 选项从缺省的 XOR 策略改变到其他策略。
mode=5 表示 Adaptive transmit load balancing 为适配器传输负载均衡。该 模式的必要条件:ethtool 支持获取每个 slave 的速率
mode=6 表示 Adaptive load balancing 为适配器适应性负载均衡。该模式包含 了 balance-tlb 模式,同时加上针对 IPV4 流量的接收负载均衡(receive load balance, rlb),而且不需要任何 switch(交换机)的支持。
bonding 只能提供链路监测,即从主机到交换机的链路是否接通。如果只是交换机对 外的链路 down 掉了,而交换机本身并没有故障,那么 bonding 会认为链路没有问题而继 续使用。
Bonding配置如下:
首先创建bonding设备的配置文件
/etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROTO=none
BONDING_OPTS= "miimon=100 mode=0"
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
USERCTL=no
重启网络服务
查看bond0状态 : cat /proc/net/bond0
Bonding配置:
miimon 是用来进行链路检测的。如果miimom=100,那么系统每100ms 检测一次链路链接状态,如果有一条线路通就转入另一条链路
删除bond0
ifconfig bond0 down
rmmod bonding
详细帮助参看:/usr/share/doc/kernel-docversion/Documentation/networking/bonding.txt
实验如下
通过两块网卡测试bond1 主备
vim /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROTO=dhcp
BONDING_OPTS="miimon=100 mode=1"
vim /etc/sysconfig/network-scripts/ifcfg-eth3
DEVICE=eth3
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
USERCTL=no
vim /etc/sysconfig/network-scripts/ifcfg-eth2
DEVICE=eth2
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
USERCTL=no
service NetworkManager stop
service network restart
主备切换时丢包
centos 7 网络属性配置
rhel 6之前,网络接口使用连续号码命名:eth0,eth1等,当增加或删除网卡时,名称可能会发生变化
rhel 7开始使用基于硬件,设备拓扑和设置类型命名
(1)网卡命名机制:
systemd对网络设备的命名方式
(a) 如果Firmware或BIOS为主板上集成的设备提供的索引信息可用,且可预测则根据此索引进行命名,例如eno1
(b) 如果Firmware或BIOS为PCI-E扩展槽所提供的索引信息可用,且可预测,则根据此索引进行命名,例如ens1
(c) 如果硬件接口的物理位置信息可用,则根据此信息进行命名,例如enp2s0
(d) 如果用户显式启动,也可根据MAC地址进行命名,enx2387a1dc56
(e) 上述均不可用时,则使用传统命名机制
基于BIOS支持启用biosdevname软件
内置网卡:em1,em2
pci卡:pYpX Y:slot X:port
(2)名称组成格式
en: Ethernet 有线局域网
wl: wlan 无线局域网
ww: wwan无线广域网
名称类型:
o<index>: 集成设备的设备索引号
s<slot>: 扩展槽的索引号
x<MAC>: 基于MAC地址的命名
p<bus>s<slot>: enp2s1
网卡设备的命名过程:
第一步:
udev, 辅助工具程序/lib/udev/rename_device, /usr/lib/udev/rules.d/60-net.rules
第二步:
biosdevname 会根据/lib/udev/rules.d/71biosdevname.rules
第三步:
通过检测网络接口设备,根据/lib/udev/rules.d/75-net-description ID_NET_NAME_ONBOARD ID_NET_NAME_SLOT ID_NET_NAME_PATH
如何采用传统命名方式命名
(1)编辑 /etc/default/grub 配置文件
找到 GRUB_CMDLINE_LINUX 并添加修改为: GRUB_CMDLINE_LINUX="rhgb quiet net.ifnames=0"
或者直接修改 /boot/grub2/grub.cfg
(2)为grub2生成其配置文件
grub2-mkconfig -o /etc/grub2.cfg
(3)重启系统