Linux学习从入门到打死也不放弃,完全笔记整理(持续更新,求收藏,求点赞~~~~)
http://blog.51cto.com/13683480/2095439
笔记整理开始时间:2018年5月2日18:52:09
第12章,网络管理(下)网络基础配置
本章内容
IP地址配置
路由管理
配置文件管理
DNS配置
基本网络配置
将linux主机接入到网络,需要配置网络相关设置。
一般包括如下操作:
主机名
IP/netmask
路由:默认网关
DNS服务器
主DNS服务器
次DNS服务器
第三DNS服务器
centos6网卡名称:
接口命名方式:centos 6
以太网:eth[0,1,2,...]
ppp: ppp[0,1,2,...]
网络接口识别并命名相关的udev配置文件:
/etc/udev/rules.d/70-persistent-net.rules
查看网卡驱动:
dmesg dmesg | grep -i eth
ethtool ethtool -i eth0
卸载网卡驱动:
modprobe modprobe -r e1000
rmmod rmmod e1000
装载网卡驱动:
modprobe e1000
网络配置方式:
静态指定:
ifconfig,route,netstat
ip:object{link,addr.route},ss,rc
system-config-network-tui,setup
配置文件
动态分配:
DHCP:Dynamic Host Configuration Protlcol
ifconfig:
ifconfig [interface] 查看网络接口
ifconfig -a 显示所有网络接口(包含状态为down)
ifconfig InterFace [up|down] 启用、关闭网络接口(网卡)
ifconfig interface [aftype] options | address
ifconfig IFACE IP/netmask [up]
ifconfig IFACE IP netmask NETMASK 配置IP地址
注意:
修改立即生效
启用混杂模式:[-]promisc
route:
路由记录类型:
主机路由 -host
网络路由 -net netmask
默认路由
查看:
route -n
添加路由:route add
route add [-host|-net] target [netmask NM] [gw GW] [dev IFACE]
添加主机路由:
目标192.168.1.3 网关 172.16.0.1
route add -host 192.168.1.3 gw 172.16.0.1 [dev eth0]
添加网络路由:
目标:192.168.0.0 网关 172.16.0.1
route add -net 192.168.0.0/24 gw 172.16.0.1
route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1
添加默认路由:
默认路由网关:172.16.0.1
route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.1
route add default gw 172.16.0.1
删除路由:route del
route del [-host|-net] target [gw GW] [netmask NM] [dev IF]
删除主机路由:
目标:192.168.1.3 网关 172.16.0.1
route del -hos 192.168.1.3 gw 172.16.0.1
删除网路路由:
目标:192.168.0.0 网关 172.16.0.1
route -net 192.168.0.0 netmask 255.255.255.0
删除默认路由:
route del default gw 172.16.0.1
###配置动态路由:
通过守护进程获取动态路由
### 安装quagga包
### 主持多种路由协议:rip,ospf。bgp
### 命令vtysh配置
netstat:
print network connections,routing tables,interface statistics,
masquerade connections,and multicast memberships
显示网路连接:
netstat [--tcp|-t][--udp|-u][--raw|-w][--listening|-l][--all|-a]
[--numeric|-n][--extend|-e][--program|-p]
-t|--tcp tcp协议
-u|--udp udp协议
-w|--raw raw socket相关
-l|--listen 处于监听状态
-a|--all 所有状态
-n|--numeric 以数字显示IP和端口
-e|--extend 扩展格式
-p|--program 显示相关进程及PID
常用组合:
-tan ,-uan,-tnl -unl
显示路由表:
netstat {--route|-r}[--numeric|-n]
-r 显示内核路由表
-n 数字格式
显示接口统计数据:
netstat {--interface|-l}[iface][--all|-a][--extend|-e]
[--program|-p][--numeric|-n]
netstat -i
netstat -I=IFACE
ifconfig -s iface
ip:
配置Linux网络属性:ip命令
ip - show / manipulate routing,devices,policy routing and tunnels
显示/操作路由、设备、策略路由和隧道
格式:
ip [options] objecet {command|help}
object: {link|addr|route..}
PS: centos6 默认不支持ip等命令补全,需安装辅助包 epel源中
yum install bash-completion
ip link:
ip link -network device configuration 网络设备配置
ip link set IFACE up|down == ifconfig IFACE up|down
down掉之后ifconfig 需要加-a选项查看,ip a, ip link 可直接看到状态down
ifup/ifdown:
需要由配置文件,且down掉之后ifconfig可以查看网卡
ip link 状态也依然up
ip link show iface 单独查看某一网卡
ip addr:
address|ad|a...:
ip addr {add | del} IFADDR dev STRING
[label LABEL] 添加地址时指明网卡别名如(:#)
[scope{global,link,host}] 指明作用域
globel:全局可用
link:仅链接可用
host:本机可用
[broadcast ADDRESS]:指明广播地址
ip addr show|flush dev IFACE 查看清空IP地址
ip route:
ip route add 添加路由
ip route add TARGET via GW dev IFACE src SOURCE-IP
TARGET:
主机路由:IP
网络路由:NET/MASK
ip route add 192.168.0.0/24 via 172.16.0.1
ip route add 192.168.6.6 via 172.16.0.1
添加网关:
ip route add default via GW
ip route add default via 172.16.0.1
ip route delete 删除路由
ip route delete TARGET
ip route show|list 显示路由
ip route flush [dev IFACE][via PREFIX]
清除路由
ss:命令
格式:ss [option]...[FILTER]
netstat 通过遍历proc来获取socket信息,ss使用netlink与内核tcp_diag模块
通信获取socket信息
选项:
-t tcp协议先关
-u udp协议相关
-w 裸套接字相关
-l listen状态的连接
-a 所有
-n 数字格式
-p 相关的程序及PID
-e 扩展的信息
-m 内存用量
-o 计时器信息
-s 列出当前socket的详细信息
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 state ESTABLISHED sport = :ssh
常用组合:
-tan ,-tanl, -tanlp,-uan
常见用法:
ss -l 显示本地打开的所有端口
ss -pl 显示每个进程具体打开的socket
ss -ta 显示所有的tcp socket
ss -ua 显示所有的udp socket
ss -o state established '( dport = :ssh or sport = :ssh )'
显示所有已建立的ssh连接
ss -o state established '( dport = :http or spout = :http )'
显示所有已建立的http连接
ss -s 列出当前socket的详细信息
网络配置文件:
ip,mask,gw,dns相关配置文件:
/etc/sysconfig/network-scripts/ifcfg-IFACE
路由相关的配置文件:
/etc/sysconfig/network-scripts/route-IFACE
NDS配置文件:
/etc/resolv.conf
参考说明:
centos6.9 /usr/share/doc/initscripts-9.03.58/sysconfig.txt
centos7.4 /usr/share/doc/initscripts-9.49.39/sysconfig.txt
ifcfg-IFACE:
DEVICE 此配置文件应用到的设备
HWADDR 对应的设备的MAC地址,如修改,可改为MACADDR=
BOOTPROTO 激活此设备时使用的地址配置协议,常用的dhcp,static,none,bootp
NM_CONTROLLED: NM为:NetworkManager的简写,此网卡是否接受NM控制
ONBOOT 在系统引导时是否激活此设备
TYPE 接口类型;常见的有Ethernet,Bridge
UUID uuid
IPADDR ip地址
NETMASK 子网掩码
PREFIX netmask 使用/24 写法
GATEWAY 默认网关
DNS1 第一个DNS服务器指向
DNS2 第二个DNS服务器指向
USERCTL 普通用户是否可控制此设备
PEERDNS 如果BOOTPROTO的值为dhcp ,是否允许dhcp server分配的dns
服务器指向信息直接覆盖/etc/resolv.conf
DEFROUTE 是否把这个eth设置为默认路由
PEERROUTES 是否从DHCP服务器获取用于定义接口的默认网关的信息的路由表条目
IPV6INIT 是否启用IPv6接口
IPV4_FAILURE_FATAL=yes 如果ipv4配置失败禁用设备
IPV6_FAILURE_FATAL=yes 如果ipv6配置失败禁用设备
route-IFACE:
两种书写风格:
1. TARGET via GW
如:192.167.10.0/24 via 192.168.65.1
192.168.8.8 via 192.168.65.1
2. 每三行定义一条路由
ADDRESS#=ip
NETMASK#=mask
GATEWAY#=gw
PS: #:为数字 必须从0开始
如需添加主机路由 mask 255.255.255.255
如需添加默认路由 ip 和mask 都为 0.0.0.0
配置文件修改之后生效:
service network restart centos6
systemctl restart network centos7
主机名和本地解析器:
配置当前主机的主机名:
hostname HOSTNAME
立即生效,如果想要提示符修改需重新登录,重启失效
/etc/sysconfig/network
重启生效
解析器执行正向和逆向查询
/etc/hosts
本地主机名数据库和ip地址的映像
对小型独立网络有用
通常,在使用DNS前检查
getent hosts 查看/etc/hosts内容
dns名字解析:
/etc/resolv.conf DNS记录配置文件
nameserver DNS-SERVER-ip1
nameserver DNS-SERVER-ip2
nameserver DNS-SERVER-ip3
/etc/nsswitch.conf
优先于/etc/hosts 且可以设置/etc/hosts 优先级
38 hosts: files dns
将files 和 dns 跟换顺序即可降低hosts优先级
正向解析:name--> ip
dig dig [-t A] name [+trace]
host host -t A name
反向解析:ip--> name
dig -x ip
host -t PTR ip
网卡别名:
对虚拟主机有用
将多个IP地址绑定到一个网卡(NIC)上
eth0:1 , eth0:2 ,eth0:3
使用ifconfig添加:
ifconfig eth0:1 192.168.8.8/24
ifconfig eth0:1 down
使用ip命令添加:
ip add add 172.16.1.2/24 dev eth0
ip a a 172.16.1.3/16 dev eth0 label eth0:1
ip addr del 172.16.1.2/24 dev eth0
ip a flush dev eth0 label eth0:0
设备别名:
为每个设备别名生成独立的接口配置文件:
关闭NetworkManager服务
ifcfg-ethX:xxx
必须使用静态联网
DEVICE=eth0:xxx
IPADDR=ip
NETMASK=mask
PREFIX=
ONPARENT=yes 表明从属关系
网络接口配置-bonding
bonding
将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。
直接给两块网卡设置同一IP地址是不可以的。通过bonding,虚拟一块网卡对
外提供连接,物理网卡被修改为相同的MAC地址
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
创建bonding设备的配置文件:
/etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROTO=none
BONDING_OPTS="miimon=100 mode=0"
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eht0
BOOTPROTO=none
MASTE=bond0
SLAVE=yes
USERCTL=no
查看bond0状态: /proc/net/bonding/bond0
miimon是用来进行链路监测的。如果miimon=100,那么系统每100ms监测一次链路
状态,如果一条线路不通就转入另一条线路
删除bond0
ifconfig bond0 down
rmmod rmmod bonding
详细帮助:
https://www.kernel.org/doc/Documentation/networking/bonding.txt
CentOS 7 网络属性配置
Centos 6之前,网络接口使用连续号码命名:eth0、eth1等,当增加或删除网卡时,名称
可能会发生变化
CentOS7使用基于硬件,设备拓扑和设置类型命名
1 网卡命名机制:
systemd对网络设备的命名方式:
a 如果Fireware或BIOS为主板上集成的设备提供的索引信息可用,且
且可预测,则根据此索引进行命名,例如eno1
b 如果Fireware或BIOS 为PCI-E扩展槽提供的索引信息可用,且可预测,则
根据此索引进行命名,例如ens1
c 如果硬件接口的物理位置信息可用,则根据此信息进行命名,例如enp2s0
d 如果用户显示启动,也可根据MAC地址进行命名,如enx2387...
e 上述均不可用时,则使用传统命名机制
基于BIOS支持启用biosdevname软件:
内置网卡: em1,em2
pci卡: pYpX Y:slot,X:port
2 名称组成格式:
en: Ethernet 有限局域网
wl: wlan 无限局域网
ww: wwan 无线广域网
名称类型:
o <index>: 集成设备的设备索引号
s <soft>: 扩展槽的索引号
x <MAC>: 基于MAC地址的命名
p<bus>s<slot>: enp2s1
采用传统命名方式:
1 编辑/etc/default/grub配置文件
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet net.ifnames=0
2 为grub2生成其配置文件
grub2-mkconfig -o /etc/grub2.cfg
3 重启系统
或者直接修改/boot/grub2/grub.cfg
在linux16.* 行尾添加 net.ifnames=0
Centos 7修改主机名:
配置文件:/etc/hostname,默认没有此文件,通过DNS反向解析获取主机名,
默认为:localhost.localdomain
显示主机名信息:
hostname
hostamectl status
设置主机名:
hostnamectl set-hostname centos7.4
Centos7网络配置工具:
nm-connection-editor 图形工具:nm-connection-editor
nmtui 字符配置tui工具:nmtui
nmcli 命令行工具:nmcli
nmcli:
由NetworkManager 提供的地址配置工具,必须开启NM服务
设备(device)即网络接口
连接(connection)是对网络接口的配置。
添加连接(nmcli con add)使一个网络接口可有多个连接配置,但同时只有一个连接配置生效
格式:
nmcli []options] object {command|help}
device - show and manage network interface
connection - start,stop,and manager network connections
nmcli device help | show | modify|..
配置网卡属性,现在进行
nmcil connection help | show |add |modify |del|up|down|..
PS:使用nmcli dev status 查看之后最后一项 CONNECTION 值,即为连接的
connection名称,
使用nmcli con modify CONNECTION
或者 nmcli con show CONNECTION
需注意
修改ip地址等属性:
nmcli connection|device modify CONNECTION [+|-]setting.property value
setting.property
ipv4.addresses
ipv4.gateway
ipv4.dns1|2
ipv4.method 值为:manual(静态)|auto(dhcp)
+|- 用于多条记录情况
直接修改配置文件之后执行生效:
systemctl restart network
nmcli con|connection reload
nmcli命令生效:
nmcli con down eth0;nmcli con up eth0
显示所有连接:
nmcli connection show
显示所有活动连接:
nmcli con show --active
显示网络连接配置:
nmcli con show "System eth0" | CONNECTION
显示设备状态:
nmcli dev status
显示网络接口属性:
nmcli dev show IFACE
创建新连接:
nmcli con add con-name NAME type Ethernet ifname ens37
添加连接NAME,ip自动通过dhcp获取,配置在ens37网卡接口下
nmcli con add con-name STATIC ifname ens37 autoconnect no type
Ethernet ipv4.addresses IP/MASK ipv4.gateway GW
添加新连接STATIC ,指定静态ip 不自动连接
删除连接:
nmcli con del NAME
切换连接:
nmcli con up STATIC|NAME
DNS和路由相关setting.property
ipv6.ignore-auto-dns yes 相当于PEERDNS
ipv6.ignore-auto-routes yes 相当于PEERROUTES
网络配置文件:
使用nmcli con add 添加连接会生成新的网卡配置文件:
ifcfg-<ifname>
修改连接配置文件之后,需要重新加载配置:
nmcli con reload
nmcli con down/up CONNECTION 可被自动激活
nmcli dev dis|diconnect eth0 禁用网卡,防止被自动激活
然而实测无效,还是可以被up激活
nmcli实现bonding:
添加bonding接口:
nmcli con add type bond con-name mybond0 ifname mybond0 mode active-backup、balance-tlb和balance-alb模式不需要交换机的任何特殊配置。
添加从属接口:
nmcli con add type bond-slave ifname ens33 master mybond0
nmcli con add type bond-slave ifname ens37 master mybond0
要启动绑定,则必须首先启动从属接口
nmcli con up bond-slave-ens33
nmcli con up bond-slave-ens37
启动绑定:
nmcli con up mybond0
网络组Networking Teaming
网络组:是将多个网卡聚合在一起的方式,从而实现容错和提供吞吐量
网络组不同于旧版中bonding技术,提供更好的性能和扩展性
网络组由内核驱动和teamd守护进程实现
多种方式runner
broadcast
roundrobin
activebackup
loadbalance
lacp(implements the 802.3ad Link Aggregation Control Protocol)
网络组:
启动网络组接口(team0)不会自动启动网络组中的port接口(team0-ens37)
启动网络组接口中的port接口总会自动启动网络组接口
禁用网络组接口会自动禁用网络组中的port接口
没有port接口的网络组接口可以启动静态ip链接
启用dhcp连接时,没有port接口的网络组会等待port接口的加入
创建网络组接口:
nmcli con add type team con-name CNAME ifname INAME [config JSON]
CNAME 连接名,INAME 接口名
JOSN:指定runner方式
格式 '{"runner":{"name":"METHOD"}}'
METHOD:broadcast, roundrobin,activebackup, loadbalance, lacp
nmcli con add type team con-name team0 ipv4.addresses
185.170.161.160/16 ipv4.method manual config '{"runner":{"name":"activebackup"}}'
创建port接口:
nmcli con type team-slave con-name CNAME ifname INAME master TEAM
CNAME: 连接名(如team0-ens37)
INAME: 接口名(指明网卡如 ens37)
TEAM: 组接口名 (如team0)
例:nmcli connection add type team-slave con-name team0-ens37
ifname ens37 master team0
nmcli connection add type team-slave con-name team0-ens38
ifname ens38 master team0
连接名若不指定,默认为team-slave-IFACE
启动网络组:
nmcli con up team0
nmcli con up team0-ens37
nmcli con up team0-ens38
查看网络组:
teamdctl teamdctl team0 state
关闭网络组:
nmcli con down team0 可再次开启
删除网络组
先down
nmcli con del team0
nmcli con del team0-ens37
nmcli con del team0-ens38
PS: 创建或删除,会自动生成或删除配置文件
nmcli-实现网桥:
此小段为复制粘贴内容,以便后期查找,没有操作复现。
桥接:
把一台机器上的若干个网络接口“连接”起来。其结果是,其中一个网
口收到的报文会被复制给其他网口并发送出去。以使得网口之间的报文能够互
相转发。网桥就是这样一个设备,它有若干个网口,并且这些网口是桥接起来
的。与网桥相连的主机就能通过交换机的报文转发而互相通信。
? 主机A发送的报文被送到交换机S1的eth0口,由于eth0与eth1、eth2桥接在一
起,故而报文被复制到eth1和eth2,并且发送出去,然后被主机B和交换机S2
接收到。而S2又会将报文转发给主机C、D。
配置实现网桥
? 创建软件网桥
nmcli con add type bridge con-name br0 ifname br0
nmcli connection modify br0 ipv4.addresses 192.168.74.100/24
ipv4.method manuall
nmcli con add type bridge-slave con-name br0-port0 ifname eth0 master
br0
查看网桥
cat /etc/sysconfig/network -scripts/ifcfg-br0
cat /etc/sysconfig/network -scripts/ifcfg-br0-port0
brctl show
删除网桥 brctl delbr br0
删除网桥中网卡 brctl delif eth0
注意:NetworkManager只支持以太网接口接口连接到网桥,不支持聚合接口
测试网络工具:
hostname 显示主机名
ping 测试网络连通性
-s 65507 最大包
-f 强制发送,不等回复包
-c 5 几次
-w 5 指定时间
mtr 测试网路连通性
nslookup 确定名称服务器使用
host
dig
traceroute 跟踪路由
tracepath
tcmdump icmp -nn 抓包
tcpdump -i eth1
网络客户端工具:
ftp 默认账号ftp 或者anonymous
lftp 子命令:get(下载)、put 、mget(同时下载多个)、ls、cd、help
!cmd表示执行本机命令
lftpget URL 下载ftp资源
wget[options] URL
-q 静默模式
-c 断点续传
-P 保存在指定目录
-O 保存为指定的文件名
--limit-rate= 指定传输速率,K,M 默认为Byte
links URL 字符版浏览器
--dump 查看文字
--source 查看源码
笔记整理完成时间:2018年5月5日15:48:27
原文地址:http://blog.51cto.com/13683480/2113237