Linux下设置网卡

相关文章

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/

 

 

手工加载时的步骤(一般用于测试模块)

加载模块:

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;
}


参考:Ubuntu 12.10 DNS 配置

Linux_系统管理_网络配置_命令行配置网络


你可能感兴趣的:(linux,tcp,socket,buffer,路由器)