Linux下设置网卡的速率和模式:
mii-tool -F 100baseTx-FD eth0 #把网卡eth0设置为100M的全双工模式
还可以用:
ethtool:
ethtool -s eth0 speed 100 duplex full autoneg on
查看机器上的网卡设备:
lspci :查看机器上的PCI设备。因为现在的网卡设备基本上是PCI的,所以可以用此命令查看。
查看已有的驱动程序:
dmesg:
驱动程序库的位置:
KVER := $(shell uname -r)
KMISC := /lib/modules/$(KVER)/kernel/drivers/net/
查看编译入内核的驱动:
cat /lib/modules/$(KERNEL)/modules.builtin
手工加载时的步骤(一般用于测试模块)
加载模块:
insmod 或 modprobe
modprobe 模块名 [<option>=<VAL1>,<VAL2>,...]
insmod 模块名 [<option>=<VAL1>,<VAL2>,...]
查看加载的模块:
lsmod
移除模块:
rmmod
重建模块依赖文件(modules.conf)
depmod -a
启动时加载:
/etc/modprobe.conf
有些系统为
/etc/modules.conf
此文件格式如下:
alias eth0 r8101
命令 接口名 驱动程序名
在系统启动时,调用modprobe根据此文件加载驱动模块。
查看、配置网卡命令
ifconfig
ifconfig 配置网卡
配置网卡的IP地址
ifconfig eth0 192.168.0.1 netmask 255.255.255.0
在eth0上配置上192.168.0.1 的IP地址及24位掩码。若想再在eth0上在配置一个192.168.1.1/24 的IP地址怎么办?用下面的命令
ifconfig eth0:0 192.168.1.1 netmask 255.255.255.0
这时再用ifconifg命令查看,就可以看到两个网卡的信息了,分别为:eth0和eth0:0。若还想再增加IP,那网卡的命名就接着是:eth0:1、eth0:2...想要几个就填几个。ok!
配置网卡的硬件地址
ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx
就将网卡的硬件地址更改了,此时你就可以骗过局域网内的IP地址邦定了。
将网卡禁用
ifconfig eth0 down
将网卡启用
ifconfig eth0 up
ifconfig 命令的功能很强大,还可以设置网卡的MTU,混杂模式等。就不一一介绍了,用时间可以自己研究一下。
注意:用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了
启动网卡命令:
ifup ethX
或:
ifconfig up ethX
禁用网卡命令:
ifdown ethX
或:
ifconfig down ethX
接口配置文件:
/etc/sysconfig/network-scripts/ifcfg-ethX
文件内容:
TYPE=Ethernet
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
IPV6INIT=no
PEERDNS=yes
NETMASK=255.255.255.0
IPADDR=192.168.1.112
如何确定上面的文件?
可以查看:
/etc/sysconfig/network-scripts/ifup 或 ifdown文件
查看路由:
route
netstat -nr
linux下静态路由修改命令
方法一:
添加路由
route add -net 192.168.0.0/24 gw 192.168.0.1
route add -host 192.168.1.1 dev 192.168.0.1
删除路由
route del -net 192.168.0.0/24 gw 192.168.0.1
add 增加路由
del 删除路由
-net 设置到某个网段的路由
-host 设置到某台主机的路由
gw 出口网关 IP地址
dev 出口网关 物理设备名
增加默认路由
route add default gw 192.168.0.1
默认路由一条就够了
route -n 查看路由表
方法二:
添加路由
ip route add 192.168.0.0/24 via 192.168.0.1
ip route add 192.168.1.1 dev 192.168.0.1
删除路由
ip route del 192.168.0.0/24 via 192.168.0.1
add 增加路由
del 删除路由
via 网关出口 IP地址
dev 网关出口 物理设备名
增加默认路由
ip route add default via 192.168.0.1 dev eth0
via 192.168.0.1 是我的默认路由器
查看路由信息
ip route
保存路由设置,使其在网络重启后任然有效
在/etc/sysconfig/network-script/目录下创建名为route- eth0的文件
vi /etc/sysconfig/network-script/route-eth0
在此文件添加如下格式的内容
192.168.1.0/24 via 192.168.0.1
重启网络验证
/etc/rc.d/init.d/network中有这么几行:
# Add non interface-specific static-routes.
if [ -f /etc/sysconfig/static-routes ]; then
grep "^any" /etc/sysconfig/static-routes | while read ignore args ; do
/sbin/route add -$args
done
fi
也就是说,将静态路由加到/etc/sysconfig/static-routes 文件中就行了。
如加入:
route add -net 11.1.1.0 netmask 255.255.255.0 gw 11.1.1.1
则static-routes的格式为
any net 11.1.1.0 netmask 255.255.255.0 gw 11.1.1.1
查看状态:
netstat -s
实时查看流量:
nload, iftop
查看中断:
cat /proc/interrupts
修改帧大小和socket缓冲区大小
MTU (最大传输单元)的缺省值为1500.
通过下面命令将其改为9000(jumbo frame)
% ifconfig eth0 mtu 9000
socket buffer size缺省为64 kB.
理论上,最优的buffer大小为<bandwidth>*<round-trip delay>
可以通过下列命令改变其大小(如256KB)
% sysctl -w net.core.rmem_max=262144 ;最大的接收缓冲区大小(tcp连接)
% sysctl -w net.core.wmem_max=262144 ;最大的发送缓冲区大小(tcp连接)
% sysctl -w net.core.rmem_default=262144;缺省的接收缓冲区大小(tcp连接)
% sysctl -w net.core.wmem_default=262144;缺省的发送缓冲区大小(tcp连接)
这些参数在proc/sys下面可以看到;
sysctl -p | grep mem:显示当前缓冲区设置
round-trip delay 可由ping命令得到。
用程序得到如下,但是这个不能超过上面的最大值
int SetSocketBuff(int fd) { int buf = 100 * 1024, num; int nRet = 0; nRet = getsockopt(fd, SOL_SOCKET, SO_RCVBUF, &buf, (socklen_t*)&num); if(nRet) return nRet; LOG_DEBUG("SO_RCVBUF:%d/n", buf); buf *= 10; nRet = setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &buf, sizeof(buf)); if(nRet) return nRet; nRet = getsockopt(fd, SOL_SOCKET, SO_RCVBUF, &buf, (socklen_t*)&num); if(nRet) return nRet; LOG_DEBUG("had set SO_RCVBUF:%d/n", buf); nRet = getsockopt(fd, SOL_SOCKET, SO_SNDBUF, &buf, (socklen_t*)&num); if(nRet) return nRet; LOG_DEBUG("SO_SNDBUF:%d/n", buf); buf *= 10; nRet = setsockopt(fd, SOL_SOCKET, SO_SNDBUF, &buf, sizeof(buf)); if(nRet) return nRet; nRet = getsockopt(fd, SOL_SOCKET, SO_SNDBUF, &buf, (socklen_t*)&num); if(nRet) return nRet; LOG_DEBUG("had set SO_SNDBUF:%d/n", buf); return nRet; }