概述
随着互联网和物联网的不断发展,网络已经成为人们生活中必不可少的配置。而在Linux中,网络管理也是必不可少的技能之一,没有网络,系统所提供的各项服务就无从施展。本篇重点从ifconfig、route、netstat、三个命令,介绍Linux中的网络配置。最后再实验用三个Linux系统作为路由器,串联在两端的另外两个Linux系统能够互相通信。
ifconfig命令
ifconfig命令用于配置和显示Linux内核中的网络接口参数。在配置参数时,只是临时配置该参数,在系统或者网卡重启后,会丢失该参数。若需要保存配置,则需要修改/etc/sysconfig/net-scripts/ifcfg-eth#(CentOS6)或/etc/sysconfig/network-scripts/ifcfg-ens#(CentOS7)文件,#为对应的网卡名,实际上文件名与网卡实际名称无关,只是为了易于辨认。
语法:
ifconfig [选项] [设备] [参数]
常用选项:
add <ipv6> 为网卡设置ipv6地址
del<ipv6> 删除ipv6地址
down dev 禁用该网卡
up dev 启用该网卡
netmask <netmask> 设置子网掩码
hw <网络设备类型> <MAC> 重新设置MAC地址。只是模拟了新的Mac地址,实际上网卡的MAC是没有改变的!
-a 显示所有的网络信息,包括已经禁用的网卡。只执行ifconfig是不显示未启用网卡的!
-s 以短格式显示信息
[-]arp 在设备上启用或禁用ARP
例
ifconfig查看网络配置
ifconfig -s 以短格式查看网络配置
配置新的ip地址
]# ifconfig eth0 192.168.5.123/24
]# ifconfig eth0 192.168.5.123 netmask 255.255.255.0
修改MAC
]# ifconfig eth0 hw ether AA:BB:CC:DD:EE:FF
禁用启用网卡
]# ifconfig eth0 down
]# ifconfig eth0 up
开启关闭网卡ARP功能
]# ifconfig eth0 arp #开启网卡eth0 的arp协议
]# ifconfig eth0 -arp #关闭网卡eth0 的arp协议
另外,网卡名也是可以修改的。在CentOS6中存放网卡名的文件为/etc/udev/rules.d/70-persistent-net.rules,在修改完网卡名后,需要卸载网卡驱动并重新加载,才能使设置生效。而在CentOS7中则不同:
使用传统命名方式:
(1) 编辑/etc/default/grub配置文件
GRUB_CMDLINE_LINUX="rhgb quiet net.ifnames=0"或:修改/boot/grub2/grub.cfg
(2) 为grub2生成其配置文件
grub2-mkconfig -o /etc/grub2.cfg
(3) 重启系统或重新加载驱动。
Linux中网卡驱动是以模块形式加载的。查看网卡驱动:
]# ethtool eth0 #查看eth0的驱动
查询得知在本机中网卡驱动模块名为e1000。
卸载eth0的驱动:
]# modprobe -r e1000
或
]# rmmod e1000
加载驱动:
]# modprobe e1000
route命令
route命令用于显示和配置Linux内核中的路由表。route命令设置的是静态路由。要实现两个网络间的通信,需要与两个网络连接的路由器或者同时连接两个子网的网关来实现。通过route命令配置的路由表是无法保存的,在系统或者网卡重启之后会丢失。若要长久保存配置,则需要修改/etc/rc.local文件。
语法:
route [选项] [参数]
常用参数:
-A: 设置路由地址的类型
-C: 显示Linux核心的路由缓存-n: 不执行DNS反向查找,直接显示数字形式的IP地址
-v: 显示详细信息
-e: netstat格式显示路由表
-net: 设置网络路由
-host: 设置主机路由
add : 添加路由
del : 删除路由
例
查看内核路由表
添加路由
删除路由
屏蔽一条路由
]# route add -net 192.165.6.0/24 reject #增加一条屏蔽的路由,目的地址为192.168.6.x的请求将被拒绝
netstat命令
netstat命令通常用来查看当前的整个网络状况。
语法:
netstat <选项>
常见选项:
-t: tcp协议相关
-u: udp协议相关
-w: raw socket相关
-l: 处于监听状态
-a: 所有状态
-n: 以数字显示IP和端口;
-e: 扩展格式
-p: 显示相关进程及PID
通常情况下选项都是组合使用的,以同时显示更多需要的信息。常用组合为:-tan, -uan, -tnl, -unl
查看内核路由表:
netstat {--route|-r} [--numeric|-n]
-r: 显示内核路由表
-n: 数字格式
例:
查看TCP协议的通讯
查询内核路由表
常用组合命令的查询
路由搭建
在实验中,由三个Linux系统充当路由器,两个Linux系统充当主机,五个系统串联至四个不同的网络中,使得在两端的主机能够互相通信。由于五个系统都是在虚拟机中运行,直接在虚拟机的虚拟网络编辑器中添加四个不同的网络,并将五个主机的两个网卡分别置于这四个网络中。拓扑图如下:
虚拟网络编辑器的配置如下图:
查看CA的IP地址
配置主机CA的ip
查看主机CA的路由表并配置路由。
由于主机CA位于网络边沿,所以其路由配置默认路由即可。另一边的主机CB亦同。配置完成后主机CA的配置就完成了。接下来是路由器R0的配置。
查看并配置R0的ip
查看R0的路由表
配置R0的路由表
开启R0的路由转发功能。修改/proc/sys/net/ipv4/ip_forward内容为1
至此R0的配置就完成了。接下来是RA的配置。
查看并配置RA的ip
查看并配置RA的路由表
开启RA的路由转发功能
检查RA与C0之间能否通信
通过相互的ping发现能够通信,说明前面的配置没有问题。实际上应该每配置一步就检查配置是否配置成功。此时RA的配置已经完成,接下来是RB的配置。
查看并配置RB的ip
查看并配置RB的路由表
开启RB的路由转发功能
检查RB与C0能否ping通
通过互ping发现二者能够通信,即前面配置成功,接下来就是CB的配置。
CB的配置与CA类同,不过CA事先置入了两块网卡,其中一块(ens33)因为与R0配置在同一网络中,会对实验形成干扰所以会禁用它。
禁用ens33
]# ifconfig ens33 down
查看并配置CB的ip.可以看到网卡ens33已经被禁用。
查看并配置CB的网关
最后,通过CA和CB的互ping,检查整个路由配置是否成功。
最后两个主机互ping,可以发现能够ping通,即整个网络配置没有问题。可以看到,双方互ping的TTL均为61,即执行ping命令是发送的数据包通过了(64-61=)3个路由器,与拓扑图中设计的无误。
若是在最终的检测中,发现某一方不能ping通,则应逐个路由器进行测试,检查主机和路由器的ip、网关、路由表等配置是否正确,还有充当路由器的主机路由转发功能是否打开。最好的办法是,随配随测,过程较慢,但胜在准确性较高。
最后,在配置过程中,系统最好都关闭防火墙和selinux策略,以避免不必要的问题。关闭的方法如下:
修改selinux策略为permissive或者disabled
]# vim /etc/selinux/config
]# setenforce 0 #关闭selinux
]#getenforce #查看状态
关闭防火墙:
centos7:
]# systemctl stop firewalld #立即关闭防火墙
]# systemctl disable firedwalld #关闭开机自动启动
centos6:
]# chkconfig iptables off #开机不启动
]# server iptables stop #关闭防火墙