eth0怎么读
1. vmware没有发现无线网卡
如果是USB外接网卡就在虚拟机中把网卡加载进来!如果是笔记本内置网卡,可以尝试如下操作,但是有可能网卡驱动不兼容。
虚拟机linux系统安装网卡驱动方法:
1.将网卡驱动考入U盘。
2.在真机种运行services.msc。将VMware USB Arbitration Service服务开启。这样才能使linux系统读到U盘。
3.在linux系统下输入命令:mount /dev/sda1 /mnt dev/sda1在这里是U盘设备名,根据自己实际情况输入。将U盘挂载到/mnt目录下。
4.cd /mnt
5.cp XX / 复制并移动网卡驱动到根目录。其中XX表示网卡驱动名。
6.tar -zxvf XX 解压网卡驱动
7.cd XX
8.cd src
9.make 编译
10.make install 安装
11.insmod XX 加载驱动
12.修改eth0信息,cd /etc/sysconfig/network-scripts;cp ifcfg-lo ifcfg-eth0;vi ifcfg-etho;修改后保存退出。
13.这样网卡驱动就安装完成了。
2. 如何查询主机ID码
一、首先,打开Windows7系统,点击桌面左下角的“开始”,点击打开。
3. linux虚拟内存有什么作用
linux下的vm(虚拟内存)和windows下的作用是一样的,均是防止真实内存资源不足准备的.
linux的vm相关参数介绍
1. 保证linux有足够的物理内存,可以调整vm的如下参数
vm.min_free_kbytes=409600;//默认值是3797,保证物理内存有足够空闲空间,防止突发性换页
vm.vfs_cache_pressure=200;//默认是100,增大这个参数设置了虚拟内存回收directory和i-node缓冲的倾向,这个值越大。越易回收
vm.swappiness=40 //缺省60,减少这个参数会使系统尽快通过swapout不使用的进程资源来释放更多的物理内存
一般在rac的配置环境中配置这三个参数,可以防止换页引起节点短暂无响应,导致节点重启
2. 改善io系统的性能
overcommit_memory = 0
vm.overcommit_ratio = 10 //默认值是50,用于虚拟内存的物理内存的百分比
vm.dirty_ratio = 20 //默认值是40,为了保持稳定,持续的写入,把这个值调整的小一些,经验值是20
vm.dirty_background_ratio //缺省数值是500,也就是5秒,如果系统要求稳定持续的写,可以适当降低该值,把峰值的写操作平均多次,也避免宕机丢失更多的数据
vm.dirty_expire_centisecs //缺省是3000,也就是30秒,如果系统写操作压力很大,可以适当减小该值,但也不要太小;建议设置为 1500
vm的相关参数在/proc/sys目录下
相关命令
sysctl -p //修改vm参数后,运行这个命令可以立即生效
sysctl -a //查看所有的vm参数
与磁盘IO子系统有关的
/proc/sys/vm/dirty_ratio
这个参数控制文件系统的文件系统写缓冲区的大小,单位是百分比,表示系统内存的百分比,
表示当写缓冲使用到系统内存多少的时候,开始向磁盘写出数据。增大之会使用更多系统内
存用于磁盘写缓冲,也可以极大提高系统的写性能。但是,当你需要持续、恒定的写入场合
时,应该降低其数值,一般启动上缺省是 10。下面是增大的方法:
echo '40' > /proc/sys/vm/dirty_ratio
/proc/sys/vm/dirty_background_ratio
这个参数控制文件系统的pdflush进程,在何时刷新磁盘。单位是百分比,表示系统内存的百
分比,意思是当写缓冲使用到系统内存多少的时候,pdflush开始向磁盘写出数据。增大之会
使用更多系统内存用于磁盘写缓冲,也可以极大提高系统的写性能。但是,当你需要持续、恒
定的写入场合时,应该降低其数值,一般启动上缺省是 5。下面是增大的方法:
echo '20' > /proc/sys/vm/dirty_background_ratio
/proc/sys/vm/dirty_writeback_centisecs
这个参数控制内核的脏数据刷新进程pdflush的运行间隔。单位是 1/100 秒。缺省数值是500,
也就是 5 秒。如果你的系统是持续地写入动作,那么实际上还是降低这个数值比较好,这样可
以把尖峰的写操作削平成多次写操作。设置方法如下:
echo "200" > /proc/sys/vm/dirty_writeback_centisecs
如果你的系统是短期地尖峰式的写操作,并且写入数据不大(几十M/次)且内存有比较多富裕,那么应该增大此数值:
echo "1000" > /proc/sys/vm/dirty_writeback_centisecs
/proc/sys/vm/dirty_expire_centisecs
这个参数声明Linux内核写缓冲区里面的数据多“旧”了之后,pdflush进程就开始考虑写到磁盘中去。
单位是 1/100秒。缺省是 3000,也就是 30 秒的数据就算旧了,将会刷新磁盘。对于特别重载的写
操作来说,这个值适当缩小也是好的,但也不能缩小太多,因为缩小太多也会导致IO提高太快。建
议设置为 1500,也就是15秒算旧。
echo "1500" > /proc/sys/vm/dirty_expire_centisecs
当然,如果你的系统内存比较大,并且写入模式是间歇式的,并且每次写入的数据不大(比如几十M),
那么这个值还是大些的好。
与网络IO子系统有关的
/proc/sys/net/ipv4/tcp_retrans_collapse
这个参数控制TCP双方Window协商出现错误的时候的一些重传的行为。但是在老的2.6的核
(<2.6.18)里头,这个重传会导致kernel oops,kernel panic,所以,如果出现有
tcp_retrans_*样子的kernel panic,可以把这个参数给设置成0:
echo '0' > /proc/sys/net/ipv4/tcp_retrans_collapse
提高Linux应对短连接的负载能力
在存在大量短连接的情况下,Linux的TCP栈一般都会生成大量的 TIME_WAIT 状态的socket。
你可以用下面的命令看到:
netstat -ant| grep -i time_wait
有时候,这个数目是惊人的:
netstat -ant|grep -i time_wait |wc -l
可能会超过三四万。这个时候,我们需要修改 linux kernel 的 tcp time wait的时间,缩短之,
有个 sysctl 参数貌似可以使用,它是 /proc/sys/net/ipv4/tcp_fin_timeout,缺省值是 60,
也就是60秒,很多网上的资料都说将这个数值设置低一些就可以减少netstat 里面的TIME_WAIT状态,
但是这个说法是错误的。经过认真阅读Linux的内核源代码,我们发现这个数值其实是输出用的,
修改之后并没有真正的读回内核中进行使用,而内核中真正管用的是一个宏定义,在
$KERNEL/include/net/tcp.h里面,有下面的行:
#define TCP_TIMEWAIT_LEN (60*HZ) /* how long to wait to destroy TIME-WAIT
* state, about 60 seconds */
而这个宏是真正控制 TCP TIME_WAIT 状态的超时时间的。如果我们希望减少 TIME_WAIT 状态的数目
(从而节省一点点内核操作时间),那么可以把这个数值设置低一些,根据我们的测试,设置为 10
秒比较合适,也就是把上面的修改为:
#define TCP_TIMEWAIT_LEN (10*HZ) /* how long to wait to destroy TIME-WAIT
* state, about 60 seconds */
然后重新编译内核,重启系统即可发现短连接造成的TIME_WAIT状态大大减少:
netstat -ant | grep -i time_wait |wc -l
一般情况都可以至少减少2/3。也能相应提高系统应对短连接的速度。
/proc/irq/{number}/smp_affinity
在多 CPU 的环境中,还有一个中断平衡的问题,比如,网卡中断会教给哪个 CPU 处理,
这个参数控制哪些 CPU 可以绑定 IRQ 中断。其中的 {number} 是对应设备的中断编号,
可以用下面的命令找出:
cat /proc/interrupt
比如,一般 eth0 的 IRQ 编号是 16,所以控制 eth0 中断绑定的 /proc 文件名是
/proc/irq/16/smp_affinity。上面这个命令还可以看到某些中断对应的CPU处理的次数,
缺省的时候肯定是不平衡的。
设置其值的方法很简单,smp_affinity 自身是一个位掩码(bitmask),特定的位对应特
定的 CPU,这样,01 就意味着只有第一个 CPU 可以处理对应的中断,而 0f(0x1111)
意味着四个 CPU 都会参与中断处理。
几乎所有外设都有这个参数设置,可以关注一下。
这个数值的推荐设置,其实在很大程度上,让专门的CPU处理专门的中断是效率最高的,比如,
给磁盘IO一个CPU,给网卡一个CPU,这样是比较合理的。
4. 怎样查看 linux 的网卡信息
查看 linux 的网卡信息步骤如下:
工具原料:linux操作系统
①启动 linux 操作系统,进入到桌面;
④linux 的网卡信息解读:
1.查看网卡生产厂商和信号:
查看基本信息:lspci
查看详细信息:lspci -vvv # 3个小写的v
查看网卡信息:lspci | grep Ethernet;
2.查看网卡驱动:
查看网卡驱动信息:lspci -vvv # 找到网卡设备的详细信息,包括网卡驱动
# lsmod 列出加载的所有驱动,包括网卡驱动;
3.查看网卡驱动版本
查看模块信息:modifo<mole name> # 其中包含version信息或 # ethtool-i <device name>;
4.查看网络接口队列数
查看网卡接口的中断信息:#cat /proc/interrupts | grep eth0或 # ethtool-S eth0;
5.查看网卡驱动源码的版本号
解压Intel网卡驱动源码,打开解压缩目录下的*.spec文件查看驱动的版本;
5. 如何读懂tcpmp的输出
tcpmp 是 Linux 下的抓包工具,使用参数比较多,输出条目比较细。
tcpmp的命令行格式
tcpmp [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ]
[ -i 网络接口 ] [ -r 文件名] [ -s snaplen ]
[ -T 类型 ] [ -w 文件名 ] [表达式 ]
tcpmp的参数选项
-A:以ASCII编码打印每个报文(不包括链路层的头),这对分析网页来说很方便;
-a:将网络地址和广播地址转变成名字;
-c<数据包数目>:在收到指定的包的数目后,tcpmp就会停止;
-C:用于判断用 -w 选项将报文写入的文件的大小是否超过这个值,如果超过了就新建文件(文件名后缀是1、2、3依次增加);
-d:将匹配信息包的代码以人们能够理解的汇编格式给出;
-dd:将匹配信息包的代码以c语言程序段的格式给出;
-ddd:将匹配信息包的代码以十进制的形式给出;
-D:列出当前主机的所有网卡编号和名称,可以用于选项 -i;
-e:在输出行打印出数据链路层的头部信息;
-f:将外部的Internet地址以数字的形式打印出来;
-F<表达文件>:从指定的文件中读取表达式,忽略其它的表达式;
-i<网络界面>:监听主机的该网卡上的数据流,如果没有指定,就会使用最小网卡编号的网卡(在选项-D可知道,但是不包括环路接口),linux 2.2 内核及之后的版本支持 any 网卡,用于指代任意网卡;
-l:如果没有使用 -w 选项,就可以将报文打印到 标准输出终端(此时这是默认);
-n:显示ip,而不是主机名;
-N:不列出域名;
-O:不将数据包编码最佳化;
-p:不让网络界面进入混杂模式;
-q:快速输出,仅列出少数的传输协议信息;
-r<数据包文件>:从指定的文件中读取包(这些包一般通过-w选项产生);
-s<数据包大小>:指定抓包显示一行的宽度,-s0表示可按包长显示完整的包,经常和-A一起用,默认截取长度为60个字节,但一般ethernetMTU都是1500字节。所以,要抓取大于60字节的包时,使用默认参数就会导致包数据丢失;
-S:用绝对而非相对数值列出TCP关联数;
-t:在输出的每一行不打印时间戳;
-tt:在输出的每一行显示未经格式化的时间戳记;
-T<数据包类型>:将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议);
-v:输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;
-vv:输出详细的报文信息;
-x/-xx/-X/-XX:以十六进制显示包内容,几个选项只有细微的差别,详见man手册;
-w<数据包文件>:直接将包写入文件中,并不分析和打印出来;
expression:用于筛选的逻辑表达式;
tcpmp的表达式
表达式是一个逻辑表达式,tcpmp利用它作为过滤报文的条件,如果一个报文满足表达式的条件,则这个报文将会被捕获。如果没有给出任何条件,则网络上所有的信息包将会被截获。
在表达式中一般如下几种类型的关键字:
关于类型的关键字,主要包括host,net,port
例如,
host 210.27.48.2,指明 210.27.48.2是一台主机,net 202.0.0.0 指明202.0.0.0是一个网络地址,port 23 指明端口号是23。
如果没有指定类型,缺省的类型是host.
关于传输方向的关键字:src,dst,dst or src,dst and src
例如,src 210.27.48.2 ,指明ip包中源地址是210.27.48.2 , dst net 202.0.0.0 指明目的网络地址是202.0.0.0 。如果没有指明方向关键字,则缺省是src or dst关键字。
关于协议的关键字:fddi,ip,arp,rarp,tcp,udp
Fddi指明是在FDDI(分布式光纤数据接口网络)上的特定的网络协议,实际上它是"ether"的别名,fddi和e ther具有类似的源地址和目的地址,所以可以将fddi协议包当作ether的包进行处理和分析。
其他的几个关键字就是指明了监听的包的协议内容。如果没有指定任何协议,则tcpmp将会监听所有协议的信息包。
逻辑运算符关键字
非运算 'not ' '! '
与运算 'and','&&'
或运算 'or' ,'||'
这些关键字可以组合起来构成强大的组合条件来满足人们的需要,下面举几个例子来说明。
其他重要关键字
除了这三种类型的关键字之外,其他重要的关键字如下:gateway, broadcast,less,greater。
案例
想要截获所有210.27.48.1 的主机收到的和发出的所有的数据包:
tcpmp host 210.27.48.1
想要截获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通信,使用命令
tcpmp host 210.27.48.1 and \(210.27.48.2 or 210.27.48.3\)
如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令:
tcpmp ip host 210.27.48.1 and ! 210.27.48.2
如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命令:
tcpmp tcp port 23 host 210.27.48.1
输出结果介绍
下面我们介绍几种典型的tcpmp命令的输出信息
数据链路层头信息
使用命令tcpmp --e host ice
ice 是一台装有linux的主机,她的MAC地址是0:90:27:58:af:1a
H219是一台装有SOLARIC的SUN工作站,它的MAC地址是8:0:20:79:5b:46
命令的输出结果如下所示:
21:50:12.847509 eth0 < 8:0:20:79:5b:46 0:90:27:58:af:1a ip 60: h219.33357 > ice.telnet 0:0(0) ack 22535 win 8760 (DF)
分析:
21:50:12 是显示的时间
847509 是ID号
eth0 < 表示从网络接口eth0 接受该数据包
eth0 > 表示从网络接口设备发送数据包
8:0:20:79:5b:46 是主机H219的MAC地址,它表明是从源地址H219发来的数据包
0:90:27:58:af:1a 是主机ICE的MAC地址,表示该数据包的目的地址是ICE
ip 是表明该数据包是IP数据包,
60 是数据包的长度,
h219.33357 > ice.telnet 表明该数据包是从主机H219的33357端口发往主机ICE的TELNET(23)端口
ack 22535 表明对序列号是222535的包进行响应
win 8760 表明发送窗口的大小是8760
ARP包的TCPDUMP输出信息
使用命令#tcpmp arp
得到的输出结果是:
22:32:42.802509 eth0 > arp who-has route tell ice (0:90:27:58:af:1a)
22:32:42.802902 eth0 < arp reply route is-at 0:90:27:12:10:66 (0:90:27:58:af:1a)
分析:
22:32:42 时间戳
802509 ID号
eth0 > 表明从主机发出该数据包
arp 表明是ARP请求包
who-has route tell ice 表明是主机ICE请求主机ROUTE的MAC地址
0:90:27:58:af:1a 是主机ICE的MAC地址。
TCP包的输出信息
用TCPDUMP捕获的TCP包的一般输出信息是:
src > dst: flagsdata-seqnoackwindowurgentoptions
src > dst 表明从源地址到目的地址
flags 是TCP包中的标志信息,S 是SYN标志, F(FIN), P(PUSH) , R(RST) "."(没有标记)
data-seqno 是数据包中的数据的顺序号
ack 是下次期望的顺序号
window 是接收缓存的窗口大小
urgent 表明数据包中是否有紧急指针
options 是选项
用TCPDUMP捕获的UDP包的一般输出信息是:
route.port1 > ice.port2: udplenth
UDP十分简单,上面的输出行表明从主机ROUTE的port1端口发出的一个UDP数据包到主机ICE的port2端口,类型是UDP, 包的长度是lenth
wireshark查看
要让wireshark能分析tcpmp的包,关键的地方是 -s 参数, 还有要保存为-w文件,例如下面的例子:
./tcpmp -i eth0 -s 0 -w SuccessC2Server.pcaphost 192.168.1.20 # 抓该主机的所有包,在wireshark中过滤
./tcpmp -i eth0 'dst host 239.33.24.212' -w raw.pcap # 抓包的时候就进行过滤
wireshark的过滤,很简单的,比如:
tcp.port eq 5541
ip.addr eq 192.168.2.1
过滤出来后, 用fllow tcp 查看包的内容。
其他
device eth0/eth1 entered promiscuous mode
message日志中提示:
kernel: device eth0 entered promiscuous mode
kernel: device eth0 left promiscuous mode
网卡进入了混杂模式。一般对通信进行抓包分析时进入混杂模式(tcpmp)。(默认网卡启用了混杂模式的)
关闭混杂模式:ifconfig eth0 -promisc
启用混杂模式:ifconfig eth0 promisc
TCP协议的KeepAlive机制与HeartBeat心跳包:http://www.nowamagic.net/academy/detail/23350382
TCP Keepalive HOWTO:http://www.tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/
6. linux 重启网卡 Device eth0 has different MAC address than expected, ignoring 如何解决
这个提示是指网口的mac地址已经变化,但是设备名称没有变化,导致设备名称和mac地址无法匹配,linux无法挂载该网口。换种说法就是该网口的配置文件里的mac地址和该网口实际的mac地址不符合。
这种情况一般发生在虚拟机迁移,或者更换网卡的时候,解决方案如下:
1:记录网口的实际地址,执行ifconfig eth0
其中HWaddr后面就是网口实际的mac地址
2:更改配置文件中的mac地址
打开eth0的网口配置文件: /etc/sysconfig/network-scripts/ifcfg-eth0
(该地址可能随着不同的操作系统有所不同)
在文件中寻找 HWADDR= 这行,如果没有就新加一行。把这行后面的值改成第一步看到的mac地址值,例如 HWADDR="00:0C:29:2D:2D:CF",然后保存退出
3:通过service network restart重启网卡,或者通过ifup eth0启动网卡(该命令会检查配置文件)
7. 怎样用一个网卡设置多个IP地址
作为网络管理员的我们是否为公司服务器数量有限而担忧呢?对于中小企业来说经费确实是一个大问题,如果我们要在同一台服务器上开启多个服务的话怎么办呢?特别是对于某些软件要求网卡地址唯一不能被其他服务占用该I P的时候如何解决这个问题呢?装双网卡是一个不错的办法,然而实际中很多服务器是不能随便开机箱的,否则保修就没有了保证。笔者今天就为各位IT168的读者介绍如何让网卡一分为二,为一个网卡配置多个IP地址。 如何在局域网中为一台服务器提供两个默认Web站点,或使一台机器访问不同的网段呢?安装多块物理网卡固然能解决问题,但为一块网卡绑定多个IP地址也能解决这些问题。下面为大家介绍在不同操作系统下为一块网卡绑定多个IP地址的方法。一,Windows98系统——通过修改系统注册表来实现。在Windows98系统中为一个网卡添加多个IP地址是非常简单的,我们通过修改系统注册表来实现。第一步:通过任务栏的“开始->运行->输入REGEDIT”,打开注册表编辑器。第二步:在注册表编辑器中找到如下键值HKEY_local_MACHINE\System\CurrentControlSet\Services\Class\NetTrans目录分支。第三步:在此目录中可以看到多个名为0000、0001、0002……的目录,它们用于记录协议的安装情况。在它们中间找到DriverDesc为“TCP/IP”的目录,修改IPAddress和IPMask是对应的掩码。例如设置IPAddress为“192.168.0.1,192.168.0.2”,IPMask为“255.255.255.0”,“255.255.255.0”时,表示为系统设置了两个IP地址:192.168.0.1和192.168.0.2。从而实现了为windows98系统中一个网卡设置多个IP地址。二,Windows 2000/XP系统——通过修改网络配置来实现 在windows 2000/xp以及更高的2003系统中我们为一个网卡设置多个地址的方法更加简单,直接通过修改网络配置即可实现。第一步:单击任务栏的“开始”—>“设置”—>“控制面板”,双击“网络和拨号连接”。第二步:用鼠标右键单击“本地连接”,选择“属性”命令,调出“本地连接属性”面板,选择“Internet协议(TCP/IP)”,单击属性,调出“Internet协议(TCP/IP)属性”面板。第三步:在“Internet协议(TCP/IP)属性”面板中单击下方的“高级”按钮,调出“高级”按钮,再调出“高级TCP/IP设置”面板。在IP地址栏下面列出了网卡已设定的IP 地址和子网掩码,单击“添加”按钮,在弹出的对话框中填上新的IP地址(如192.168.0.2,注意不能与其他机器的IP地址重复),子网掩码与原有的相同(如255.255.255.0)。然后依次单击“确定”按钮,就完成了两个IP地址的绑定。(三,SCOUNIX系统——通过增加网络接口的别名地址来实现当然目前公司使用的操作系统不光光是微软公司的,还有UNIX和LINUX系统,在SCOUNIX系统中我们可以通过增加网络接口的别名地址来实现为一个网卡设置多个IP地址的功能。第一步:编辑/etc/tcp文件,使用命令“vi/etc/tcp”,找到包含网卡设备文件名net0的ifconfig命令行。第二步:通过在命令行后添加ifconfig命令行来为该网卡设置其他的IP地址(即第2个IP地址、第3个IP地址……)。若设置该网卡的第2个IP地址为192.168.0.2,掩码为255.255.255.0,则可添加如下行所示的内容:
ifconfig net0 alias 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255 perf 24567 24567 1第三步:保存后执行reboot命令,重新启动计算机,你就会发现本地计算机一个网卡被设置了多个IP地址以及子网掩码。四,Linux系统——通过修改网络设备配置文件来实现 linux系统中实现为一个网卡设置多个网络地址的方法和SCOUNIX系统类似,也是通过编辑配置文件来实现的。 第一步:需要编辑修改的配置文件存放在/etc/sysconfig/network-scripts里面,对于以太网的第1个网络设备,配置文件名一般为ifcofg-eth0。第二步:如果需要为第1个网络设备绑定多一个IP地址,只需要在/etc/sysconfig/network-scripts目录里面创建一个名为ifcfg-eth0:0的文件,内容样例为:
DEVICE=“eth0:0”
IPADDR=“192.168.0.1”
NETMASK=“255.255.255.0”
ONBOOT=“yes”小提示:上面那么多参数大家设置起来可能会一头雾水,下面为大家详细介绍下其中的DEVICE为设备的名称,IPADDR为此设备的IP地址,NETMASK为子网掩码,ONBOOT表示在系统启动时自动启动。如果需要再多绑定一个IP地址,只需要把文件名和文件内的DEVICE中的eth0:x 加一即可。