Unix编程/应用问答中文版 ---10.网卡相关问题
2.d/S69inet启动脚本中去。
10.5 如何修改主机名(hostname)
Q: Solaris 2.6下如何修改主机名(hostname)
A: Herve Poussin <poussin@partner-system.com>
需要修改如下文件
/etc/hosts
/etc/hostname.<interface>
/etc/nodename
/etc/net/*/hosts (3 files, man -s 7D ticotsord)
如果你运行在VxVM下,则应该
# vxdctl hostid <new_name>
# vxdctl init <new_name>
10.6 SPARC/Solaris 2.5/2.6/7/8下如何设置网卡100Mb全双工
Q: 我从SPARC连接3Com交换机时,总是使用半双工,如何配置网卡强行使用100Mb全
双工
A: Martin Scerri <martin_scerri@bigfoot.com>
下列回答来自"Sun管理员FAQ 12.3",并且只适合于Solaris 2.5及其以后版本,
Sun OS 4.x及其更早版本不支持hme接口。
一般网卡可以和交换机自动协商使用100Mb全双工,如果协商失败,可能看到诸如
"late collision"一类的消息,出现丢包甚至完全不能工作的现象。为了强行指定使
用某一确定的工作模式,比如100Mb FD,可以用ndd做如下操作:
# 指定操作hme0接口
ndd -set /dev/hme instance 0
# 关闭自动协商
ndd -set /dev/hme adv_autoneg_cap 0
# 打开100Mb FD支持
ndd -set /dev/hme adv_100fdx_cap 1
# 关闭100Mb HD支持
ndd -set /dev/hme adv_100hdx_cap 0
# 关闭10Mb FD支持
ndd -set /dev/hme adv_10fdx_cap 0
# 关闭10Mb HD支持
ndd -set /dev/hme adv_10hdx_cap 0
同样需要在对端(比如交换机)强行指定使用100Mb FD模式。
注意:Fast ethernet hubs 总是使用100Mb HD模式
ethernet hubs 总是使用10Mb HD模式
如果你想强行指定系统中所有hme网卡在启动时进入同一确定模式,可以在
/etc/system文件中设置,下例表示进入100Mbit FD模式:
set hme:hme_adv_autoneg_cap=0
set hme:hme_adv_100fdx_cap=1
set hme:hme_adv_100hdx_cap=0
set hme:hme_adv_10hdx_cap=0
set hme:hme_adv_10fdx_cap=0
A: Andreas.Gouder <Andreas.Gouder@t-online.de>
你可以用如下命令获取当前设置
# ndd -get /dev/hme link_mode
0 半双工
1 全双工
# ndd -get /dev/hme link_status
0 Link Down
1 Link up
# ndd -get /dev/hme link_speed
0 10Mbps
1 100Mbps
10.7 Unix/Linux/BSD如何对抗ARP欺骗攻击
Q: Solaris的静态ARP表项(arp -s)还是会被动态刷新,我只确认Linux/FreeBSD的静
态ARP表项不会被动态刷新,到底有没有稍微通用点的对抗ARP欺骗攻击的方法。
A: scz <scz@nsfocus.com>
下面以Solaris系统为例说明,其他系统大同小异。
1) 建立静态ARP表
/usr/bin/touch /etc/static_arp_entry
/usr/bin/chown root:root /etc/static_arp_entry
/usr/bin/chmod 600 /etc/static_arp_entry
编辑/etc/static_arp_entry文件,输入类似内容
192.168.8.90 00:00:00:11:11:11
/usr/sbin/arp -s -f /etc/static_arp_entry
可以在/etc/rc2.d/S69inet启动脚本中增加这条命令。参看arp(1M)、arp(7P)手册页
了解更多细节。这种技术对系统影响不大,对网络影响较大,破坏了动态ARP解析过
程。Solaris系统中,静态ARP表不会过期,必须用"arp -d"手动删除。但是,
Solaris系统的静态ARP表项可以被动态刷新,仅仅依靠静态ARP表项并不能对抗ARP欺
骗攻击,相反纵容了ARP欺骗攻击,因为虚假的静态ARP表项不会自动超时消失。当然,
可以考虑利用cron机制补救之。(增加一个crontab)
为了对抗ARP欺骗攻击,对于Solaris系统来说,应该结合"禁止相应网络接口做ARP解
析"和"使用静态ARP表"的设置
2) 禁止某个网络接口做ARP解析(对抗ARP欺骗攻击)
"/sbin/ifconfig hme0 -arp"命令将禁止hme0接口做ARP解析,hme0接口不会发送/接
收ARP报文。必须配合使用静态ARP表,否则无法完成正常网络通信。参看
ifconfig(1M)了解更多细节。假设/etc/rc2.d/S69inet启动脚本中存在如下内容
/sbin/ifconfig hme0 -arp
/usr/sbin/arp -s -f /etc/static_arp_entry
假设/etc/static_arp_entry文件内容如下
192.168.8.90 00:00:00:11:11:11
这里192.168.8.90是一台PWin98,也做静态ARP设置(因为对方不会响应ARP请求报文)
arp -s 192.168.10.6 08-00-20-a8-2e-ac
此时192.168.8.90与192.168.10.6可以正常通信,并且192.168.10.6不受ARP欺骗攻
击的影响。事实上,绝大多数Unix/Linux/BSD操作系统,都可以结合"禁止相应网络
接口做ARP解析"和"使用静态ARP表"的设置来对抗ARP欺骗攻击。对于Linux/FreeBSD
系统,因为其静态ARP表项(arp -s)不会被动态刷新,所以不需要"禁止相应网络接口
做ARP解析"即可对抗ARP欺骗攻击。
10.11 x86/Solaris如何强制设定网卡速率
Q: x86/Solaris,我如何强行指定网卡的工作状态为100Mbps full-duplex,ndd(1M)
不工作
A: CERNET 水木清华 Unix版 inc 2001-10-11 20:29
x86/Solaris下的网卡驱动不支持ndd(1M)设置网卡工作状态,要达到目的,唯一的办
法是通过driver.conf(4)指定。x86/Solaris 8的iprb(7D)手册页建议使用
ForceSpeedDuplex选项。对于其它驱动,参看如下例子
vi /kernel/drv/iprb.conf <-- 用ifconfig -a确认一下
# To force full duplex operation, uncomment the following line:
# full-duplex=1;
#
# To force half duplex operation, uncomment the following line:
# full-duplex=0;
#
# To force 10Mbps operation, uncomment the following line:
# speed=10;
#
# To force 100Mbps operation, uncomment the following line:
# speed=100;
奇怪的是iprb.conf原来没有上面的内容,elxl.conf却有。注意,不同网卡是有区别
的,我试了RealTek RTL8139/8129、3Com 3C905B TX、Intel,只有Intel的可以这样
修改,RealTek RTL8029的我不确定。
D: CERNET 水木清华 Unix版 2001-10-12 10:36
由于x86下网卡驱动不支持ndd(1M)获取网卡状态,被迫使用netstat -k
ifconfig -a 找出网络接口名
netstat -k <interface> | grep ifspeed
某些x86网卡驱动支持,某些不支持,这个办法同样适合于SPARC网卡驱动,虽然后者
可以直接使用ndd(1M)。
10.12 Solaris/FreeBSD/Linux如何确定网卡Capability/Speed
A: 小四 <scz@nsfocus.com> 2001-12-07 17:06
Solaris
# netstat -k hme0 | grep ifspeed
# ndd -get /dev/hme link_mode
0 半双工
1 全双工
# ndd -get /dev/hme link_status
0 Link Down
1 Link up
# ndd -get /dev/hme link_speed
0 10Mbps
1 100Mbps
FreeBSD用ifconfig就可以看到
status: active <-- 网线接到一个HUB上了
status: no carrier <-- 未接网线
Linux和Windows系列我到现在也不确认。
A: starw@smth.org
在高版
10.5 如何修改主机名(hostname)
Q: Solaris 2.6下如何修改主机名(hostname)
A: Herve Poussin <poussin@partner-system.com>
需要修改如下文件
/etc/hosts
/etc/hostname.<interface>
/etc/nodename
/etc/net/*/hosts (3 files, man -s 7D ticotsord)
如果你运行在VxVM下,则应该
# vxdctl hostid <new_name>
# vxdctl init <new_name>
10.6 SPARC/Solaris 2.5/2.6/7/8下如何设置网卡100Mb全双工
Q: 我从SPARC连接3Com交换机时,总是使用半双工,如何配置网卡强行使用100Mb全
双工
A: Martin Scerri <martin_scerri@bigfoot.com>
下列回答来自"Sun管理员FAQ 12.3",并且只适合于Solaris 2.5及其以后版本,
Sun OS 4.x及其更早版本不支持hme接口。
一般网卡可以和交换机自动协商使用100Mb全双工,如果协商失败,可能看到诸如
"late collision"一类的消息,出现丢包甚至完全不能工作的现象。为了强行指定使
用某一确定的工作模式,比如100Mb FD,可以用ndd做如下操作:
# 指定操作hme0接口
ndd -set /dev/hme instance 0
# 关闭自动协商
ndd -set /dev/hme adv_autoneg_cap 0
# 打开100Mb FD支持
ndd -set /dev/hme adv_100fdx_cap 1
# 关闭100Mb HD支持
ndd -set /dev/hme adv_100hdx_cap 0
# 关闭10Mb FD支持
ndd -set /dev/hme adv_10fdx_cap 0
# 关闭10Mb HD支持
ndd -set /dev/hme adv_10hdx_cap 0
同样需要在对端(比如交换机)强行指定使用100Mb FD模式。
注意:Fast ethernet hubs 总是使用100Mb HD模式
ethernet hubs 总是使用10Mb HD模式
如果你想强行指定系统中所有hme网卡在启动时进入同一确定模式,可以在
/etc/system文件中设置,下例表示进入100Mbit FD模式:
set hme:hme_adv_autoneg_cap=0
set hme:hme_adv_100fdx_cap=1
set hme:hme_adv_100hdx_cap=0
set hme:hme_adv_10hdx_cap=0
set hme:hme_adv_10fdx_cap=0
A: Andreas.Gouder <Andreas.Gouder@t-online.de>
你可以用如下命令获取当前设置
# ndd -get /dev/hme link_mode
0 半双工
1 全双工
# ndd -get /dev/hme link_status
0 Link Down
1 Link up
# ndd -get /dev/hme link_speed
0 10Mbps
1 100Mbps
10.7 Unix/Linux/BSD如何对抗ARP欺骗攻击
Q: Solaris的静态ARP表项(arp -s)还是会被动态刷新,我只确认Linux/FreeBSD的静
态ARP表项不会被动态刷新,到底有没有稍微通用点的对抗ARP欺骗攻击的方法。
A: scz <scz@nsfocus.com>
下面以Solaris系统为例说明,其他系统大同小异。
1) 建立静态ARP表
/usr/bin/touch /etc/static_arp_entry
/usr/bin/chown root:root /etc/static_arp_entry
/usr/bin/chmod 600 /etc/static_arp_entry
编辑/etc/static_arp_entry文件,输入类似内容
192.168.8.90 00:00:00:11:11:11
/usr/sbin/arp -s -f /etc/static_arp_entry
可以在/etc/rc2.d/S69inet启动脚本中增加这条命令。参看arp(1M)、arp(7P)手册页
了解更多细节。这种技术对系统影响不大,对网络影响较大,破坏了动态ARP解析过
程。Solaris系统中,静态ARP表不会过期,必须用"arp -d"手动删除。但是,
Solaris系统的静态ARP表项可以被动态刷新,仅仅依靠静态ARP表项并不能对抗ARP欺
骗攻击,相反纵容了ARP欺骗攻击,因为虚假的静态ARP表项不会自动超时消失。当然,
可以考虑利用cron机制补救之。(增加一个crontab)
为了对抗ARP欺骗攻击,对于Solaris系统来说,应该结合"禁止相应网络接口做ARP解
析"和"使用静态ARP表"的设置
2) 禁止某个网络接口做ARP解析(对抗ARP欺骗攻击)
"/sbin/ifconfig hme0 -arp"命令将禁止hme0接口做ARP解析,hme0接口不会发送/接
收ARP报文。必须配合使用静态ARP表,否则无法完成正常网络通信。参看
ifconfig(1M)了解更多细节。假设/etc/rc2.d/S69inet启动脚本中存在如下内容
/sbin/ifconfig hme0 -arp
/usr/sbin/arp -s -f /etc/static_arp_entry
假设/etc/static_arp_entry文件内容如下
192.168.8.90 00:00:00:11:11:11
这里192.168.8.90是一台PWin98,也做静态ARP设置(因为对方不会响应ARP请求报文)
arp -s 192.168.10.6 08-00-20-a8-2e-ac
此时192.168.8.90与192.168.10.6可以正常通信,并且192.168.10.6不受ARP欺骗攻
击的影响。事实上,绝大多数Unix/Linux/BSD操作系统,都可以结合"禁止相应网络
接口做ARP解析"和"使用静态ARP表"的设置来对抗ARP欺骗攻击。对于Linux/FreeBSD
系统,因为其静态ARP表项(arp -s)不会被动态刷新,所以不需要"禁止相应网络接口
做ARP解析"即可对抗ARP欺骗攻击。
10.11 x86/Solaris如何强制设定网卡速率
Q: x86/Solaris,我如何强行指定网卡的工作状态为100Mbps full-duplex,ndd(1M)
不工作
A: CERNET 水木清华 Unix版 inc 2001-10-11 20:29
x86/Solaris下的网卡驱动不支持ndd(1M)设置网卡工作状态,要达到目的,唯一的办
法是通过driver.conf(4)指定。x86/Solaris 8的iprb(7D)手册页建议使用
ForceSpeedDuplex选项。对于其它驱动,参看如下例子
vi /kernel/drv/iprb.conf <-- 用ifconfig -a确认一下
# To force full duplex operation, uncomment the following line:
# full-duplex=1;
#
# To force half duplex operation, uncomment the following line:
# full-duplex=0;
#
# To force 10Mbps operation, uncomment the following line:
# speed=10;
#
# To force 100Mbps operation, uncomment the following line:
# speed=100;
奇怪的是iprb.conf原来没有上面的内容,elxl.conf却有。注意,不同网卡是有区别
的,我试了RealTek RTL8139/8129、3Com 3C905B TX、Intel,只有Intel的可以这样
修改,RealTek RTL8029的我不确定。
D: CERNET 水木清华 Unix版 2001-10-12 10:36
由于x86下网卡驱动不支持ndd(1M)获取网卡状态,被迫使用netstat -k
ifconfig -a 找出网络接口名
netstat -k <interface> | grep ifspeed
某些x86网卡驱动支持,某些不支持,这个办法同样适合于SPARC网卡驱动,虽然后者
可以直接使用ndd(1M)。
10.12 Solaris/FreeBSD/Linux如何确定网卡Capability/Speed
A: 小四 <scz@nsfocus.com> 2001-12-07 17:06
Solaris
# netstat -k hme0 | grep ifspeed
# ndd -get /dev/hme link_mode
0 半双工
1 全双工
# ndd -get /dev/hme link_status
0 Link Down
1 Link up
# ndd -get /dev/hme link_speed
0 10Mbps
1 100Mbps
FreeBSD用ifconfig就可以看到
status: active <-- 网线接到一个HUB上了
status: no carrier <-- 未接网线
Linux和Windows系列我到现在也不确认。
A: starw@smth.org
在高版
Tags:Unix,编程,应用,问答,中文版,网卡,相关,问题

