前言:
这篇博客的主旨就想文章题目说的那样,当我们拿到一台新的系统时,我们怎么实现让你的主机连接到网络中。配置网络就是给你的系统配置IP地址,子网掩码,网关以及DNS。也就是说配置好这几项计算机上网的主要条件,就能实现你的系统联网了。此外,配置网络总结来讲有两种方法;一是通过命令直接配置。通过命令配置的网络知识暂时实现系统联网,想要游泳联网就要通过把配置内容写入配置文件来实现了。配置网络虽然步骤并不复杂但是其背后的知识量还是相当庞大的,我们只有了解其中的配置原理才能正确高效的去配置网络从而实现计算机联网。这篇博客主要介绍了配置网络的常用命令,以及配置文件。通过示例的形式让你更直观的去理解配置方法。CentOS7版本经过改版以后这部分内容与之前的CentOS版本相差较大,我会把CentOS7版本的相关知识分开单独介绍。
配置网络的内容:
IP/mask
路由:默认网关
DNS:服务器指向,域名解析
主DNS服务器
次DNS服务器
第三DNS服务器
配置方式:
- 静态指定
命令:
ifcfg: ifconfig,route...
ip: link,addr,route...
编辑配置文件
system-config-network-tui - 动态分配
DHCP: Dynamic Host Configuration Protocol
配置网络接口
接口命名方式:
CentOS 6:不稳定
以太网:eth [0,1,2,3,...]
CentOS7:
网络接口的命名方式有所变化:网络接口的命名与物理环境有关。
ifcfg命令家族
ifconfig,route,netstat
ifconfig:
用来配置网络接口的命令,立即生效,但不是永久生效。
ifconfig [interface] #不加接口显示本机所有活动状态的网络接口,加接口只显示指定接口的信息
ifconfig -a # 显示本机所有网络接口
ifconfig IFACE [up|down] #启用禁用网络接口
ifconfig interface [aftype] options | address ...
ifconfig IFACE IP/netmask [up] #修改网络地址
示例:[root@CentOS6 ~]#ifconfig eth1 172.18.45.61/16
第二种写法相对复杂所以不用
ifconfig IFACE IP netmask NETMASK
注意:立即生效 启
启用混杂模式:[-]promisc #加-号禁用混杂模式
route:
路由管理命令 ,配置路由信息
route -n #查看路由信息
route add #添加路由
写法:
route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
-net :指定添加网络路由
-host:指定添加主句路由
如果目标网络是0.0.0.0那么表示添加的是一个默认路由
target:目标网络,如果目标是一个主机,那么表示目标主机的IP地址,如果目标是一个网,那么表示网络
gw:网关
dev:指定本地网卡
示例:
增加主机路由:
目标:192.168.1.3 网关:172.18.0.1
route add -host 192.168.1.3 gw 172.18.0.1 dev eth0 #添加主机路由默认mask值是32位精确匹配,所以不用写
增加网络路由:
目标:192.168.0.0 网关:172.18.0.1
route add -net 192.168.0.0/24 gw 172.18.0.1 dev eth0
增加默认路由:
route add default gw 172.18.0.1
删除主机路由:
目标:192.168.1.3 网关172.18.0.1
route dal -host 192.168.1.3
删除网络路由:
目标:192.168.0.0 网关:172.18.0.1
route del -net 192.168.0.0/24
netstat:
网络状态查看命令
显示网络连接:
netstat [--tcp|-t] [--udp|-u] [--raw|-w] [-listening|-l] [--all|-a] [--numeric|-n] [--extend|-e-extend|-e]][--program|-p]
-t: 显示TCP协议的相关链接
-u:显示UDP协议的相关链接
-w:显示裸套接字的相关链接,不经过传输层,由应用层直接调用ARP进行数据传输。
-l:只显示监听状态的连接
-a:显示所有连接
-n:不反解IP地址
-e:拓展格式
-p:显示与哪个程序建立连接
常用组合:
-tan:所有TCP相关的连接
-uan:所有UDP相关的连接
-tnl:TCP协议下,处于监听状态的连接
-unl:UDP协议下处于监听状态的连接(虽然UDP协议下没有网络状态的概念,但是仍然可以这样使用)
显示路由表:
netstat {--route|-r} [--numeric|-n]
-r: 显示内核路由表
-n: 数字格式
显示接口统计数据:
netstat {--interfaces|-I|-i} [iface] [--all|-a] [-extend|-e] [--program|-p] [--numeric|-n]
netstat -i #显示所有网络接口数据
netstat –IIFACE #显示指定接口网络数据I与接口名之间不能有空格
[root@CentOS6 ~]#netstat -Ieth0
ifconfig -s eth0
总结:
ifcfg家族命令:ifconfig,route,netstat
ip家族:
配置Linux网络属性:ip命令和ss命令
ip:
ip工具主要作用:显示或配置路由和设备
用法:ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT := { link | addr | route }
ip link:
连接设备管理工具
子命令:
- set :设置
- show :显示
set dev IFACE
可设置属性:
up and down:激活或禁用指定接口
ifup/ifdown
show [dev IFACE]:指定接口
[up]:仅显示处于激活状态的接口
ip addr:
协议地址管理工具
用法: ip addr { add | del... } IFADDR dev STRING
子命令:
- add:增加指定接口的辅助IP地址
三个选用项:
[label PATTERN] :给指定接口添加别名
[scope {global|link|host}]:指明作用域
global: 全局可用
link: 仅链接可用
host: 本机可用
[broadcast ADDRESS]:指明广播地址
示例:ip addr add 172.16.100.100/16 dev eth0 label eth0:0 - del:删除指定接口的IP地址
示例:ip addr del 172.16.100.100/16 dev eth0 label eth0:0 - replace:替换指定接口的IP地址
- show:显示指定接口的IP地址
- flush:清空指定接口或者指定别名的IP地址
ip address flush dev - change:修改指定接口的IP地址
ip route
路由管理工具
添加路由:ip route add
ip route add TARGET via GW dev IFACE src SOURCE_IP
TARGET:
主机路由:IP
网络路由:NETWORK/MASK
示例:
添加网络路由:ip route add 193.168.0.0/24 via 172.18.0.1
添加主机路由:ip route add 192.168.1.13 via 172.18.0.1
添加网关:ip route add default via GW dev IFACE
ip route add default via 172.18.0.1
删除路由:
ip route del TARGET
删除默认路由:
ip route del default
显示和清空路由表:
ip route show
ip route flush
ss:
网络状态查看命令,与nestat命令用法相似,用来代替nestat命令
使用格式:ss [OPTION]... [FILTER]
选项:
-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详细信息
网络配置文件
/etc/sysconfig/network-scripts/ifcfg-IFACE
IP、MASK、GW、DNS相关配置文件
配置属性:
- DEVICE:此配置文件应用到的设备
- HWADDR:对应的设备的MAC地址
- BOOTPROTO:激活此设备时使用的地址配置协议
常 用的地址配置协议:
dhcp:自动获取IP
static:静态指定IP
none:不用协议,与static效果相同
bootp - NM_CONTROLLED:NM是NetworkManager的简写, 此网卡是否接受NM控制;建议CentOS6为“no”
- ONBOOT:在系统引导时是否激活此设备
- TYPE:接口类型;常见有的Ethernet, Bridge
- UUID:设备的惟一标识
- IPADDR:如果使用的地址配置协议是手动指定的话需要指明IP地址,如果设定开机自动获取IP那么不用指定
- NETMASK:子网掩码
- GATEWAY: 默认网关
- DNS1:第一个DNS服务器指向
- DNS2:第二个DNS服务器指向
- USERCTL:普通用户是否可控制此设备
- PEERDNS:如果BOOTPROTO的值为“dhcp”,是否允许 dhcp server分配的dns服务器指向信息直接覆盖至 /etc/resolv.conf文件中
/etc/sysconfig/network-scripts/route-IFACE
路由配置文件,需要手动创建
注意:需service network restart生效
两种配置风格:
(1) TARGET via GW
如:10.0.0.0/8 via 172.16.0.1
(2) 每三行定义一条路由
ADDRESS#=TARGET
NETMASK#=mask
GATEWAY#=GW
注意:两种风格不混合使用
设置网卡别名:
将多个IP地址绑定到一个NIC上 eth0:1 、eth0:2、 eth0:3
ifconfig命令:
ifconfig eth0:0 192.168.1.100/24 up
ifconfig eth0:0 down
ip命令: ip addr add 172.16.1.2/16 dev eth0
ip addr add 172.16.1.1/16 dev eth0 label eth0:0
ip addr add 172.16.1.2/16 dev eth0 label eth0:0
ip addr del 172.16.1.1/16 dev eth0 label eth0:0
ip addr flush dev eth0 label eth0:0
编辑配置文件:
为每个设备别名生成独立的接口配置文件
• 关闭NetworkManager服务
ifcfg-ethX:xxx
• 必须使用静态联网
DEVICE=eth0:0
IPADDR=10.10.10.10
NETMASK=255.0.0.0
ONPARENT=yes
注意:service network restart 生效
参考/usr/share/doc/initscripts-*/sysconfig.txt
setup
/etc/sysconfig/network
配置当前主机的主机名
hostname [HOSTNAME]
HOSTNAME=
NETWORKING=yes #网络总开关
不会立即生效,重启机器后生效与hostname [HOSTNAME] 命令配合使用
/etc/hosts
本地主机名数据库和IP地址的映像
• 对小型独立网络有用
• 通常,在使用DNS前检查
• getent hosts 查看/etc/hosts 内容
/etc/udev/rules.d/70-persistent-net.rules
网络接口并命名相关的udev配置文件
编辑修改后并不会立即生效
生效方法:
卸载网卡驱动:modprobe -r e1000
装载 网卡驱动:modprobe e1000
CentOS7 网络配置
网卡命名:
CentOS 6之前,网络接口使用连续号码命名:eth0、eth1等,当 增加或删除网卡时,名称可能会发生变化
CentOS 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
s
x
p
网卡设备的命名过程:
第一步:
udev, 辅助工具程序/lib/udev/rename_device /usr/lib/udev/rules.d/60-net.rules
第二步: biosdevname 会根据/usr/lib/udev/rules.d/71biosdevname.rules
第三步: 通过检测网络接口设备,根据
/usr/lib/udev/rules.d/75-net-description ID_NET_NAME_ONBOARD
ID_NET_NAME_SLOT
ID_NET_NAME_PATH
设置传统网卡命名方式
- 编辑/etc/default/grub配置文件
GRUB_CMDLINE_LINUX="rhgb quiet net.ifnames=0"
或:修改/boot/grub2/grub.cfg - 为grub2生成配置文件
grub2-mkconfig -o /etc/grub2.cfg - 重启系统
建议直接修改配置文件,将/boot/grub2/grub.cfg文件中内核区域以linux16开头的行,看到fhgb quiet字样后边加net.ifnames=0 之后修改/etc/sysconfig/network-scripts文件中的DEVICE项目和NAME项目。另外文件名手动修改,定义别名生效。
nmcli:
CentOS7地址配置工具
与IP命令相似
用法:
nmcli [ OPTIONS ] OBJECT { COMMAND | help }
nmcli 命令强大的命令补全功能:
[root@CentOS7 ~]#nmcli
agent device help networking
connection general monitor radio
[root@CentOS7 ~]#nmcli connection
add delete edit help load monitor show
clone down export import modify reload up
[root@CentOS7 ~]#nmcli device
connect disconnect lldp monitor set status
delete help modify reapply show wifi
常用的两个OBJECT:
1. connection:
相当于addr用于配置IP地址
子命令: start, stop, and manage network connections
修改IP地址示例:
nmcli connection modify IFACE [+|-] setting.property value
[+|-] #表示添加或者删除ip地址
setting.property:
ipv4.addresses
ipv4.gateway
ipv4.dns1
ipv4.method #ipv4的地址获取方式
manual | auto #手动或者自动(手动配置的ip地址立即生效)
创建新连接static,指定静态IP,不自动连接
nmcti con add con-name static ifname eth0 autoconnect no type Ethernet ip4 172.25.X.10/24 gw4 172.25.X.254
2. device :
相当于link管理连接设备
子命令:show and manage network interfaces
设备即网络接口,连接是对网络接口的配置。一个网络接口 可有多个连接配置,但同时只有一个连接配置生效
修改配置文件执行生效:
systemctl restart network
nmcli con reload
这篇博客是否对你配置网络有帮助呢?有问题以及指教的地方请留言交流吧。