-
基本网络配置:
将Linux主机接入到网络,需要配置网路相关设置。
IP/NETMASK:本地通信
路由(网关):跨网络通信
DNS服务器地址:基于主机名的通信
主DNS服务器
次DNS服务器
第三DNS服务器
2.网络配置方式:
(1)静态指定:
①命令:
CentOS 5 6 7 都可用:
ifcfg家族:
ifconfig:配置IP,NETMASK
route:路由
netstat:状态及统计数据查看
iproute2家族:
ip OBJECT:
addr:地址和掩码
link:接口
route:路由
ss:查看状态和统计数据,性能比netstat 好很多
CentOS 7专属
nm家族:
nmcli:命令行工具
nmtui:图形界面工具
注意:
(1)DNS服务器指定
配置文件:/etc/resolv.conf
(2)本地主机名配置
hostname
配置文件:/etc/sysconfig/network
CentOS7:hostnamectl
②配置文件:
RedHat及其相关发行版:
/etc/sysconfig/network-scripts/ifcfg-*
(2)动态分配:依赖于本地网络中的DHCP服务
DHCP: Dynamic Host Configuration Protocol
3.网络接口命名方式:
传统命名:CentOS 5 6 7
以太网:eth[0,1,2,…]
ppp :ppp[0,1,2,…]
可预测命名方案(CentOS 7 )
支持多种不同的命名机制:
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>: 基于总线级槽的拓扑结构进行命名;
4.ifconfig 命令
ifconfig [interface]
# ifconfig -a :显示所有接口,包括inactive状态的接口
# ifconfig IFACE [up|down]
ifconfig interface [aftype] options | address …
# ifconfig IFACE IP/mask [up]
#ifconfig eth1 192.168.12.12/24 [up]
# ifconfig IFACE IP netmask MASK
#ifconfig eth1 192.168.12.13 netmask 255.255.255.0 [up]
注意:立即送往内核中的TCP/IP协议栈,并生效,远程连接的终端会立即断掉。
启用混杂模式:[-]promisc
#ifconfig eth1 [-]promisc
ifconfig管理IPv6的地址:
添加 #ifconfig add addr(网络地址)/prefixlen(掩码长度)
删除 #ifconfig del addr(网络地址)/prefixlen(掩码长度)
5.route命令:路由查看及管理
路由条目类型:
主机路由:目标地址为单个IP
网络路由:目标地址为IP网络
默认路由:目标为任意主机,0.0.0.0/0.0.0.0
(1)查看当前系统的路由表:
route -n
Destination:目标路由的ip地址
Gateway:目标路由的网关地址
Genmask:目标路由的子网掩码
Flags:代表现在的状态(U代表的是up启用,G代表的它现在是一个网关)
Iface:代表的是本机的哪块网卡向外连接路由的,哪块网卡发送出去
(2)添加路由表:
route add
route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
gw:代表的是下一跳地址
网关和本地的网络地址在同一个网段之内。
添加路由表实例:
a.目标:192.168.1.3 网关:172.16.0.1
# route add -host 192.168.1.3 gw 172.16.0.1 dev eth0
b.目标:192.168.0.0 网关:172.16.0.1
# route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 dev eth0
# route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0
c.默认路由,网关: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
(3)删除路由表:
route del
route del [-net|-host] target [gw Gw] [netmask Nm] [dev] If]
删除路由表实例:
a.目标:192.168.1.3 网关:172.16.0.1
# route del -host 192.168.1.3
b.目标:192.168.0.0 网关:172.16.0.1
# route del -net 192.168.0.0 netmask 255.255.255.0
c.删除默认路由:
#route del default
6.netstat命令:显示网络连接
网路中每当建立一个连接时,都会生成一个套接字服务(socket)进行远程连接。
netstat – Print network connections, routing tables, interface statistics, masquerade connections, and multicast membership
(1)netstat -rn :以数字格式显示内核路由表(相当于使用route -n)
Destination:目标路由的ip地址
Gateway:目标路由的网关地址
Genmask:目标路由的子网掩码
Flags:代表现在的状态(U代表的是up启用,G代表的它现在是一个网关)
Iface:代表的是本机的哪块网卡向外连接路由的,哪块网卡发送出去
(2)netstat命令详解:
-t: tcp协议相关:面向连接的协议:通信开始之前,要建立一个虚链路;通信完成后还有拆除连接;
-u: udp协议相关;无连接的协议;直接发送数据报文;
<应用层上面的协议一般式通过TCP或者UDP协议实现的,或者裸套接字实现的>
-w: raw socket 相关(裸套接字)
-l: 处于监听状态的连接,服务程序一般式监听状态
-a: 所有状态的连接;
-n: 以数字显示IP和端口;
-e :扩展格式;
-p: 显示相关进程及PID
netstat -lp:显示处于监听状态程序的进程管理和PID
※netstat常用组合:
Proto:协议类型
Recv-Q:接收队列长度(队列长度代表的是队列中请求数量的个数)
Send-Q:发送队列长度
Local Address:本机地址
Foreign Address: 远程地址(使用哪个地址和端口连接进来的(地址:端口))
State:现在的连接处于一个什么样的状态(FSM)
LISTEN:通常用在服务的监听part,使用"-l"参数进行查阅
ESTABLISHED:已经建立连接的状态
SYN-SENT:发出主动连接(SYN标志)的连接数据包
SYN_RECV:接收到一个要求连接的主动连接数据包
FIN_WAIT1:该套接字服务(socket)已中断,该连接正在断线中
FIN_WAIT2:该连接已经挂断,但正在等待对方主机响应断线确认的数据包。
TIME_WAIT:该连接已经挂断,但socket还在网络上面等待
netstat -tan:以数字形式显示tcp协议连接的所有IP和端口
netstat -uan:以数字形式显示udp协议连接的所有IP和端口
netstat -tnl:以数字形式显示tcp协议监听的所有IP和端口
netstat -unl:以数字形式显示udp议监听的所有IP和端口(UDP虽然处于监听状态,但是在state下面不会显示LISTEN状态)
(3)显示接口统计数据:
netstat {–interfaces|-I|-i} [iface] [–all|-a] [–extend|-e] [–program|-p] [–numeric|-n]
a.所有接口:# netstat -i (显示所有网卡接口的统计数据)
b.指定接口:# netstat -IIFACE(netstat -Ieno16777736) (显示指定网卡的接口的统计数据)
7.启用和关闭端口:ifup ifdown
该命令会读取:/etc/sysconfig/network-scripts/ifcfg-*(eth0 eth1 eno1677736等网卡的配置文件)
#ifup eth1
#ifdown eth2
8.主机名知识:
(1)配置网络主机名:
CentOS6.x:主机名配置文件的路径:/etc/sysconfig/network
CentOS7.x:主机名配置文件的路径:/etc/hostname
默认是没有这个文件的,通过DNS反向解析获取主机名,主机名默认为: localhost.localdomain
(2)查看主机名信息:
hostname(CentOS6.x CentOS7.x通用的命令)
hostnamectl status(CentOS7.x的专用命令,查看更加详细的主机信息)
(3)设置主机名:
a.CentOS6.x
hostname 主机名:暂时生效,重启机器之后就会失效
/etc/sysconfig/network:修改配置文件的设置不会立即生效,但会一直有效,重读(source/.)就会生效。
b.CentOS7.x
hostnamectl set-hostname 主机名:立即生效
CentOS7.x一般情况下不用修改配置文件,使用hostnamectl set-hostname进行修改主机名。
(4)配置DNS服务器指向:
DNS配置文件的位置: /etc/resolv.conf
nameserver DNS_SERVER_IP
DNS服务器知识:
DNS服务配置需要指明 nameserver 10.1.0.1 (DNS的服务地址一定是使用IP去配置的,不要使用路径名)
Linux系统最多识别三个DNS服务
DNS服务器解析的时候,先解析本地的/ets/hosts配置文件,后解析DNS服务器
DNS服务配置测试实例:
解释:当时开始ping www.sjsir.cn 因为本地的10.1.252.234的CentOS6.8系统没有去连接互联网,所以无法识别www.sjsir.cn的网站,我们在/etc/hosts的配置文件中,添加名称地址解析 10.1.1.100 www.sjsir.cn sjsir.cn 当继续ping www.sjsir.cn 或者ping sjsir.cn 都会自动解析到10.1.1.100这个IP地址。发现/etc/hosts文件已经生效。
测试DNS服务器:
①dig -t A FQDN
dig -t A www.sjsir.cn (以主机名为www.sjsir.cn的个人网站来说)
※使用dig解析的时候是通过解析网络中的DNS服务器得到真正的对应ip,www.sjsir.cn对应的主机ip为123.206.51.70,而不会去读取/etc/hosts文件
②dig -x IP 将网络IP转化为主机名,但是互联网上的主机名(域名)一般不支持反向解析,只可从主机名解析成IP,不支持IP解析成主机名
9.iproute2家族:
(1)ip命令:配置Linux网络属性
ip – show / manipulate routing, devices, policy routing and tunnels
ip [ OPTIONS ] OBJECT { COMMAND | help }
ip OBJECT : { link | addr | route }
①ip link – network device configuration(网络设备配置)
a.ip link set dev IFACE:可设置属性
ip liink set [dev] name
up/down:是否启用该网卡 ip link set eth1 up/down
multicast on/off:启用或者禁用多播功能
name NAME:重命名网络接口名称(重命名网络接口时应该提前将网口禁用(down),修改完成之后再启用(up))
mtu NUMBER:设置MTU(以太网接口)的大小,默认为1500
netns PID:ns为namespace,用于将接口移动到指定的网络名称空间
b.ip link show [dev IFACE] :查看的链接属性,看二层设备的相关属性,和IP地址的相关属性无关(ip link show<—>ip link list)
[up] :仅显示处于激活状态的接口
c.ip link help:显示简要的使用帮助
②ip netns:ip -manage network namespace
ip netns list:列出所有的netns
ip netns add NAME:创建指定的netns
ip netns del NAME:删除指定的netns
ip netns exec NAME COMMAND:在指定的netns中运行命令
③ip address – protocol address management
ip address add :添加新的ip address
ip addr add IFADDR dev IFACE:可以为同一网卡添加多个IP地址,但是在同一网段内的网卡需要区分主次网卡等。
ip addr add 10.1.100.100/8 dev eth1
※注意:在已有的网卡添加IP地址时,添加后的地址分区主次等地址,ifconfig命令默认显示eth1网卡添加的第一个地址,但是对eth1:0网卡指明卷标之后的网卡,也会在ifconfig中显示,即使eth1:0在 ip addr show显示为次网卡,也回显示在ifconfig中。
可以省略的选项:
ip addr add label NAME:为额外添加的地址指明接口别名
ip addr add 10.1.100.100/8 dev eth1 label eth1:0
ip addr add broadcast ADDRESS:广播地址,会根据IP和NETMASK自动计算得到,是正确的广播地址。
ip addr add scope {global|link|host}:指明作用域
global: 全局可用;
link: 仅链接可用;
host: 本机可用;
ip address delete:删除原有的ip address 用法相同于ip address add
ip addr delete IFADDR dev IFACE
ip addr delete 10.1.1.100/8 dev eth1
ip address show:查看系统上面的ip address
[IFACE]:显示系统指定IFACE的接口的详情
ip address flush :清空所有的ip address
④ip route – routing table management
ip route add – add new route
ip route add TARGET via GW dev IFACE src SOURCE_IP
TARGET代表的是目标路由
GW代表下一跳的路由
IFACE代表的是指定的哪张网卡
SOURCE_IP代表的是本地网卡的原地址
#ip route default via GW dev IFACE 添加默认路由
ip route change – change route 改变路由和添加路由的使用格式相似
ip route replace – change or add new one 和添加路由的使用格式相似
ip route delete – delete route 删除路由
ip route del TYPE-PRIFIX
#ip route del 192.168.10.1/24 :删除到192.168.10.1的路由条目
※:当一个条目上面有多个默认路由时,需要制定删除的路由的地址
ip route show – list routes 显示路由
ip route flush – flush routing tables
ip route get-get a single route
#ip route get 192.168.10.1/24 :默认到192.168.10.1的详细信息
10.网络路由实战:
①为网卡eth1添加两个指定的ip地址:
ip addr add 10.1.100.100/8 dev eth1
ip addr add 10.1.100.200/8 dev eth1
ip addr list dev eth1
② 配置路由,要想到达172.16.100.200需要经由10.1.100.100
ip route add 172.16.100.200/16 via 10.1.100.100 dev eth1
③查看配置完的ip路由
ip route list (ip route list dev eth1)
※默认未指出src,即自动选择10.1.100.200或者10.1.100.100中的任意一个
11.CentOS7上面采用传统命名方式:
(1)编辑/etc/default/grup配置文件:GRUB_CMDLINE_LINUX="rhgb quiet net.ifnames=0"
或修改/boot/grub2/grub.cfg
(2)为grub2生成其配置文件
grub2-mkconfig -o /etc/grub2.cfg
(3)重启系统
(4)修改网卡的配置文件
cd /etc/sysconfig/network-scripts/
mv ifcfg-eno16777736 ifcfg-eth0
修改里面的的:
DEVICE=eth0
name=eth0
12.ss命令:
ss和netstat的命令区别:
netstat 通过遍历proc 来获取socket 信息
ss 使用netlink 与内核tcp_diag模块通信获取socket 信息。
格式:ss [OPTION]… [FILTER]
选项:
-t: TCP协议相关的连接
-u: UPD协议相关的连接
-w: 裸套接字相关
-l: 监听状态的连接
-a: 所有状态的链接
-n: 数字格式
-p: 相关的程序及PID
-e: 扩展的信息
-m :内存用量
-o :计时器信息
-x :unix sock 相关
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
13.网卡接口的配置文件(IP/NETMASK/GW/DNS): /etc/sysconfig/network-scripts/ifcfg-IFACE
使网卡重启有效的两种方法:
①使用文本编辑器(vim/nano)修改配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE
②通过专用的系统命令进行修改:
CentOS6.x:system-config-network / setup
CentOS7.x:nmtil
※配置文件修改之后,若想生效,需要重启网络服务。
重启网路服务的方法:
CentOS6.x:service network {start|stop|status|restart}
CentOS7.x:systemctl {start|stop|restart|status} network.service
通过配置文件进行修改文件:
vim /etc/sysconfig/network-scripts/ifcfg-IFACE 说明参考/usr/share/doc/initscripts-9.49.30/sysconfig.txt
DEVICE:此配置文件应用到的设备(和ifcfg-IFACE相同)
ONBOOT:在系统引导时是否激活此设备
UUID :设备的惟一标识
HWADDR:对应的设备的MAC 地址
BOOTPROTO:激活此设备时使用的地址配置协议,常用的dhcp, static, none, bootp
NM_CONTROLLED :NM 是NetworkManager 的简写,此网卡是否接受NM 控制;建议CentOS6 为“no”
TYPE :接口类型;常见有的Ethernet, Bridge
IPADDR :指明IP 地址
NETMASK :子网掩码
GATEWAY: 默认网关
DNS1:第一个DNS 服务器指向
DNS2:备用DNS 服务器指向
DOMAIN:DNS搜索域
USERCTL :普通用户是否可控制此设备
PEERDNS :如果BOOTPROTO 的值为“dhcp” ,是否允许dhcp server 分配的dns 服务器指向信息直接覆盖至/etc/resolv.conf 文件中
14.配置路由的相关配置文件:/etc/sysconfig/network-scripts/route-IFACE
支持两种配置方式,但不能混用:
(1)每行定义一个路由条目:
TARGET via GW
例如:10.0.0.0/8 via 172.16.0.1
(2)每三行定义一个路由条目:
ADDRESS#=TARGET
NETMASK#=mask
GATEWAY#=GW
15.网卡名称
网络接口识别并命名相关的udev 配置文件:
/etc/udev/rules.d/70-persistent-net.rules
查看网卡:
dmesg |grep –i eth
ethtool -i eth0
卸载网卡驱动:
modprobe -r e1000
rmmod e1000
装载网卡驱动:
modprobe e1000
16.网络接口配置-bonding(CentOS6)
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 接口上传送所有的报文。本模式提供容错能力。
miimon是用来进行链路监测的。如果miimon=100,那么系统每100ms监测一次链路连接状态,如果有一条线路不通就转入另一条线路
详细帮助参看:/usr/share/doc/kernel-doc-version/Documentation/networking/bonding.txt
Bonding配置(Bonding实战)
①创建bonding 设备的配置文件
vim /etc/sysconfig/network-scripts/ifcfg-bond0
②在配置文件中添加下面的内容(ifcfg-bond0)
DEVICE=bond0
IPADDR=10.1.37.37
PREFIX=16
GATEWAY=10.1.37.37
DNS1=8.8.8.8
BONDING_OPTS= “miimon=100 mode=1”
③修改第一块网卡的配置文件(ifcfg-eth0)
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
MASTER=bond0
SLAVE=yes
④修改第二块网卡的配置文件(ifcfg-eth1)
vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
MASTER=bond0
SLAVE=yes
⑤查看bond0 状态:cat /proc/net/bonding/bond0
例,当前系统对外的是那块网卡生效。(假设第一块网卡(eth0)生效)
⑥测试Bonding是否生效的
物理将第一块网卡eth0 down掉,然后查看第二块网卡eth1是不是自动启动,在短暂的时间之内是否启动起来,若第二块网卡能启动起来,则bonding设置成功。
⑦删除bonding
ifconfig bond0 down
rmmod bonding
原创文章,作者:sjsir,如若转载,请注明出处:http://www.178linux.com/44413