网络是主机与外界通信接口,这里讲解下网络知识。
首先主机是如何识别网卡的,1安装系统大部分默认会识别网卡,kudzu --probe --class=network,这个命令便会看到机器物理网卡,从这里可判断是否硬件故障。当系统识别网卡,便会加载驱动,这节在以前讲到过,如何一个奇葩的网卡,要从官网上下载驱动编译安装加载,用如下命令
lspci –v
02:01.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) (rev 01)
Subsystem: VMware PRO/1000 MT Single Port Adapter
Physical Slot: 33
Flags: bus master, 66MHz, medium devsel, latency 0, IRQ 19
Memory at c9020000 (64-bit, non-prefetchable) [size=128K]
Memory at c9000000 (64-bit, non-prefetchable) [size=64K]
I/O ports at 2400 [size=64]
[virtual] Expansion ROM at d8400000 [disabled] [size=64K]
Capabilities: [dc] Power Management version 2
Capabilities: [e4] PCI-X non-bridge device
Kernel driver in use: e1000
Kernel modules: e1000
可以看到网卡是否别识别,内核驱动、网卡名字都以识别不。
当看到这里,整个网卡可以配置了,在/etc/sysconfig/network-sripts里面配置IP,用setup可以进入
图形界面来配置。
现在配置好IP ,主机可以与外界进行通信, /etc/sysconfig/network-scripts/ifcfg-eth0 ONBOOT=yes,遇到过一次[root@vm5 桌面]# service network restart
正在关闭接口 eth0: 错误:断开设备 'eth0'(/org/freedesktop/NetworkManager/Devices/0)失败:This device is not active
当时把NetworkManager关闭和打开,重启网卡还是提示 the device is not active .最后在 /etc/sysconfig/network-scripts/ifcfg-eth0里把HWADDR=00:50:56:b8:10:e8 注释掉就可以重启网卡服务了,成功后再把HWADDR注释符去掉也可以。------这里我也没搞懂,后期有机会再研究下。
当配置好IP,现在就是如外界通信了,过程中本机IP----网关------路由-----对方IP 。
接下来再分析一个案例:在一个主机搭建了esx系统,里面装了4台虚拟机,有一台虚拟机上IP 为静态IP,重启后是只能PING通自己IP ,不能PING能网关。
1 先查看防火墙,为关闭。2 查看IP 和网关,是否正确。这里出没问题。这里ping自己宿主机也ping不通。
通过以上过程可以看到自己网卡是正常的。会不会是宿主机设置该虚拟机网卡问题。
后来查看这里有改动了,应该是人为改的NAT保存后导致重启后出现此现象。把这里模式改为桥接模式重启服务器。
1 bridged(桥接模式)
在这种模式下,VMWare虚拟出来的操作系统就像是局域网中的一独立的主机,它可以访问网内任何一台机器。在桥接模式下,你需要手工为虚拟系统配置IP地址、子网掩码,而且还要和宿主机器处于同一网段,这样虚拟系统才能和宿主机器进行通信。
2 host-only(主机模式)
在某些特殊的网络调试环境中,要求将真实环境和虚拟环境隔离开,这时你就可采用host-only模式。在host-only模式中,所有的虚拟系统是可以相互通信的,但虚拟系统和真实的网络是被隔离开的。
3 NAT(网络地址转换模式)
使用NAT模式,就是让虚拟系统借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网。
下面讲关于网络几个命令,及故障分析,比较实用的:
1 检查网卡参数 ethtool eth0 查看网卡参数 Link 状态, mii-tool 看一下线有没有接好.
2 查看网卡相关日志:
dmesg | grep eth0
var/log/messages里面有没有网卡的日志
3 对于网络出现大量的包发送接送,分析原则,netstat -a 命令查看一下当前系统端口开方情况,如果有某个端口向N多地址发包等情况,那您就需要注意一下了。 看到哪个端口发的包多(还可以用iptraf ,这个可下载安装),用 lsof -i 端口 查看哪个程序。这两个命令也用的上
tcpdump -n port NUMBER -c 10
watch -n 1 "/sbin/ifconfig eth0 | grep bytes
最后看到有人讲到编程抓包时用到的是ibnet,libpcap两个库函数。