Linux网络属性的管理
网络属性大致包括IP地址的配置,mask(子网掩码),路由(也就是默认网关)的配置,DNS服务器的配置等。
配置方式有:
静态指定:
(1)使用命令ifcfg家族的命令:ifconfig,route,netstat
(2)ip家族的命令: ip object{link,addr,route},ss,tc等
(3)编辑配置文件,直接编辑不是很好看懂,系统就自己提供了工具来对配置文件进行
编辑
CentOS6下使用system-config-network-tui或者setup,然后会出现一个图形文
本界面,然后按提示就可以进行设置了
CentOS7中使用nmcli, nmtui,然后会出现一个图形文本界面,然后按提示就
可以进行设置了
前两种方式的配置可以立即生效,但是不能永久保存一旦重启就会失效;只有编辑配
置文件这个方法才能永久有效
动态分配:使用DHCP协议
(1)ipcfg家族的命令 (演示是在CentOS6下进行的)
ifconfig命令
(a)ifconfig [interface]
# ifconfig -a 显示多有接口的信息
# ifconfig IFACE [up|down] 显示指明的接口的信息
ifconfig 直接回车是显示主机所有处于活动接口的信息
显示指定的接口信息
(b)ifconfig interface [aftype] options | address ...
# ifconfig IFACE IP/mask [up|down] 配置ip地址,如果接口禁用的话,后面跟上up或down可直接启用关闭接口(CentOS6,7可使用,其他版本不确定,能不能用)
例:ifconfig eth0 172.16.108.108/16
# ifconfig IFACE IP netmask MASK
例:ifconfig eth0 172.16.108.108 netmask 255.255.0.0
注意:设置以后立即生效,但不会永久有效;IFACE表示接口名
启用混杂模式:[-]promisc,还有其他选项,如果用到使用man进行查看
更改IP地址
关闭和开启接口
route命令:路由管理的命令
route -n :查看本机路由表
route add :添加路由表
命令格式:route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] IFACE]
route del:删除路由表
命令格式:route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] IFACE]
查看,添加
添加,删除
"[]"内的参数可以省略
还有一个常用的路由叫默认路由,就是目的ip地址为0.0.0.0 掩码也为0.0.0.0 指明网关就可以了
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
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: raw socket相关
-l: 处于监听状态
-a: 所有状态
-n: 以数字显示IP和端口;
-e:扩展格式
-p: 显示相关进程及PID
常用组合: -tan, -uan, -tnl, -unl
查看tcp相关的信息
显示扩展信息
显示路由表:
netstat {--route|-r} [--numeric|-n]
-r: 显示内核路由表
-n: 数字格式
显示接口统计数据:
netstat {--interfaces|-I|-i} [iface] [--all|-a] [--extend|-e] [--program|-p] [--numeric|-n]
# netstat -i 代表所有接口
# netstat -I IFACE 指定一个接口,但I后面不能有空格直接跟接口名
DNS服务器的指定,在/etc/resolv.conf中添加就可以了
格式:nameserver DNS_SERVER_IP1
nameserver DNS_SERVER_IP2
nameserver DNS_SERVER_IP3
DNS的作用,是实现域名与IP地址之间转换的
正解:FQDN-->IP
# dig -t A FQDN
# host -t A FQDN
反解:IP-->FQDN
# dig -x IP
# host -t PTR IP
(2)ip命令:
主要作用,显示或配置 路由、设备、策略路由等
ip命令的使用格式:
ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT := { link | addr | route }
ip link - network device configuration 对设备的管理
set dev IFACE {up|down} 可设置属性,up and down:激活或禁用指定接口;
show
[dev IFACE]:指定接口
[up]:仅显示处于激活状态的接口
ip address - protocol address management
ip addr { add | del } IFADDR dev STRING 添加或删除ip地址
[label LABEL]:添加地址时指明网卡别名
[scope {global|link|host}]:指明作用域,一般默认,默认为global
global: 全局可用;link: 仅链接可用;host: 本机可用;
[broadcast ADDRESS]:指明广播地址
ip address show - look at protocol addresses 查看地址
[dev DEVICE]
[label PATTERN]
[primary(主地址) and secondary(辅助地址)]
ip address flush - flush protocol addresses 清空地址
使用格式同show
ip addr add 172.16.100.123/16 dev eth0 是添加一个ip地址,不删除原有ip地址
添加地址时,还可以指定标签;删除这个地址时也要指明标签
ip route - routing table management
ip route add
添加路由:ip route add TARGET via GW dev IFACE src SOURCE_IP
TARGET:目的网络,或目的IP
主机路由:IP 要么不加掩码,要加了就是/32即255.255.255.255
网络路由:NETWORK/MASK
添加默认路由(网关):ip route add defalt via GW dev IFACE
ip route delete
删除路由:ip route del TARGET
ip route show 查看路由信息
ip route flush 清空路由表
[dev IFACE]
[via PREFIX]
ss命令:网络状态的命令,与netstat命令一样,使用格式也是类似的,但当连接的主机多的情况下使用ss查看效率更高
格式: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 ] 可以指明格式查看
EXPRESSION:
dport =
sport =
示例:’( dport = :ssh or sport = :ssh )’
(3)编辑配置文件
IP、MASK、GW、DNS相关配置文件:/etc/sysconfig/network-scripts/ifcfg-IFACE
路由相关的配置文件:/etc/sysconfig/network-scripts/route-IFACE,默认不存在,需要手动创建route-IFACE
/etc/sysconfig/network-scripts/ifcfg-IFACE:
DEVICE:此配置文件应用到的设备;
HWADDR:对应的设备的MAC地址;
BOOTPROTO:激活此设备时使用的地址配置协议,常用的dhcp, static, none, bootp;
NM_CONTROLLED:NM是NetworkManager的简写;此网卡是否接受NM控制;CentOS6建议为“no”;
ONBOOT:在系统引导时是否激活此设备;
TYPE:接口类型;常见有的Ethernet, Bridge;
UUID:设备的惟一标识;
IPADDR:指明IP地址;
NETMASK:子网掩码;
GATEWAY: 默认网关;
DNS1:第一个DNS服务器指向;
DNS2:第二个DNS服务器指向;
USERCTL:普通用户是否可控制此设备;
PEERDNS:如果BOOTPROTO的值为“dhcp”,是否允许dhcp server分配的dns服务器指向信息直接覆盖至/etc/resolv.conf文件中;
/etc/sysconfig/network-scripts/ifcfg-eth0 原有的信息
手动编辑后
修改完,远程连接会中断,然后进入虚拟机中,使用service network reastart重启网络服务后就会生效
查看下DNS的配置文件,会发现我们修改的生效了
/etc/sysconfig/network-scripts/route-IFACE
两种风格:
(1) TARGET via GW
(2) 每三行定义一条路由
ADDRESS#=TARGET
NETMASK#=mask
GATEWAY#=GW
在/etc/sysconfig/network-scripts这个目录下,创建并编辑一个名为route-eth0
然后保存退出,使用route -n查看发现也没有生效,需要重启下网络服务就可以生效了
配置文件可以写成下面那种形式,(在远程连接下,修改很容易掉线,建议在虚拟机下配置)
重新启动网络服务,就可以上生效了
给网卡配置多地址:
ifconfig:
ifconfig IFACE_ALIAS
ip
ip addr add
配置文件:
ifcfg-IFACE_ALIAS
DEVICE=IFACE_ALIAS
IFACE_ALIAS:网卡别名
使用ifconfig为一个网卡设置所个地址,
不会永久有效,要想永久有效,需要编辑配置文件
也可以使用命令system-config-network-tui或者setup命令
system-config-network-tui
显示出这样的界面,然后根据提示就可以修改或者创建网络配置
setup
然后选择Network configuration,进入就是system-config-network-tui命令进入的界面了
CentOS7上的网络配置工具处了ifcfg,ip 还有nmcli命令,CentOS7中的图形配置tui工具使用nmtui命令,
根据提示就可以配置网络
CentOS7下的网络设备的命名不同,修改下/etc/default/grub 在里面GRUB_CMDLINE_LINUX这一行里加入net.ifnames=0;然后使用grub2-mkconfig -o /etc/grub2.cfg然后重启系统就可以了,设备名成为eth0了
nmcli [ OPTIONS ] OBJECT { COMMAND | help }
device - show and manage network interfaces
管理设备的类似于ip的link
nmcli device show eth0显示eth0的信息,里面的参数要使用到
使用nmcli device help查看就可以了,
connection - start, stop, and manage network connections
ip地址的添加等,类似于ip的addr
显示设备的信息,
查看eth0网络设备的信息
connection可简写为c
修改IP地址等属性:
#nmcli connection modify IFACE [+|-]setting.property value
setting.property:
'+'表示增加一个,'-'表示删除,不带表示替换原来的配置
ipv4.addresses 修改地址
ipv4.gateway 修改网关
ipv4.dns1 修改DNS
ipv4.method IP地址的配置方式(dhcp,manual手动)
使用命令修改网络属性时会出错,这是我们让网络设备重新使用名称时,没有修改/etc/sysconfig/network-scripts/目录下的ifcfg-eno16777736,需要重命名为ifcfg-eth0然后进行修改成下图的内容,然后重启网络服务就行了
CentOS7下使用这个命令重启网络服务systemctl restart network,(如果你里面配置的地址和你远程连接的地址不同,远程连接会断掉)
使用这个nmcli connection modify eth0 +ipv4.addresses 172.16.100.12/16命令增加地址
这个时候还不会生效,需要把接口断开再连接就可以了
断开重启,使用nmcli con down eth0;nmcli con up eth0
添加网关和DNS