eth0中无id号
㈠ 如何查询主机ID码
一、首先,打开Windows7系统,点击桌面左下角的“开始”,点击打开。

㈡ 交换机中eth0/0,是什么意思
eth指的是以太网,0/0指的是0号板卡的0号端口,也就是第一个版卡的第一个端口,总得说来eth0/0指的是那个端口的编号
你说的192.168.2.2指的是那个端口的IP地址, 端口也有地址,跟你主机一样,他也需要一个地址。
㈢ TCPDUMP 抓包 怎么查看 抓的包的内容
1、tcpmp检测登录linux系统输入tcpmp,如果找不到表示没有安装。也可以用rpm查询。

㈣ error:创建到服务器 (9903) 的连接失败
游戏服务器注意事项
一、硬件的安装
1、保证服务器风扇正常转动。
2、保证服务器各个提示灯是否正常。
3、开机察看服务器有无报警情况。
4、开机察看服务器能否正常启动(不插鼠标键盘的情况下)
二、系统的安装
安装RHEL 4.1
选择自动分区。
分别给2块网卡配置ip,方便以后配置,其中eth0配内网ip,eth1配外网ip。
不启用防火墙。
增加中文语言包。
选择软件包时,只选择开发包.
三、系统的简单设置
1、防火墙的简单设置:
vi /etc/rc.d/forward
内容:(例子)
#!/bin/bash
echo 1 >/proc/sys/net/ipv4/ip_forward
if [ -e /proc/sys/net/ipv4/tcp_ecn ]
then
echo 0 > /proc/sys/net/ipv4/tcp_ecn
fi
/sbin/iptables -F
/sbin/iptables -F -t nat
/sbin/depmod -a
/sbin/modprobe ip_tables
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_conntrack_ftp
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -j ACCEPT
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#/sbin/iptables -A INPUT -i eth0 -p tcp -j REJECT --reject-with tcp-reset
/sbin/iptables -A INPUT -i eth0 -p udp -j REJECT --reject-with icmp-port-unreachable
#sshd
/sbin/iptables -A INPUT -s 218.80.198.234 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
/sbin/iptables -A INPUT -s 218.80.198.250 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
/sbin/iptables -A INPUT -s 210.22.188.21 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
#ftp server
#/sbin/iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
#game server
/sbin/iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 6020 -j ACCEPT
#db server
/sbin/iptables -t nat -A PREROUTING -s 218.80.198.234 -d 203.110.165.30 -p tcp --dport 3306 -j DNAT --to 192.168.102.158:3306
/sbin/iptables -t nat -A PREROUTING -s 218.80.198.234 -d 203.110.165.30 -p tcp --dport 3307 -j DNAT --to 192.168.102.159:3306
/sbin/iptables -P INPUT DROP
/sbin/iptables -t nat -A POSTROUTING -o eth1 -s 192.168.102.0/24 -j MASQUERADE
保存后退出。
chmod 744 /etc/rc.d/forward
然后运行防火墙脚本,以后根据需求修改脚本。
再vi /etc/rc.d/only_forward
#!/bin/bash
echo 1 >/proc/sys/net/ipv4/ip_forward
if [ -e /proc/sys/net/ipv4/tcp_ecn ]
then
echo 0 > /proc/sys/net/ipv4/tcp_ecn
fi
/sbin/iptables -F
/sbin/iptables -F -t nat
/sbin/depmod -a
/sbin/modprobe ip_tables
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_conntrack_ftp
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -j ACCEPT
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#/sbin/iptables -A INPUT -i eth0 -p tcp -j REJECT --reject-with tcp-reset
/sbin/iptables -A INPUT -i eth0 -p udp -j REJECT --reject-with icmp-port-unreachable
#sshd
/sbin/iptables -A INPUT -s 218.80.198.234 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
/sbin/iptables -A INPUT -s 218.80.198.250 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
/sbin/iptables -A INPUT -s 210.22.188.21 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
#ftp server
#/sbin/iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
#game server
/sbin/iptables -A INPUT -s 218.80.198.234 -p tcp -m state --state NEW -m tcp --dport 6020 -j ACCEPT
#db server
/sbin/iptables -t nat -A PREROUTING -s 218.80.198.234 -d 203.110.165.30 -p tcp --dport 3306 -j DNAT --to 192.168.102.158
/sbin/iptables -t nat -A PREROUTING -s 218.80.198.234 -d 203.110.165.30 -p tcp --dport 3307 -j DNAT --to 192.168.102.159:3306
/sbin/iptables -P INPUT DROP
/sbin/iptables -t nat -A POSTROUTING -o eth1 -s 192.168.102.0/24 -j MASQUERADE
此防火墙只允许公司的电脑可以登录游戏。
2、设置系统自动启动防火墙
vi /etc/rc.d/rc.local
增加一行
/etc/rc.d/forward
保存后退出
3、设置文件打开数
1) 修改/etc/security/limits.conf 增加2行:
* soft nofile 4096
* hard nofile 65535
2) 修改/etc/pam.d/login 增加1行
session required pam_limits.so
可用:
echo “* soft nofile 4096” >>/etc/security/limits.conf
echo “* hard nofile 65535” >>/etc/security/limits.conf
echo “session required pam_limits.so” >>/etc/pam.d/login
4、修改默认语言
vi /etc/sysconfig/i18n 修改
LANG="zh_CN.GB2312"
新建游戏运行用户ztgame,设置密码
useradd ztgame
passwd ztgame
用ztgame用户登录服务器,修改vi /home/ztgame/.bash_profile增加一行
ulimit –c unlimited
保存后退出。
四、游戏环境的搭建(按照4台网关服务器,5台场景服务器,1台数据库服务器的构架)
1、服务器IP设置
4台网关服务器配置外网ip和内网ip,5台场景服务器和数据库服务器只配置内网ip,并且服务器默认网关为第一台网关服务器的内网ip。
服务器以服务器应用-序号-机房序号命名(例GWServer01-CHJ01)。
修改/etc/hosts。
例子:
127.0.0.1 GWServer01-CHJ01 localhost.localdomain localhost
192.168.100.101 GWServer02-CHJ01
………
192.168.100.104 ScenServer01-CHJ01
………
192.168.100.109 DBServer-CHJ01
2、公钥的生成
在ztgame的用户下登陆第一台网关服务器,输入ssh-keygen -t dsa
接受 ~/.ssh/id_dsa 的默认位置。输入一个与你的帐号口令不同的口令句,再输入一次来确认。公钥被写入 ~/.ssh/id_dsa.pub。密钥被写入 ~/.ssh/id_dsa。
使用以下命令改变你的 .ssh 目录的许可权限:
chmod 755 ~/.ssh
把 ~/.ssh/id_dsa.pub用scp命令传到其它剩余9台服务器
scp~/.ssh/id_dsa.pub [email protected]:~/.ssh/authorized_keys
在其它9台服务器下使用以下命令改变你的 authorized_keys 文件的许可权限:
chmod 755 ~/.ssh
chmod 644 ~/.ssh/authorized_keys
3、数据库服务器的安装
#首先确定你是root用户
#确定你有以下包
perl-DBD-MySQL-2.9004-3.1
perl-DBI-1.40-5
mysql-4.1.7-4.RHEL4.1
获得mysql-4.1.*.tar包,用tar –zxvf mysql-4.1.*tar解开压缩包,然后进入mysql-4.1.*目录
#根据体统类型选择编译方式
#i386体系结构的
CFLAGS="-O3 -mcpu=pentiumpro" CXX=gcc CXXFLAGS="-O3 -mcpu=pentiumpro -felide-constructors -fno-exceptions -fno-rtti" ./configure --with-raid --enable-thread-safe-client --enable-assembler --with-server-suffix =" for >>>MySQL Database of Zebra by Yhc<<<" --without-debug --with-extra-charsets=none --without-isam --disable-shared --with-mysqld-ldflags=-all-static --prefix=/usr/local/mysql --without-bench
#64位系统,x86_64
CFLAGS="-O3 -m64" CXX=gcc CXXFLAGS="-O3 -m64 -felide-constructors -fno-exceptions -fno-rtti" ./configure --with-raid --enable-thread-safe-client --enable-assembler --with-server-suffix =" for >>>MySQL Database of Zebra by Yhc<<<" --without-debug --with-extra-charsets=none --without-isam --disable-shared --with-mysqld-ldflags=-all-static --prefix=/usr/local/mysql --without-bench
#然后根据CPU数量进行编译
make -j 2 && make install
#添加用户
groupadd mysql && useradd -g mysql mysql
#创建目录
mkdir /usr/local/mysql/data && mkdir /usr/local/mysql/run && mkdir /usr/local/mysql/log && mkdir /usr/local/mysql/var
#更改mysql目录所有者
chgrp mysql -R /usr/local/mysql && chown mysql -R /usr/local/mysql
#增加打开文件数量
ulimit -n 4096
#添加PATH
echo "PATH=\"/usr/local/mysql/bin:\$PATH\"" >> /etc/profile && export PATH="/usr/local/mysql/bin:$PATH"
#strip可执行文件
strip /usr/local/mysql/libexec/mysqld
#添加LIB PATH
echo "/usr/local/mysql/lib" >> /etc/ld.so.conf && ldconfig
#将my.cnf文件cp到/etc目录下
cp support-files/my-huge.cnf /etc/my.cnf
#修改my.cnf
datadir=/db/mysql
#创建数据库存放路径
mkdir /db
chown mysql.mysql /db -R
#初始化Mysql表
su - mysql -c "mysql_install_db"
#启动服务器
su - mysql -c "mysqld_safe --skip-name-resolve --open-files-limit=4096&"
#创建数据库和用户
GRANT ALL PRIVILEGES ON *.* TO [email protected].% IDENTIFIED BY WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO ztgame@localhost IDENTIFIED BY WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO [email protected] IDENTIFIED BY WITH GRANT OPTION;
4、数据库配置
用mysql进入,然后用create database dbname创建数据库。分别创建SuperServer、RecordServer、Bill数据库,然后用安装包目录下的*.sql的文件建立相应的表。(SessionServer.sql也导入到RecordServer库中)。
在SuperServer数据库SERVERLIST表内添加服务器配置信息。
例子:
INSERT INTO `SERVERLIST` VALUES (1,1,SuperServer,192.168.104.109,10000,192.168.104.109,10000);
INSERT INTO `SERVERLIST` VALUES(20,20,SessionServer,192.168.104.109,6000,192.168.104.109,6000);
INSERT INTO `SERVERLIST` VALUES(21,21,SceneServer,192.168.104.104,6010,192.168.104.104,6010);
INSERT INTO `SERVERLIST` VALUES(22,21,SceneServer,192.168.104.105,6011,192.168.104.105,6011);
INSERT INTO `SERVERLIST` VALUES(23,21,SceneServer,192.168.104.106,6012,192.168.104.106,6012);
INSERT INTO `SERVERLIST` VALUES(24,21,SceneServer,192.168.104.107,6013,192.168.104.107,6013);
INSERT INTO `SERVERLIST` VALUES(25,21,SceneServer,192.168.104.108,6014,192.168.104.108,6014);
INSERT INTO `SERVERLIST` VALUES(2200,22,GatewayServer,192.168.104.100,6020,210.51.23.132,6020);
INSERT INTO `SERVERLIST` VALUES(2201,22,GatewayServer,192.168.104.101,6020,210.51.23.133,6020);
INSERT INTO `SERVERLIST` VALUES(2202,22,GatewayServer,192.168.104.102,6020,210.51.23.134,6020);
INSERT INTO `SERVERLIST` VALUES(2203,22,GatewayServer,192.168.104.103,6020,210.51.23.135,6020);
INSERT INTO `SERVERLIST` VALUES(11,11,RecordServer,192.168.104.109,7010,192.168.104.109,7010);
INSERT INTO `SERVERLIST` VALUES(12,12,BillServer,192.168.104.109,7020,192.168.104.109,7020);
在RecordServer数据库上初始化某些表格,目前有ANSWER,TECH,COUNTRY,NPCDARE,ACCPRIV。
数据库服务器上跑SuperServer、SessionServer、RecordServer、BillServer四个服务,4个网关服务器分别跑4个网关服务,5个场景服务器分别跑5个场景服务。场景服务器对应的ID就是国家配置的ID号,这个ID号决定场景服务器上面跑几个国家。
五、服务端的配置和安装
1、获得安装包:
release-version.tar.bz2
map-version.tar.bz2
在/home/ztgame下建立以时间为名字的目录(game20050928),压缩包放入此目录,然后用tar –jxvf release-version.tar.bz2 和tar –jxvf map-version.tar.bz2解开压缩包
进入release目录,cp –rf ../map .
按照config.xml.example格式创建文件config.xml
配置文件主要定义了服务器的各种参数:
[global]这段主要定义了通用参数,如服务器本地网络设备名称,扩展网络设备名称,日志级别,SuperServer的服务器地址,端口等参数。
其他各个段定义了具体的服务参数,主要是指定该服务对应的数据库,数据库的连接地址,端口,用户名,密码等数据库连接字符串。每个服务可以定义日志文件的存放位置,如果没有指定,缺省放置在/tmp/目录下面。
如SuperServer服务
<SuperServer>
<!--MySQL database connection[mysql://user:passwd@host:port/dbName]-->
<mysql>mysql://test:[email protected]:3306/SuperServer</mysql>
<logfilename>/home/test/tmp/superserver.log</logfilename>
</SuperServer>
上面配置指明SuperServer服务,采用连接串用户名test,密码123456,访问192.168.2.14服务器上3306端口下SuperServer数据库,日志文件存放在/home/test目录下。其他服务配置类似。
例子:
<?xml version="1.0" encoding="GB2312"?>
<!--所有各种服务器参数-->
<Zebra>
<global>
<!-- Specify the log level[debug,info,warning,error,fatal,always]. -->
<log>debug</log>
<!--MySQL database connection[mysql://user:passwd@host:port/dbName]-->
<!-- Use the specified local network device. -->
<ifname>eth0</ifname>
<!-- Connected to the specified supserserver, property port default value is 10000. -->
<superserver port="10000">192.168.104.109</superserver>
</global>
<SuperServer>
<!-- 统一用户平台登陆服务器列表文件 -->
<loginServerListFile>loginServerList.xml</loginServerListFile>
<!-- 角色名称唯一性验证服务器的地址 -->
<RoleregServer port="9901">218.80.198.252</RoleregServer>
<!-- 服务器信息采集的服务器地址 -->
<InfoServer port="9903">218.80.198.252</InfoServer>
<!--MySQL database connection[mysql://user:passwd@host:port/dbName]-->
<mysql>mysql://ztgame:[email protected]:3306/SuperServer</mysql>
<!-- 如果要编码mysql连接字符串请使用工具,配置如下面的例子
<mysql encode="yes">lmOf.
</mysql>-->
<logfilename>/log/superserver.log</logfilename>
</SuperServer>
<RecordServer>
<!--MySQL database connection[mysql://user:passwd@host:port/dbName]-->
<mysql>mysql://ztgame:[email protected]:3306/RecordServer</mysql>
<logfilename>/log/recordserver.log</logfilename>
</RecordServer>
<BillServer>
<!--MySQL database connection[mysql://user:passwd@host:port/dbName]-->
<mysql>mysql://ztgame:[email protected]:3306/Bill</mysql>
<logfilename>/log/billserver.log</logfilename>
</BillServer>
<BillClient>
<!-- 交易记录log文件路径 -->
<tradelogfilename>/log/clienttrade.log</tradelogfilename>
</BillClient>
<SessionServer>
<!--MySQL database connection[mysql://user:passwd@host:port/dbName]-->
<mysql>mysql://ztgame:[email protected]:3306/RecordServer</mysql>
<logfilename>/log/sessionserver.log</logfilename>
<dare_active_time>3600</dare_active_time>
<offlineMsgPath>/log/offlineMessages</offlineMsgPath>
</SessionServer>
<ScenesServer>
<sceneinfofile>scenesinfo.xml</sceneinfofile>
<npctradefile>npctrade.xml</npctradefile>
<messageSystemFile>messageSystem.xml</messageSystemFile>
<charinitinfoFile>initcharinfo.xml</charinitinfoFile>
<magicrangeFile>magicrangefile.xml</magicrangeFile>
<questdir>quest/</questdir>
<mapdir>map/</mapdir>
<tbldir>map/</tbldir>
<gm_logfile>/log/gm_log.log</gm_logfile>
<!--回写档案平率(单位是秒) -->
<writebacktimer>300</writebacktimer>
<ossdir>/log/</ossdir>
<logfilename>/log/scenesserver.log</logfilename>
</ScenesServer>
<GatewayServer>
<!-- 国家排序方式 0:不排序 , 1:在线人数排序 , 2:注册人数排序 -->
<countryorder>2</countryorder>
<logfilename>/log/gatewayserver.log</logfilename>
<sceneinfofile>scenesinfo.xml</sceneinfofile>
<rolereg_verify>1</rolereg_verify>
<forbidWordsFile>forbidWords</forbidWordsFile>
</GatewayServer>
</Zebra>
注意存放日至的目录是否建立,以及建立session服务所要求的日志存放子目录offlineMessages。
修改loginServerList.xml,填入平台中心的FLServer服务器ip以及端口。
例子:
<?xml version="1.0" encoding="GB2312"?>
<LoginServerList>
<server ip="218.80.198.252" port="7001"/>
<server ip="210.22.188.20" port="7001"/>
</LoginServerList>
然后将修改好的版本传至其它9台服务器。并启动服务
六、服务器的启动,停止和更新
1、将运行脚本传至各个服务器。
2、开启游戏服务
通过ssh使用ztgame用户远程连接至第一台网关服务器,再通过网关服务器连接其他9台服务器,
10个窗口内分别进入最新的服务端存放目录/home/ztgame/game200508**/release/
数据库服务器 启动服务./SuperServer -d 和 ./SessionServer -d 和 ./RecordServer -d 和 ./BillServer -d
场景服务器 启动服务./ScenesServer -d
网关服务器 启动服务./GatewayServer -d
以上操作可以通过/home/ztgame/tools/allstart game200508**来启动(由于程序是后台运行,所以如发现程序运行时间过长,可以CTRL+c中断,并不影响程序的正常运行。)
3、停止游戏服务
通过ssh使用ztgame用户远程连接至第一台网关服务器,运行/home/ztgame/tools/allstop,中止所有服务
,此脚本是并不是强行杀进程,所以如果发现进程无法kill的情况,用/home/ztgame/tools/allstop_9来强行杀死进程。
4、查看游戏服务
通过ssh使用ztgame用户远程连接至第一台网关服务器,运行/home/ztgame/tools/allview,查看所有服务运行状态。
5、更新游戏服务
通过ssh使用ztgame用户远程连接至第一台网关服务器,再通过服务器连接其他9台服务器,
分别在/home/ztgame目录下面建立最新的服务端存放目录game200508**.
然后将服务器端安装包通过scp传到第一台网关服务器,在game200508**下解压。
tar jxvf zebra-release-*****
tar jxvf zebra-release-*****
cp map release/ -rf
然后从上一个版本里拷贝出一些配置文件覆盖源文件
cp /home/ztgame/game_old/release/config.xml /home/ztgame/game_new/release/
cp /home/ztgame/game_old/release/loginServerList.xml /home/ztgame/game_new/release/
cp /home/ztgame/game_old/release/messageSystem.xml /home/ztgame/game_new/release/
以上工作准备好后就可以将网关服务器上的版本传到其他服务器
scp -r /home/ztgame/game_new/* [email protected]:/home/ztgame/game_new
以上操作可以通过shell脚本来实现
/home/ztgame/tools/installPackage game_new game-old
七、服务器数据的备份
1、数据备份
为了防止意外情况的发生造成数据的丢失,关键数据或整个系统或对有选择的系统部分,在本地和异地进行定时备份,以保证系统全部或部分在灾害出现时也能持续运行。
2、具体方案
1)、数据库每日备份
每天4:00,将RecordServer数据库拷贝至/root/back后进行压缩,然后上传至192.168.1.9服务器上,/root/back留有压缩版本。
运行脚本/root/scripts/back.sh
例子:
#!/bin/bash
rm /root/back/RecordServer/* -rf
/usr/local/mysql/bin/mysqlhot RecordServer /root/back/RecordServer -u ztgame -p yS29wahvCH
sleep 5
cd /root/back
tar zcf `hostname`-RecordServer`date +%Y%m%d`.tar.gz RecordServer
sleep 5
echo "tar ok!"
/usr/local/bin/ncftpput -u gamebak -p gamebak@ztgame 218.80.198.234 / /root/back/`hostname`-RecordServer`date +%Y%m%d`.tar.gz
sleep 20
echo "upload RecordServer ok!"
2)、数据库即时备份
每隔1小时,将RecordServer数据库拷贝至/root/back/hour目录进行备份,然后将压缩文件传给特定服务器。
例子:
#!/bin/bash
hottime=`date +%Y%m%d%H%M`
mkdir /root/back/hour/RecordServer"$hottime"
/usr/local/mysql/bin/mysqlhot RecordServer /root/back/hour/RecordServer"$hottime" -u ztgame -p yS29wahvCH
sleep 5
cd /root/back/hour
tar zcf `hostname`-RecordServer"$hottime".tar.gz RecordServer"$hottime"
sleep 5
echo "tar ok!"
/usr/local/bin/ncftpput -u backupdb -p backupdb 192.168.102.119 / /root/back/hour/`hostname`-RecordServer"$hottime".tar.gz
sleep 20
echo "upload RecordServer ok!"
rm `hostname`-RecordServer"$hottime".tar.gz -f
3)、日志备份
每天02:00,将/log/下前一天的日志,进行压缩,然后上传至192.168.1.9服务器。
运行脚本/root/scripts//upload_daily
例子:
#!/bin/bash
cd /log/
mkdir log`date --date 1 days ago +%Y%m%d`
mv *.log.`date --date 1 days ago +%y%m%d`-* log`date --date 1 days ago +%Y%m%d`
sleep 10
tar zcvf `hostname`-log`date --date 1 days ago +%Y%m%d`.tar.gz log`date --date 1 days ago +%Y%m%d`
/usr/local/bin/ncftpput -u log -p log@ztgame 218.80.198.234 / /log/`hostname`-log`date --date 1 days ago +%Y%m%d`.tar.gz
rm `hostname`-log`date --date 1 days ago +%Y%m%d`.tar.gz
注:计划任务通过/etc/crontab –e来进行设置
4)、即时日志备份
直接运行/home/ztgame/tools/upload 将最新日志上传至192.168.1.9服务器,方便研发部门查看。
运行脚本/home/ztgame/tools/upload,(
㈤ linux系统不能上网,提示无法激活eth0
setup选NETWORK
或有的版本用netconfig 设置
或vi /etc/sysconfig/network-script/ifcfg-eth0
改为
DEVICE=eth0
ONBOOT=YES
BOOTPROTO=dhcp
重启网络服务service network restart
一般可使用如果已设为DHCP可使用dhclient eth0
㈥ 急:Linux下因eth0无法连网
把ip设成自动获得就行了吧
vi /etc/sysconfig/network-scripts/ifcfg-eth0
把里面BOOTPROTO=static,改成BOOTPROTO=dhcp
㈦ linux虚拟机上无eth0怎么办
1、用ifconfig eth0 up命令开启下网卡。
#ifconfig eth0 up
2、更改eth0配置:
#vi/etc/sysconfig/network-scripts/ifcfg-eth0下显示:
DEVICE=eth0
ONBOOT=no //开机启动网卡
BOOTPROTO=static
IPADDR=192.168.1.8 //自己设置有效ip地址
NETMASK=255.255.255.0 //子网掩码
GATEWAY=192.168.1.1 //有效网关地址
HWADDR=00:0C:29:96:38:F8
注意其中的ONBOOT=no将其改为yes,网卡激活。
3、重启服务。
#service network restart
重启后配置生效。
㈧ 如何快速辨别网卡ID与物理网卡的对应关系(即eth
如何快速辨别网卡ID与物理网卡的对应关系
一般购买的服务器都有4个网卡,这个时候在安装好服务器后,配置IP的时候就郁闷了
如是一个浪潮8560M2服务器安装Redhat后的网卡显示:
[root@DBSERVER51 ~]# ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:E0:ED:2D:0F:58
inet addr:192.168.4.10 Bcast:192.168.4.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:40428 errors:0 dropped:0 overruns:0 frame:0
TX packets:392 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3413500 (3.2 MiB) TX bytes:44521 (43.4 KiB)
Memory:faee0000-faf00000
eth1 Link encap:Ethernet HWaddr 00:E0:ED:2D:0F:59
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Memory:fae60000-fae80000
eth2 Link encap:Ethernet HWaddr 00:25:90:5A:15:B6
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Memory:fafe0000-fb000000
eth3 Link encap:Ethernet HWaddr 00:25:90:5A:15:B7
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Memory:faf60000-faf80000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:10 errors:0 dropped:0 overruns:0 frame:0
TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:660 (660.0 b) TX bytes:660 (660.0 b)
从一个机房搬下来时,忘记标记了。这个时候还是想修改eth0作为通信口。但是一个一个插拔比较麻烦,于是就想能不能有个好办法,毕竟Linux不像Windows那样直观,打开网络连接就可以看到。这个时候就要用到ethtool这样一个命令,命令详解如下:
命令描述:
ethtool 是用于查询及设置网卡参数的命令。
ethX是以太网卡的名称,Linux系统将检测到的第一块以太网卡命名为eth0, 第二块为eth1,…….。
使用概要:
ethtool ethx //查询ethx网口基本设置,其中 x 是对应网卡的编号,如eth0、eth1等等
ethtool –h //显示ethtool的命令帮助(help)
ethtool –i ethX //查询ethX网口的相关信息
ethtool –d ethX //查询ethX网口注册性信息
ethtool –r ethX //重置ethX网口到自适应模式
ethtool –S ethX //查询ethX网口收发包统计
ethtool –s ethX [speed 10|100|1000] [plex half|full] [autoneg on|off] //设置网口速率10/100/1000M、设置网口半/全双工、设置网口是否自协商
ethtool [ -a | -c | -g | -i | -d | -k | -r | -S |] ethX
ethtool [-A] ethX [autoneg on|off] [rx on|off] [tx on|off]
ethtool [-C] ethX [adaptive-rx on|off] [adaptive-tx on|off] [rx-usecs N] [rx-frames N] [rx-usecs-irq N] [rx-frames-irq N] [tx-usecs N] [tx-frames N] [tx-usecs-irq N] [tx-frames-irq N] [stats-block-usecs N][pkt-rate-low N][rx-usecs-low N] [rx-frames-low N] [tx-usecs-low N] [tx-frames-lowN] [pkt-rate-high N] [rx-usecs-high N] [rx-frames-high N] [tx-usecs-high N] [tx-frames-high N] [sample-interval N]
ethtool [-G] ethX [rx N] [rx-mini N] [rx-jumbo N] [tx N]
ethtool [-e] ethX [raw on|off] [offset N] [length N]
ethtool [-E] ethX [magic N] [offset N] [value N]
ethtool [-K] ethX [rx on|off] [tx on|off] [sg on|off] [tso on|off]
ethtool [-p] ethX [N]
ethtool [-t] ethX [offline|online]
ethtool [-s] ethX [speed 10|100|1000] [plex half|full] [autoneg on|off] [port tp|aui|bnc|mii] [phyad N] [xcvr internal|external]
[wol p|u|m|b|a|g|s|d...] [sopass xx:yy:zz:aa:bb:cc] [msglvl N]
标志
-a 查看网卡中 接收模块RX、发送模块TX和Autonegotiate模块的状态:启动on 或 停用off
-A 修改网卡中 接收模块RX、发送模块TX和Autonegotiate模块的状态:启动on 或 停用off
-c display the Coalesce information of the specified ethernet card
-C Change the Coalesce setting of the specified ethernet card
-g Display the rx/tx ring parameter information of the specified ethernet card
-G change the rx/tx ring setting of the specified ethernet card
-i 显示网卡驱动的信息,如驱动的名称、版本等
-d 显示register mp信息, 部分网卡驱动不支持该选项
-e 显示EEPROM mp信息,部分网卡驱动不支持该选项
-E 修改网卡EEPROM byte
-k 显示网卡Offload参数的状态:on 或 off,包括rx-checksumming、tx-checksumming等。
-K 修改网卡Offload参数的状态
-p 用于区别不同ethX对应网卡的物理位置,常用的方法是使网卡port上的led不断的闪;N指示了网卡闪的持续时间,以秒为单位。
-r 如果auto-negotiation模块的状态为on,则restarts auto-negotiation
-S 显示NIC- and driver-specific 的统计参数,如网卡接收/发送的字节数、接收/发送的广播包个数等。
-t 让网卡执行自我检测,有两种模式:offline or online
-s 修改网卡的部分配置,包括网卡速度、单工/全双工模式、mac地址等
㈨ sniffer状态
sniffer是窃听的意思
应该就是窃听状态
sniffers(嗅探器)几乎和internet有一样久的历史了.Sniffer是一种常用的收集有用数据方法,这些数据可以是用户的帐号和密码,可以是一些商用机密数据等等。随着Internet及电子商务的日益普及,Internet的安全也越来越受到重视。在Internet安全隐患中扮演重要角色之一的Sniffer以受到越来越大的关注,所以今天我要向大家介绍一下介绍Sniffer以及如何阻止sniffer。
大多数的黑客仅仅为了探测内部网上的主机并取得控制权,只有那些"雄心勃勃"的黑客,为了控制整个网络才会安装特洛伊木马和后门程序,并清除记录。他们经常使用的手法是安装sniffer。
在内部网上,黑客要想迅速获得大量的账号(包括用户名和密码),最为有效的手段是使用 "sniffer" 程序。这种方法要求运行Sniffer 程序的主机和被监听的主机必须在同一个以太网段上,故而在外部主机上运行sniffer是没有效果的。再者,必须以root的身份使用sniffer 程序,才能够监听到以太网段上的数据流。谈到以太网sniffer,就必须谈到以太网sniffing。
那么什么是以太网sniffer呢?
以太网sniffing是指对以太网设备上传送的数据包进行侦听,发现感兴趣的包。如果发现符合条件的包,就把它存到一个log文件中
去。通常设置的这些条件是包含字"username"或"password"的包。它的目的是将网络层放到promiscuous模式,从而能干些事情。
Promiscuous模式是指网络上的所有设备都对总线上传送的数据进行侦听,并不仅仅是它们自己的数据。根据第二章中有关对以太网的工作原理的基本介绍,可以知道:一个设备要向某一目标发送数据时,它是对以太网进行广播的。一个连到以太网总线上的设备在任何时间里都在接受数据。不过只是将属于自己的数据传给该计算机上的应用程序。
利用这一点,可以将一台计算机的网络连接设置为接受所有以太
网总线上的数据,从而实现sniffer。
sniffer通常运行在路由器,或有路由器功能的主机上。这样就能对大量的数据进行监控。sniffer属第二层次的攻击。通常是攻击者已经进入了目标系统,然后使用sniffer这种攻击手段,以便得到更多的信息。
sniffer除了能得到口令或用户名外,还能得到更多的其他信息,比如一个其他重要的信息,在网上传送的金融信息等等。sniffer几乎能得到任何以太网上的传送的数据包。黑客会使用各种方法,获得系统的控制权并留下再次侵入的后门,以保证sniffer能够执行。在Solaris 2.x平台上,sniffer 程序通常被安装在/usr/bin 或/dev目录下。黑客还会巧妙的修改时间,使得sniffer程序看上去是和其它系统程序同时安装的。
大多数以太网sniffer程序在后台运行,将结果输出到某个记录文件中。黑客常常会修改ps程序,使得系统管理员很难发现运行的sniffer程序。
以太网sniffer程序将系统的网络接口设定为混合模式。这样,它就可以监听到所有流经同一以太网网段的数据包,不管它的接受者或发送者是不是运行sniffer的主机。 程序将用户名、密码和其它黑客感兴趣的数据存入log文件。黑客会等待一段时间 ----- 比如一周后,再回到这里下载记录文件。
讲了这么多,那么到底我们可以用什么通俗的话来介绍sniffer呢?
计算机网络与电话电路不同,计算机网络是共享通讯通道的。共享意味着计算机能够接收到发送给其它计算机的信息。捕获在网络中传输的数据信息就称为sniffing(窃听)。
以太网是现在应用最广泛的计算机连网方式。以太网协议是在同一回路向所有主机发送数据包信息。数据包头包含有目标主机的正确地址。一般情况下只有具有该地址的主机会接受这个数据包。如果一台主机能够接收所有数据包,而不理会数据包头内容,这种方式通常称为"混杂" 模式。
由于在一个普通的网络环境中,帐号和口令信息以明文方式在以太网中传输, 一旦入侵者获得其中一台主机的root权限,并将其置于混杂模式以窃听网络数据,从而有可能入侵网络中的所有计算机。
一句话,sniffer就是一个用来窃听的黑客手段和工具。
二、sniffer的工作原理
通常在同一个网段的所有网络接口都有访问在物理媒体上传输的所有数据的能力,而每个网络接口都还应该有一个硬件地址,该硬件地址不同于网络中存在的其他网络接口的硬件地址,同时,每个网络至少还要一个广播地址。(代表所有的接口地址),在正常情况下,一个合法的网络接口应该只响应这样的两种数据帧:
1、帧的目标区域具有和本地网络接口相匹配的硬件地址。
2、帧的目标区域具有"广播地址"。
在接受到上面两种情况的数据包时,nc通过cpu产生一个硬件中断,该中断能引起操作系统注意,然后将帧中所包含的数据传送给系统进一步处理。
而sniffer就是一种能将本地nc状态设成(promiscuous)状态的软件,当nc处于这种"混杂"方式时,该nc具备"广播地址",它对所有遭遇到的每一个帧都产生一个硬件中断以便提醒操作系统处理流经该物理媒体上的每一个报文包。(绝大多数的nc具备置成 promiscuous方式的能力)
可见,sniffer工作在网络环境中的底层,它会拦截所有的正在网络上传送的数据,并且通过相应的软件处理,可以实时分析这些数据的内容,进而分析所处的网络状态和整体布局。值得注意的是:sniffer是极其安静的,它是一种消极的安全攻击。
通常sniffer所要关心的内容可以分成这样几类:
1、口令
我想这是绝大多数非法使用sniffer的理由,sniffer可以记录到明文传送的userid和passwd.就算你在网络传送过程中使用了加密的数据,sniffer记录的数据一样有可能使入侵者在家里边吃肉串边想办法算出你的算法。
2、金融帐号
许多用户很放心在网上使用自己的信用卡或现金帐号,然而sniffer可以很轻松截获在网上传送的用户姓名、口令、信用卡号码、截止日期、帐号和pin.
3、偷窥机密或敏感的信息数据
通过拦截数据包,入侵者可以很方便记录别人之间敏感的信息传送,或者干脆拦截整个的email会话过程。
4、窥探低级的协议信息。
这是很可怕的事,我认为,通过对底层的信息协议记录,比如记录两台主机之间的网络接口地址、远程网络接口ip地址、ip路由信息和tcp连接的字节顺序号码等。这些信息由非法入侵的人掌握后将对网络安全构成极大的危害,通常有人用sniffer收集这些信息只有一个原因:他正在进行一次欺诈,(通常的ip地址欺诈就要求你准确插入tcp连接的字节顺序号,这将在以后整理的文章中指出)如果某人很关心这个问题,那么sniffer对他来说只是前奏,今后的问题要大得多。(对于高级的hacker而言,我想这是使用sniffer的唯一理由吧)
二.sniffer的工作环境
snifffer就是能够捕获网络报文的设备。嗅探器的正当用处在于分析网络的流量,以便找出所关心的网络中潜在的问题。例如,假设网络的某一段运行得不是很好,报文的发送比较慢,而我们又不知道问题出在什么地方,此时就可以用嗅探器来作出精确的问题判断。
嗅探器在功能和设计方面有很多不同。有些只能分析一种协议,而另一些可能能够分析几百种协议。一般情况下,大多数的嗅探器至少能够分析下面的协议:
1.标准以太网
2.TCP/IP
3.IPX
4.DECNet
嗅探器通常是软硬件的结合。专用的嗅探器价格非常昂贵。另一方面,免费的嗅探器虽然不需要花什么钱,但得不到什么支持。
嗅探器与一般的键盘捕获程序不同。键盘捕获程序捕获在终端上输入的键值,而嗅探器则捕获真实的网络报文。嗅探器通过将其置身于网络接口来达到这个目的——例如将以太网卡设置成杂收模式。(为了理解杂收模式是怎么回事,先解释局域网是怎么工作的)。
数据在网络上是以很小的称为帧(Ftame)的单位传输的帧由好几部分组成,不同的部分执行不同的功能。(例如,以太网的前12个字节存放的是源和目的的地址,这些位告诉网络:数据的来源和去处。以太网帧的其他部分存放实际的用户数据、TCP/IP的报文头或IPX报文头等等)。
帧通过特定的称为网络驱动程序的软件进行成型,然后通过网卡发送到网线上。通过网线到达它们的目的机器,在目的机器的一端执行相反的过程。接收端机器的以太网卡捕获到这些帧,并告诉操作系统帧的到达,然后对其进行存储。就是在这个传输和接收的过程中,嗅探器会造成安全方面的问题。
每一个在LAN上的工作站都有其硬件地址。这些地址唯一地表示着网络上的机器(这一点于Internet地址系统比较相似)。当用户发送一个报文时,这些报文就会发送到LAN上所有可用的机器。
在一般情况下,网络上所有的机器都可以“听”到通过的流量,但对不属于自己的报文则不予响应(换句话说,工作站A不会捕获属于工作站B的数据,而是简单的忽略这些数据)。
如果某在工作站的网络接口处于杂收模式,那么它就可以捕获网络上所有的报文和帧,如果一个工作站被配置成这样的方式,它(包括其软件)就是一个嗅探器。
嗅探器可能造成的危害:
1.嗅探器能够捕获口令
2.能够捕获专用的或者机密的信息
3.可以用来危害网络邻居的安全,或者用来获取更高级别的访问权限
事实上,如果你在网络上存在非授权的嗅探器就以为着你的系统已经暴露在别人面前了。(大家可以试试天行2的嗅探功能)
一般我们只嗅探每个报文的前200到300个字节。用户名和口令都包含在这一部分中,这是我们关心的真正部分。工人,也可以嗅探给定接口上的所有报文,如果有足够的空间进行存储,有足够的那里进行处理的话,将会发现另一些非常有趣的东西……
简单的放置一个嗅探器宾将其放到随便什么地方将不会起到什么作用。将嗅探器放置于被攻击机器或网络附近,这样将捕获到很多口令,还有一个比较好的方法就是放在网关上。如果这样的话就能捕获网络和其他网络进行身份鉴别的过程。这样的方式将成倍地增加我们能够攻击的范围。
三.谁会使用sniffers
可能谁都回知道谁会使用sniffer,但是并不是每个使用它的人都是网络高手,因为现在有很多的sniffer都成了傻瓜似的了,前段时间用的最多的不外乎oicq sniffer。我想那些喜欢查好友ip的朋友都应该记得它吧。呵呵,我都使用过它,现在当然不用了啊!
当然系统管理员使用sniffer来分析网络信息交通并且找出网络上何处发生问题。一个安全管理员可以同时用多种sniffer, 将它们放置在网络的各处,形成一个入侵警报系统。对于系统管理员来说sniffer是一个非常好的工具,但是它同样是一个经常被黑客使用的工具.骇客安装sniffer以获得用户名和账号,信用卡号码,个人信息,和其他的信息可以导致对你或是你的公司的极大危害如果向坏的方面发展。当它们得到这些信息后,骇客将使用密码来进攻其他的internet 站点甚至倒卖信用卡号码。
三.sniffer是如何在网络上实施的
谈这个问题之前还应该先说一下Ethernet的通讯。通常在同一个网段的所有网络接口都有访问在媒体上传输的所有数据的能力,而每个网络接口都还应该有一个硬件地址,该硬件地址不同于网络中存在的其它网络接口的硬件地址,同时,每个网络至少还要一个广播地址。在正常情况下,一个合法的网络接口应该只响应这样的两种数据帧:
1�帧的目标区域具有和本地网络接口相匹配的硬件地址。
2�帧的目标区域具有“广播地址”。
在接受到上面两种情况的数据包时,网卡通过cpu产生一个硬件中断。该中断能引起操作系统注意,然后将帧中所包含的数据传送给系统进一步处理。而sniffer就是一种能将本地网卡状态设成杂乱模式(promiscuous Mode)的软件。当网卡处于杂乱模式时,该网卡具备“广播地址”,它对所有遇到的每一个帧都产生一个硬件中断以提醒操作系统处理每一个报文包。(绝大多数的网卡具备设置成杂乱模式的能力。
可见,sniffer工作在网络环境中的底层,它会拦截所有的正在网络上传送的数据。通过相应的软件处理,可以实时分析这些数据的内容,进而分析所处的网络状态和整体布局。值得注意的是:sniffer是极其安静的,它是一种消极的安全攻击。
四.哪里可以得到sniffer
我们讲的sniffer,主要是在unix系统下运用的,至于那些oicq sniffer就不在我们讨论的范围。
Sniffer是黑客们最常用的入侵手段之一。你可以在经过允许的网络中运行sniffer,了解它是如何有效地危及本地机器安全。
Sniffer可以是硬件,也可以是软件。现在品种最多,应用最广的是软件Sniffer,绝大多数黑客们用的也是软件Sniffer。
以下是一些也被广泛用于调试网络故障的sniffer工具:
(一).商用sniffer:
1. Network General.
Network General开发了多种产品。最重要的是Expert Sniffer,它不仅仅可以sniff,还能够通过高性能的专门系统发送/接收数据包,帮助诊断故障。还有一个增强产品"Distrbuted Sniffer System"可以将UNIX工作站作为sniffer控制台,而将sniffer agents(代理)分布到远程主机上。
2. Microsoft's Net Monitor
对于某些商业站点,可能同时需要运行多种协议--NetBEUI、IPX/SPX、TCP/IP、802.3和SNA等。这时很难找到一种sniffer帮助解决网络问题,因为许多sniffer往往将某些正确的协议数据包当成了错误数据包。Microsoft的Net Monitor(以前叫Bloodhound)可以解决这个难题。它能够正确区分诸如Netware控制数据包、NT NetBios名字服务广播等独特的数据包。(etherfind只会将这些数据包标识为类型0000的广播数据包。)这个工具运行在MS Windows 平台上。它甚至能够按MAC地址(或主机名)进行网络统计和会话信息监视。只需简单地单击某个会话即可获得tcpmp标准的输出。过滤器设置也是最为简单的,只要在一个对话框中单击需要监视的主机即可。
(二).免费软件sniffer
1. Sniffit由Lawrence Berkeley 实验室开发,运行于Solaris、SGI和Linux等平台。可以选择源、目标地址或地址集合,还可以选择监听的端口、协议和网络接口等。这个SNIFFER默认状态下只接受最先的400个字节的信息包,这对于一次登陆会话进程刚刚好。
2. SNORT:这个SNIFFER有很多选项供你使用并可移植性强,可以记录一些连接信息,用来跟踪一些网络活动。
3. TCPDUMP:这个SNIFFER很有名,linux,FREEBSD还搭带在系统上,是一个被很多UNIX高手认为是一个专业的网络管理工具,记得以前TsutomuShimomura(应该叫下村侵吧)就是使用他自己修改过的TCPDUMP版本来记录了KEVINMITNICK攻击他系统的记录,后来就配合FBI抓住了KEVINMITNICK,后来他写了一文:使用这些LOG记录描述了那次的攻击,
( http://www.attrition.org/security/newbie/security/sniffer/shimomur.txt )
4. ADMsniff:这是非常有名的ADM黑客集团写的一个SNIFFER程序。
5. linsniffer:这是一个专门设计杂一LINUX平台上的SNIFFER。
6. Esniffer:这个也是一个比较有名的SNIFFER程序。
7. Solsniffer:这是个Solarissniffer,主要是修改了SunSniff专门用来可以方便的在Solair平台上编译。
8. Ethereal是一基于GTK+的一个图形化Sniffer
9. Gobbler(for MS-DOS&Win95)、Netman、NitWit、Ethload...等等。
(三).UNIX下的sniffer
UNIX下的sniffer,我比较倾向于snoop.Snoop是按Solaris的标准制作的,虽然Snoop不像是Sniffer Pro那样好,但是它是一个可定制性非常强的sniffer,在加上它是免费的(和Solaris附一起).谁能打败它的地位?你可以在极短时间内抓获一个信息包或是更加深的分析.如果你想学习如何使用snoop,看下面的url:
http://www.enteract.com/~lspitz/snoop.html
(四).Linux下的sniffer工具
Linux下的sniffer工具,我推荐Tcpmp。
[1].tcpmp的安装
在linux下tcpmp的安装十分简单,一般由两种安装方式。一种是以rpm包的形式来进行安装。另外一种是以源程序的形式安装。
1. rpm包的形式安装
这种形式的安装是最简单的安装方法,rpm包是将软件编译后打包成二进制的格式,通过rpm命令可以直接安装,不需要修改任何东西。以超级用户登录,使用命令如下:
#rpm -ivh tcpmp-3_4a5.rpm
这样tcpmp就顺利地安装到你的linux系统中。怎么样,很简单吧。
2. 源程序的安装
既然rpm包的安装很简单,为什么还要采用比较复杂的源程序安装呢?其实,linux一个最大的诱人之处就是在她上面有很多软件是提供源程序的,人们可以修改源程序来满足自己的特殊的需要。所以我特别建议朋友们都采取这种源程序的安装方法。
· 第一步 取得源程序 在源程序的安装方式中,我们首先要取得tcpmp的源程序分发包,这种分发包有两种 形式,一种是tar压缩包(tcpmp-3_4a5.tar.Z),另一种是rpm的分发包(tcpmp-3_4a5.src.rpm)。这两种 形式的内容都是一样的,不同的仅仅是压缩的方式.tar的压缩包可以使用如下命令解开:
#tar xvfz tcpmp-3_4a5.tar.Z
rpm的包可以使用如下命令安装:
#rpm -ivh tcpmp-3_4a5.src.rpm
这样就把tcpmp的源代码解压到/usr/src/redhat/SOURCES目录下.
· 第二步 做好编译源程序前的准备活动
在编译源程序之前,最好已经确定库文件libpcap已经安装完毕,这个库文件是tcpmp软件所需的库文件。同样,你同时还要有一个标准的c语言编译器。在linux下标准的c 语言编译器一般是gcc。 在tcpmp的源程序目录中。有一个文件是Makefile.in,configure命令就是从Makefile.in文件中自动产生Makefile文件。在Makefile.in文件中,可以根据系统的配置来修改BINDEST 和 MANDEST 这两个宏定义,缺省值是
BINDEST = @sbindir @
MANDEST = @mandir @
第一个宏值表明安装tcpmp的二进制文件的路径名,第二个表明tcpmp的man 帮助页的路径名,你可以修改它们来满足系统的需求。
· 第三步 编译源程序
使用源程序目录中的configure脚本,它从系统中读出各种所需的属性。并且根据Makefile.in文件自动生成Makefile文件,以便编译使用.make 命令则根据Makefile文件中的规则编译tcpmp的源程序。使用make install命令安装编译好的tcpmp的二进制文件。
总结一下就是:
# tar xvfz tcpmp-3_4a5.tar.Z
# vi Makefile.in
# . /configure
# make
# make install
[2].Tcpmp的使用
tcpmp采用命令行方式,它的命令格式为:
tcpmp [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ]
[ -i 网络接口 ] [ -r 文件名] [ -s snaplen ]
[ -T 类型 ] [ -w 文件名 ] [表达式 ]
1. tcpmp的选项介绍
-a 将网络地址和广播地址转变成名字;
-d 将匹配信息包的代码以人们能够理解的汇编格式给出;
-dd 将匹配信息包的代码以c语言程序段的格式给出;
-ddd 将匹配信息包的代码以十进制的形式给出;
-e 在输出行打印出数据链路层的头部信息;
-f 将外部的Internet地址以数字的形式打印出来;
-l 使标准输出变为缓冲行形式;
-n 不把网络地址转换成名字;
-t 在输出的每一行不打印时间戳;
-v 输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;
-vv 输出详细的报文信息;
-c 在收到指定的包的数目后,tcpmp就会停止;
-F 从指定的文件中读取表达式,忽略其它的表达式;
-i 指定监听的网络接口;
-r 从指定的文件中读取包(这些包一般通过-w选项产生);
-w 直接将包写入文件中,并不分析和打印出来;
-T 将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程 调用)和snmp(简单网络管理协议;)
2. 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和ether具有类似的源地址和目的地址,所以可以将fddi协议包当作ether的包进行处理和分析。其他的几个关键字就是指明了监听的包的协议内容。如果没有指定任何协议,则tcpmp将会监听所有协议的信息包。
除了这三种类型的关键字之外,其他重要的关键字如下:gateway, broadcast,less,greater,还有三种逻辑运算,取非运算是 'not ' '! ', 与运算是'and','&&';或运算 是'or' ,'';
这些关键字可以组合起来构成强大的组合条件来满足人们的需要,下面举几个例子来说明。
(1)想要截获所有210.27.48.1 的主机收到的和发出的所有的数据包:
#tcpmp host 210.27.48.1
(2) 想要截获主机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 \)
(3) 如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令:
#tcpmp ip host 210.27.48.1 and ! 210.27.48.2
(4)如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命令:
#tcpmp tcp port 23 host 210.27.48.1
3. tcpmp 的输出结果介绍
下面我们介绍几种典型的tcpmp命令的输出信息
(1) 数据链路层头信息
使用命令#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.telne
t 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.
(2) 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地址。
(3) TCP包的输出信息
用TCPDUMP捕获的TCP包的一般输出信息是:
src > dst: flags data-seqno ack window urgent options
src > dst:表明从源地址到目的地址, flags是TCP包中的标志信息,S 是SYN标志, F (FIN), P (PUSH) , R (RST) "." (没有标记); data-seqno是数据包中的数据的顺序号, ack是下次期望的顺序号, window是接收缓存的窗口大小, urgent表明数据包中是否有紧急指针. Options是选项.
(4) UDP包的输出信息
用TCPDUMP捕获的UDP包的一般输出信息是:
route.port1 > ice.port2: udp lenth
UDP十分简单,上面的输出行表明从主机ROUTE的port1端口发出的一个UDP数据包到主机ICE的port2端口,类型是UDP, 包的长度是lenth上面,我就详细介绍了TCPDUMP的安装和使用,希望会对大家有所帮助。如果想要熟练运用TCPDUMP这个LINUX环境下的SNIFFER利器,还需要大家在实践中总结经验,充分发挥它的威力。
(五).windows平台上的sniffer
我推荐netxray和sniffer pro软件,想必大家都用过他们,不过我在这儿还要再简单介绍一下他们。
netxray的使用说明
1.1.1.1----2.2.2.2----3.3.3.3----4.4.4.4 这是一个ShareHub连接下的局域网
5.5.5.5 这是一个8080端口上的http/ftp proxy
Internet
启动Capture,
㈩ eth0/0/1什么意思
eth0/0/1的意思是eth0号网卡0号板卡的1号端口。eth指的是以太网,0/0指的是0号板卡的0号端口。
在路由器交换机等设备中,会有很多的接口和把卡的情况,为了应对这种情况,设计人员对网卡板卡进行了划分,比如eth1/2/3,表示eth1号网卡的的2号板卡,3号端口。由于计算机所用与0开始,交换的编号也采用的这种设计,所以0是放在第一位的。

(10)eth0中无id号扩展阅读:
经典以太网:
1、物理层
以太网的每个版本都有电缆的最大长度限制,这个范围内的信号可以正常传播,超过这个范围信号将无法传播。为了允许建设更大的网络,可以用中继器把多条电缆连接起来。中继器是一个物理层设备,能接收、放大并在两个方向上重发信号。
2、MAC子层
经典以太网使用1-坚持CSMA/CD算法,即当站有帧要发送时要侦听介质,一旦介质变为空闲便立即发送。在它们发送的同时监测信道上是否有冲突。如果有冲突,则立即终止传输,并发出一个短冲突加强信号,再等待一段随机时间后重发。
