IP地址计算
1.一个网段中主机数 = 2^主机ID数 - 2
2.网段数 = 2^可变的网络ID位
3.网络ID = IP与子网掩码
4.划分子网数量 = 2^网络ID向主机ID借位的位数
子网掩码计算
IP地址: 10.0.0.2 00001010.00000000.00000000.00000001 进行与运算
子网掩码:255.0.0.0 11111111.00000000.00000000.00000000
网络ID: 00001010.00000000.00000000.00000000
10. 0. 0. 0
CIDR:无类域间路由,网络ID位不按整数8位划分,按需划分
CIDR表示法,IP/网络ID数
IP地址:210.222.123.20/26
IP地址: 11010010.11011110.01111011.00010100
子网掩码:11111111.11111111.11111111.11000000
网络ID: 11010010.11011110.01111011.00000000
简单计算方法:子网掩码位数皆为1,相与皆为原值
前面和子网掩码对应的整八位不用计算,直接原值,只有与子网掩码有位数不同的才需要计算
IP地址: 210.222.123.20/21
子网掩码:21位掩码,前16位两段直接就是255,后面有5位需要计算,其余补0
则11111000 --> 248
可得子网掩码为255.255.248.0
计算网络ID:与子网掩码相与的前16位直接原值210.222.
第三段IP地址123解为二进制为01111011
子网掩码第三段解为二进制为11111000
相与计算:01111000 --> 120
则网络ID为:210.222.120.0
两个主机的通信
A:10.0.200.1/24
B:10.0.210.2/16
A--->B
通信过程:
1. IPA与A netmask => A网段=10.0.200.0
2. IPB与A netmask => B网段=10.0.210.0
3. 比较两个值,一样则认为可以通信
A<---B
通信过程:
1. IPA与B netmask => A网段=10.0.0.0
2. IPB与B netmask => B网段=10.0.0.0
3. 比较两个值,一样则认为可以通信
实际情况:
A主机认为不可到达B主机
B主机认为可以到达A主机,可以ping,但是无回应,会超时
私有IP地址
A类: 10.0.0.1 --- 10.255.255.254
B类: 172.16.0.1 --- 172.31.255.254
C类: 192.168.0.1 --- 192.168.255.254
这类IP不能在互联网直接访问,只能在局域网里使用
划分子网:将一个大网划分多个小网,网络ID位向主机ID借位,网络ID位增多,主机ID变少
公式:划分子网数量 = 2^网络ID向主机ID借位的位数
借一位 10.0.0.0/8 -->> 10.0.0.0/9
第一段
10.0 0000000.0.0
10.0.0.1 -- 10.127.255.254
第二段
10.1 0000000.0.0
10.128.0.1 -- 10.255.255.254
借两位 10.0.0.0/8 -->> 10.0.0.0/10
第一段
10.00 000000.0.0
10.0.0.1 -- 10.63.255.254
第二段
10.01 000000.0.0
10.64.0.1 -- 10.127.255.254
第三段
10.10 000000.0.0
10.128.0.1 -- 10.191.255.254
第四段
10.11 000000.0.0
10.192.0.1 -- 10.255.255.254
习题:
10.0.0.0/8中国移动给全国32省划分独立的子网,第10个子网是河南,对河南各地市划分16个子网
1.新的子网的netmask
255.255.128.0
2.新的子网的主机数
32766
3.最小的和最大的子网的网络ID
10.72.0.1/17
10.79.128.1/17
4.最大的子网的IP范围
10.79.128.1 -- 10.79.255.254
路由表的构成
1.网络ID netmask: 目标主机所在网络ID
2.接口interface:到达目标主机所在网络ID,从当前router哪个出口发出去,可以到达,出口就是接口
3.网关gateway:到达非直连网络时,将数据发送到下一个路由器的邻近我的接口的IP,即网关
本地解析
/etc/hosts
CentOS 6
网卡配置文件
/etc/udev/rules.d/70-persistent-net.rules
网卡驱动
ethtool -i eth0 查看eth0网卡的驱动模块
modprobe -r e1000 卸载驱动模块e1000
modprobe e1000 加载驱动模块e1000
在网卡配置文件里面修改了网卡名称需要卸载网卡再加载
ifconfig eth0 down 禁用网卡eh0
ifconfig eth0 up 启用网卡eth0
ip link set eth0 up 启用网卡
ip link set eth0 down 禁用网卡
ifconfig eth0 1.1.1.1/24 给网卡eth0加IP,临时性,重新down再up就丢失,一般用于测试环境
ifconfig eth0:1 2.2.2.2/24 给网卡eth0加多个地址,添加别名实现,否则会覆盖
ifdown eth0 可以down IP地址,但是网卡还是up状态
ifup eth0 up以后,临时IP都会丢失
ifconfig -s eth0 网卡eth0统计信息
watch -n0.5 ifconfig -s eth0 每0.5秒扫描一次变化
静态指定
ifconfig,route,netstat
ip {addr,link,route}
system-config-network 网卡地址配置
steup 电脑总体配置,包含网卡
混杂模式:可以接受非本机地址的数据包,用于数据分析,或者窃听网络
路由器命令
route -n 路由信息查看
route add 添加路由
网络路由:
route add -net 10.10.10.0/24 gw 172.16.0.1 dev eth0
主机路由: 精确地址的优先级会更高
route add -host 10.10.10.1/24 gw 172.16.0.1 dev eth0
netstat 显示当前网络连接情况
-n :解析为数字
-l :处于监听状态
-t :TCP协议
-u :UDP协议
-p :显示程序名和进程 可以用于检查应用程序在网络上,如果不需要可以删除的程序
-a :所有状态
-r :显示路由表 一般加n
-i :显示端口的流量
-I :显示某个端口流量 格式特殊 netstat -Ieth0 和端口必须连起来写
常用组合:-tan,-uan,-tnl,-unl
关闭SELINUX
getenforce 查看状态
setenforce 0 临时关闭,重启失效
vim /etc/sysconfig/selinux 修改SELINUX=disabled,重启不开启服务
iptables关闭
chkconfig iptables off 临时关闭,重启失效
service iptables stop 关闭服务,重启不开启服务
iptables -vnL 查看状态
centos做路由器
echo 1 > /proc/sys/net/ipv4/ip_forward 开启路由转发功能,状态由0改为1
DHCP自动获取地址
dhclient 自动获取ip地址命令
多路由网络实验:
1.关闭selinux
getenforce 查看状态
setenforce 0 临时关闭,重启失效
vim /etc/sysconfig/selinux 修改SELINUX=disabled,重启不开启服务
2.关闭iptables
chkconfig iptables off 临时关闭,重启失效
service iptables stop 关闭服务,重启不开启服务
iptables -vnL 查看状态
3.关闭NetManager
service NetManager stop
4.网卡配置文件
/etc/sysconfig/network-scripts/ifcfg-eth1 增加的网卡如果不稳定,掉IP,增加配置文件
5.echo 1 > /proc/sys/net/ipv4/ip_forward 路由转发功能,支持路由功能
IP、MASK、GW、DNS相关配置文件:
/etc/sysconfig/network-scripts/ifcfg-IFACE
静态配置:
DEVICE=ethX
HWADDR=00:02:8A:A6:30:45 改MAC地址,MACADDR=00:00:00:00:00:00
IPADDR=192.168.0.123
NETMASK=255.255.255.0
GATEWAY=192.168.0.254
DNS1=114.114.114.114
DNS2=8.8.8.8
ONBOOT=yes
Type=Ethernet
动态配置:
DEVICE=ethX
HWADDR=0:02:8A:A6:30:45
BOOTPROTO=dhcp
ONBOOT=yes
Type=Ethernet
路由相关的配置文件:
/etc/sysconfig/network-scripts/route-IFACE
10.0.0.0/8 via 172.16.0.1
windows系统IP命令
ipconfig
/renew 重新申请DHCP
/release 释放当前IP,重新申请
/all 显示完整配置信息
/flushdns 清除DNS解析程序缓存
ss命令
格式:ss [OPTION]... [FILTER]
netstat通过遍历proc来获取socket信息,ss使用netlink与内核tcp_diag,ss命令性能更佳
模块通信获取socket信息。
选项:
-t: tcp协议相关
-u: udp协议相关
-w: 裸套接字相关
-x:unix sock相关
-l: listen状态的连接
-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 )’
常用组合:
-tan, -tanl, -tanlp, -uan
常见用法
ss -l 显示本地打开的所有端口
ss -pl 显示每个进程具体打开的socket
ss -t -a 显示所有tcp socket
ss -u -a 显示所有的UDP Socekt
ss -o state established '( dport = :ssh or sport = :ssh )' 显示所有已建立的ssh连接
ss -o state established '( dport = :http or sport = :http )' 显示所有已建立的HTTP连接
ss -s 列出当前socket详细信
ip命令
show / manipulate routing, devices, policy routing and tunnels
ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT := { link | addr | route }
ip link - network device configuration
set dev IFACE
可设置属性:
up and down:激活或禁用指定接口
ifup/ifdown
show [dev IFACE]:指定接口
[up]:仅显示处于激活状态的接口
ip addr { add | del } IFADDR dev STRING
[label LABEL]:添加地址时指明网卡别名
[scope {global|link|host}]:指明作用域
global: 全局可用
link: 仅链接可用
host: 本机可用
[broadcast ADDRESS]:指明广播地址
ip address show - look at protocol addresses
[dev DEVICE]
[label PATTERN]
[primary and secondary]
ip address flush - 使用格式同show
ip addr add 172.16.100.100/16 dev eth0 label eth0:0
ip addr del 172.16.100.100/16 dev eth0 label eth0:0
ip addr flush dev eth0 label eth0:0
ip route - routing table management
添加路由:ip route add
ip route add TARGET via GW dev 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 default via GW dev IFACE
ip route add default via 172.16.0.1
删除路由:ip route delete
ip route del TARGET
显示路由:ip route show|list
清空路由表:ip route flush [dev IFACE] [via PREFIX]
ip route flush dev eth0
改主机名:
centos6
1.vim /etc/sysconfig/network 修改文件永久生效
HOSTNAME=newhostname
2.# hostname newhostname 命令临时启用新名
3.exit 重新登陆
4.vim /etc/hosts 在127.0.0.0 后添加新名
centos7
hostname newhostname 直接命令修改永久生效
exit 重新登陆
DNS配置文件:
/etc/hosts 本地解析文件
/etc/nsswitch.conf DNS解析服务,优先级设置
BONDING配置:多网卡绑定
Mode 0 (balance-rr)
轮转(Round-robin)策略:从头到尾顺序的在每一个slave接口上面发送数据包。本模式提供负载均衡和容错的能力
Mode 1 (active-backup)
活动-备份(主备)策略:只有一个slave被激活,当且仅当活动的slave接口失败时才会激活其他slave。为了避免交换机发生混乱此时绑定的MAC地址只有一个外部端口上可见
Mode 3 (broadcast)
广播策略:在所有的slave接口上传送所有的报文,提供容错能力
active-backup、balance-tlb和balance-alb模式不需要交换机的任何特殊配置。其他绑定模式需要配置交换机以便整合链接。如:Cisco 交换机需要在模式 0、2 和 3 中使用EtherChannel,但在模式4中需要 LACP和 EtherChannel
配置文件:
/etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0 仅名称,不具有模式功能
BOOTPROTO=none
BONDINGOPTS="miimon=100 mode=0" miimon网卡间通讯间隔,mode网卡bonding模式
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
MASTER=bond0 加入的bond名
SLAVE=yes 是否为从属设备
USERCTL=no
/etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth0
BOOTPROTO=none
MASTER=bond0 加入的bond名
SLAVE=yes 是否为从属设备
USERCTL=no
需要几张网卡就加几张,格式同上
/proc/net/bonding/bond0 查看bonding信息
删除bonding
ifconfig bond0 down 停用
lsmod |grep bond ethtool -i bond0 检查所用驱动模块
modprobe -r bonding 或rmmod bonding 删除驱动模块
rm -f ifcfg-bond0 删除配置文件
vim ifcfg-eth0 修改网卡文件
Centos7配置
删除虚拟网卡
yum remove libvirt-daemon 删除虚拟网卡
lsmod |grep brid ethtool -i virbr0-nic 检查驱动模块
rmmod tun 删除驱动
网卡采用传统方式命名:
1.编辑/etc/default/grub配置文件
GRUB_CMDLINE_LINUX="rhgb quiet net.ifnames=0"
或:修改/boot/grub2/grub.cfg
2.为grub2生成配置文件
grub2-mkconfig -o /etc/grub2.cfg
3.重启系统
主机名更改
hostnamectl set-hostname newname 命令改名一次性到位
更改配置/etc/hosts 避免网络问题
图形化工具:nm-connection-editor
字符配置工具:nmtui
命令行工具:nmcli 主流
网卡配置文件生成:
nmcli connection add con-name ens33-idc type ethernet ifname ens33 ipv4.method manual ipv4.addresses 192.168.1.6/24 ipv4.gateway 192.168.1.1 ipv4.dns 8.8.8.8 添加配置文件
nmcli connection add con-name ens33-office type ethernet ifname ens33 ipv4.method auto
connection.autoconnect yes|no 是否自动启动 同onboot
con-name ens33-idc 命名
type ethernet 类型
ifname en3ss 网卡设备名
ipv4.method {manual|} 手动指定模式,自动模式
nmcli connection modify ens33-idc +ipv4.addresses 1.1.1.1/24 增加IP
+ipv4.gateway
+ipv4.dns1
nmcli connection up ens33-idc 启用某个配置文件
nmcli connection reload 重新读取配置文件
nmcli connection show ens33 显示详细信息
nmcli connection delete ens33-idc 删除配置文件
nmcli device 查看网卡状态
nmcli device status 查看网卡状态
nmcli device disconnect ens33 断开网卡
nmcli device connect ens33 连接网卡
nmcli connection modify ens33-idc connection.id ens33-office 改名
nmcli connection modify ens33-idc connection.autoconnect yes onboot更改
添加bond
添加bonding接口:
nmcli con add type bond con-name mybond0 ifname mybond0 mode active-backup ipv4.method manual ipv4.addresses 192.168.1.100/24
添加从属接口:
nmcli con add type bond-slave1 ifname ens37 master mybond0
nmcli con add type bond-slave2 ifname ens33 master mybond0
首先启动从属接口
nmcli con up bond-slave-eth0
nmcli con up bond-slave-eth1
启动绑定
nmcli con up mybond0
修改bond
nmcli c modify bond0 ipv4.method auto 修改属性然后
nmcli c down bond0 slave1 slave2 down掉bond0,slave1,slave2
nmcli c up bond0 up,三块网卡
nmcli c up slave1
nmcli connection up slave2