一些网络基础的个人理解:
①网桥的必要性:
在网络主机中 存在着通信线路征用问题. 有以太网csma/cd 和 令牌环网解决方法
在以太网解决方案中:
⑴主机发送消息前查看线路是否被占用 没有占用时发送消息
⑵主机在发送消息时也会进行信号检测.查看是否有别的主机同时发送了消息
⑶如果有别的主机同时发送了消息 .则暂时中断信号发送.稍后再发
这种解决方案在主机数量小时有效.但是如果主机数量多的时候就很容易发生冲突.并且主机的很大 比部分时间都会处于监听的状态
网桥用来分隔冲突域.降低冲突发生的概率
②mac与ip
MAC-介质访问控制: 用来实现本地通信. MAC地址有48位.前24位是ICANN颁发.后24位是由厂商 定义在网络设备上.用来标识每个主机
IP地址用来实现跨局域网通信时的线路链接. 有ABCDE五类
MAC地址用于本地主机间的通信.在跨局域网中.用IP地址寻到对方的位置之后MAC地址用于最后 的数据交换.在本地局域网通信中首先也是使用IP地址.在得知是在同一局域网络之后使用MAC地 址进行传输
③dhcp动态分配地址:
在本地网络中存在一个dhcp服务.用于动态地址分配. 在dhcp中有一个地址池用于保存闲置的可 用地址.本地主机开机后通过广播向dhcp申请一个空闲地址来使用.地址在分配的时候都会有一 个使用寿命. 在没有可用地址时,本地主机会生成一个169.254.random.random的地址用于保证 本地网络间的通信
④DNS服务器地址:
DNS是为基于主机名的通信服务的
DNS有诺干备用地址,但是使用备用条件的条件是首选地址无法连接.而不是首选地址中没有相应 关系数据.如果首选地址中没有相关域名与地址的关系.找谁都没用
配置DNS服务器指向:
配置文件 : /etc/resolv.conf
nameserver DNF_SERVER_IP 必须以数字 不能写名字 最多能写三个
通过ping可以测试
如何测试(host/nslookup/dig)
dig -t A FQDN(主机名)
FQDN --> ip
dig -x IP
IP --> FQDn 互联网上大多数 不支持反解 通过ip得到主机名
ifcfg系列命令: ifconfig , route , netstat
ifconfig 接口及地址查看和管理 ifconfig默认情况下显示当前启用的接口状态太
ifconfig [interface] 查看指定接口
ifconfig -a 显示所有接口 包括当前未活动的接口
ifconfig interface [aftype] options | address... 地址配置
# ifconfig IFAcE IP/MASK [up|down] 立即送往内核中的tcp/ip协议栈 并立即生效
# ifconfig IFAcE IP natmask NETMASK
ifconfig eth1 192.168.10.2/24 up 手动指定IP地址
ifconfig eth1 192.168.10.2 netmask 255.255.255.0 up
ifconfig Iface 0 删除ipv4地址
启用或关闭接口也可以用一下命令来执行
ifup|ifdown Iface
读 /etc/sysconfig/network-scripts/ifcfg-IFACE 来识别接口并完成配置
options
[-]promisc 启用混杂模式 - 表示关闭
管理IPv6地址
add addr/prefixien
del addr/prefixien
route命令 路由查看及处理 发送到某个地址的消息有哪个接口发送
路由条目类型:
主机路由: 目标地址为单个IP
网络路由: 目标地址为IP网络
默认路由: 目标为任意主机 0.0.0.0/0.0.0.0
查看 route -n 把主机名以数字形式显示 不以名字显示 以名字反解显示很耗资源
添加
route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] Iface]
gw 下一跳地址
route add -net 10.0.0.0/8 gw 192.168.10.1 dev eth1 到达10.0.0.0 经由192.168.10.1
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] 添加默认网关
注: 下一跳地址必须与自己的某块网卡处于同一网段中 dev不写也可以自动判断
删除路由
route del [-net|-host] target [gw Gw] [netmask Nm]
示例
route del -net 10.0.0.0/8 gw 192.168.10.1
到达某地址的只有一个下一跳的时候可不用写gw
route del default 删除默认网关
netstat
显示路由表信息 netstat -rn
-r : 显示内核路由表
-n : 数字格式显示
显示网络连接
netstat [--tcp|-t] [--udp|-u] [--udplite|-U] [--sctp|-S] [--raw|-w]
-t : TCP协议的相关链接 连接均由其状态: FSM(有限状态)
-u : UDPF相关链接 UDP没有监听状态这一东西 udp是没状态的
-w : raw socket相关的连接
-l : 处于监听状态的连接
-a : 所有状态
-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> 中间没有空格
iproute2系列 --未来取代ifconfig系列
与内核密切相关的程序包. 与内核密切相关.只能使用内核拥有的功能
ip 查看/管理路由,设备,策略路由,隧道
ip [OPTIONS] OBJECT {COMMAND | help}
OBJECT:={link | addr | route | netns-只能在CentOS 7 中使用}
注:ip子命令可以简写 但是我不喜欢 所以不说明了
ip link 网络设备配置
ip link {set|show|help}
ip link set 管理修改设备属性
ip link set dev command
ip link set [dev] 设备名
up or down 启动或关闭接口
arp on or arp off 是否支持arp地址解析
multicast on or multicast off 启用或禁用多播(组播)功能
name NAME 重命名设备接口 要先把接口down掉
mtu NUMBER : 设置默认MTU的大小 默认为1500
netns PID : ns为namespace 将接口移动到指定的网络名称空间
名称空间可用来配置复杂的虚拟网络.移动到指定网络名称空间后在当前默认 下是查看不到该接口的信息
ip link show显示设备属性OBJECT都可以简写 只要能唯一识别
ip link help 显示简要使用帮助
ip netns : 管理网络名称空间 ---只能在CentOS 7 中使用
ip netns list
ip netns add NAME
ip netns del NAME
ip netns exec NAME COMMAND 在指定的netns中运行命令
ip address 管理ip地址 对接口的ip地址进行增删查改
ip address add
ip addr add IFADDR dev IFACE 一个接口可以添加多个地址 重复命令分别输入即可 ifconfig 显示的是添加的第一个地址
[label NAME] : 为额外添加的地址起接口别名 之后ipconfig就能显示额外地址
例 : ip addr add 192.168.1.100/24 dev eth1
ip addr add 192.168.1.100/24 dev eth1 label eth1:string
[broadcast ADDRESS] : 广播地址. 会根据IP和NETMASK 自动计算得到 一般不会用
[scope SCOPE_VALUE] : 作用域 用处不大
global:全局可用 可用于与其他主机通信
link : 接口可用 可以ping自己 别人不能ping 不用于与别人通信
host : 仅本机可用 别人看都看不见.只能自己用
ip address delete
ip addr delete IFADDR dev IFACE
add的追加属性也可以用 单独删除属性
ip address show [IFACE]
ip address flush 清空地址
ip addr flush dev IFACE 清空指定接口的所有地址
iproute 路由表管理
ip route add
ip route change
ip route replace 修改会新建 这三个用法一样 用add示例
ip route TYPE PREFIX via gw [dev IFACE] [src SOURCE ip]
ip route add 192.168.0.0/24 via 10.0.0.1 dev eth1 到达192.168.0.0 要经过10.0.0.1
ip route add default via 172.16.0.1 dev eth0 到达默认网关要经过 172.16.0.1
ip route delete
ip route del TYPE PRIFIX 即 ip route delete 目的ip
如果要删除PREFIX的中的某个路径时可以添加后缀
ip route show
ip route list
ip route get TYPE PREFIX 获取单个条目
ip route flush [n/8|16|24] 删除n开头的诺干为掩码的所有路由表
100/8 删除100开头的所有A类地址
ss 命令 显示路由表 信息 取代netstat
ss [options] [FILTER] FILTER 过滤器
选项:
-t : TCP协议相关链接
-u : UDP相关的链接
-w : raw socket 相关链接
-l : 监听状态链接
-a : 所有状态链接
-n : 数字格式
-p : 相关的程序及其PID
-e : 扩展格式信息
-m : 链接占用的内存用量
-o : 计时器信息
filter :=[ state TCP-STATE] [EXPRESSION] 过滤器 只看指定状态链接
TCP的常见状态:
TCP FSM :
LISTEN : 监听
ESTABLISEHD : 建立的链接
FIN_WAIT_1 : 主动关闭 等待对方确认
FIN_WAIT_2 : 收到对方确认 等待对方发送关闭连接请求 SYS_SENT : 发出连接请求 等确认
SYN_RECV : 收到连接请求 未确认
CLOSED : 阻塞 关闭状态
EXPRESSION 显示指定端口
dport= 目标端口
sport= 源端口
示例: ‘( dport = :# or sport = :22 )‘
ss -tan ‘( dport = :# or sport = :22 )‘
ss -tan state ESTABLISEHD
通过修改配置文件 使网络属性永久有效
IP/NETMASK/GW/DNS 等属性的配置文件 使用vim直接编辑
/etc/sysconfig/network-scripts/ifcfg-IFACE
路由的相关配置文件
/etc/sysconfig/networkj-scripts/ourte-IFACE
当不想用vim编辑的时候可以使用界面配置
CentOS 6: system-config-networ(专门网络配置)或setup(非专门设置网络配置)
CentOS 7: nmtui
ifcfg-IFACE配置文件 :
DEVICE=此配置文件对应的设备名称 要与IFACE保持一致
ONBOOT=在系统引导过程中 是否激活此接口
NETBOOT=是否支持网络引导
UUID=此设备唯一标识
IPV6INIT= 是否初始化IPv6
BOOTPROTO= 激活此接口时使用什么协议来配置接口属性.常用的有dhcp,bootp ,static ,none
TYPE=接口类型 常见的有 Ethernet , Bridge
DNS1: 第一DNS服务器指向:
DNS1: 备用DNS服务器指向:
DOMAIN: DNS 搜索域 -以后再讲就明白了
GATEWAY : 默认网关
IPADDR : 配置IP地址
NETMASK : 子网掩码 : CentOS 7 支持使用 PREFIX以长度方式指明子网掩码
USERCTL : 是否允许普通用户控制此设备
PEERDNS : 如果BOOTPROTO的值为 "dhcp" ,是否允许dhcp server分配的dns 服务器指 向覆盖本地手动指定的DNS服务器指向默认为允许
NM_CONTROLLED : 是否使用networkmanager服务
centOS 6 建议用network 不要用networkmanager
HWADDR : 设备的MAC地址 ==已经被厂商定义 所以没什么用
管理网络服务:
CentOS 6 : service SERVICE { start | stop | status | restart }
service network restart
CentOS 7 : systemctl { start | stop | restart | statuc } SERVICE[.service]
systemctl restart network.service
使非默认网关 并永久有效时 编辑:
/etc/sysconfig/network-scripts/route-IFACE 之后重启网络服务
两者不可混用
(1) 每行一个路由条目
TARGET via GW
(2) 每三行一个路由条目
ADDRESS#=TARGET
NETMASK#=MASK
GATEWAY#=NEXTHOP
给接口配置多个地址:
ip addr之外 ifconfig或复制配置文件都可以
(1) ifconfig IFACE_LABEL IPADDR/NETMASK 先为接口设置别名
IFACE_LABEL: eth0:0 eth0:1
(2)为别名添加配置文件 把接口配置文件复制后改为接口:别名
cp file file:0
DEVICE=IFACE_LABEL 即DEVICE 中 :
BOOTPROTO : 网卡别名不支持动态获取地址 只能为 static 或 none