Linux性能优化(六)——网络配置工具

一、ifconfig

1、ifconfig简介

ifconfig可以简单地获取网络接口配置信息,还可以修改配置。用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。

2、ifconfig命令

ifconfig [-v] [-a] [-s] [interface]
ifconfig [-v] interface [aftype] options | address

up:启动指定网络设备/网卡。
down:关闭指定网络设备/网卡。该参数可以有效地阻止通过指定接口的IP信息流,如果想永久地关闭一个接口,我们还需要从核心路由表中将该接口的路由信息全部删除。
arp:设置指定网卡是否支持ARP协议。
-promisc:设置是否支持网卡的promiscuous模式,如果选择此参数,网卡将接收网络中发给它所有的数据包
-allmulti:设置是否支持多播模式,如果选择此参数,网卡将接收网络中所有的多播数据包
-a:显示全部接口信息
-s:显示摘要信息(类似于 netstat -i)
add:给指定网卡配置IPv6地址
del:删除指定网卡的IPv6地址
mtu n:设置网卡的最大传输单元 (bytes)
netmask xxx:设置网卡的子网掩码。掩码可以是有前缀0x的32位十六进制数,也可以是用点分开的4个十进制数。如果不打算将网络分成子网,可以不管这一选项;如果要使用子网,那么请记住,网络中每一个系统必须有相同子网掩码。
tunel :建立隧道
dstaddr :设定一个远端地址,建立点对点通信
-broadcast地址:为指定网卡设置广播协议
-pointtopoint地址:为网卡设置点对点通讯协议
multicast :为网卡设置组播标志
address :为网卡设置IPv4地址
txqueuelen长度 :为网卡设置传输列队的长度

3、ifconfig常用命令

ifconfig
显示激活网卡信息
ifconfig -a
显示所有网卡信息
ifconfig eth0 192.168.1.100
配置网卡eth0的IP地址
ifconfig eth0 192.168.1.100 netmask 255.255.255.0
配置网卡eth0的IP地址和子网掩码

ifconfig eth0:0 192.168.1.100 netmask 255.255.255.0 up
ifconfig eth0:1 192.168.2.100 netmask 255.255.255.0 up

为网卡eth0增加多个IP地址
ifconfig eth0 del 192.168.1.100
删除网卡eth0的IP地址
ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE
修改网卡eth的MAC地址
ifconfig eth0 up       
启动网卡eth0
ifconfig eth0 down     
关闭网卡eth
ifconfig eth0 reload   
重启网卡eth0
ifconfig eth0 arp
启用ARP
ifconfig eth0 -arp
禁用ARP
ifconfig eth0 mtu 1500
设置eth网卡的MTU值
ifconfig eth0 allmulti
启用网卡eth0的组播功能
ifconfig eth0 -allmulti
禁用网卡eth0的组播功能

二、ethtool

1、ethtool简介

ethtool是Linux的网络驱动程序的诊断和调整工具,可获取网络设备的相关信息,包括连接状态、驱动版本、PCI 总线定位等,功能如下:
(1)获取标识和诊断信息
(2)获取扩展的设备统计信息
(3)控制以太网设备的速度、双工、自动协商和流控制
(4)控制校验和卸载及其他硬件卸载功能
(5)控制DMA环大小及中断控制
(6)控制多队列设备的接收队列选择
(7)升级闪存中的固件
ethtool执行需要root权限。

2、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和自动协商模块的状态:on或off。
-A:修改网卡中接收模块RX、发送模块TX和自动协商模块的状态:on或off。
-c:查看网卡聚合信息
-C:设置网卡聚合信息
-g:查看网卡的RX/TX环参数信息
-G:修改网卡的RX/TX环设置
-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:如果自动协商模块状态为on,重启自动协商模块。
-S:显示NIC- and driver-specific 的统计参数,如网卡接收/发送的字节数、接收/发送的广播包个数等。
-t:让网卡执行自我检测,有两种模式:offline or online。
-s:修改网卡的部分配置,包括网卡速度、单工/全双工模式、mac地址等。

3、offload选项

rx-checksumming: off|on      
接收侧硬件校验和计算,如果能设置为on,表示网卡支持。
tx-checksumming: off|on      
发送侧硬件校验和计算,如果能设置为on,表示网卡支持
scatter-gather: off|on          
Scatter Gather功能是网卡要支持TSO的必要条件之一。
tcp-segmentation-offload: off|on 
TSO是一种利用网卡对TCP数据包分片,减轻CPU负荷的一种技术,也称LSO (Large segment offload),TSO针对TCP,UFO针对UDP。如果硬件支持TSO功能,同时也需要硬件支持TCP校验计算和Scatter Gather功能。
在不支持TSO的网卡上,TCP层向IP层发送数据会考虑mss,使得TCP向下发送的数据可以包含在一个IP分组中而不会造成分片, mss是在TCP初始建立连接时由网卡MTU确定并和对端协商的,所以在一个MTU=1500的网卡上,TCP向下发送的数据不会大于min(mss_local, mss_remote)-ip头-tcp头。
网卡支持TSO时,TCP层会逐渐增大mss(总是整数倍数增加),当TCP层向下发送大块数据时,仅仅计算TCP头,网卡接到IP层传下的大数据包后自己重新分成若干个IP数据包,添加IP头,复制TCP头并且重新计算校验和等相关数据,把一部分CPU相关处理工作转移到网卡来处理。
udp-fragmentation-offload: off|on
UFO是网卡对UDP提供的类似TSO的技术。
generic-segmentation-offload: on
GSO尽可能的推迟数据分片直至发送到网卡驱动前,此时会检查网卡是否支持分片功能(如TSO、UFO), 如果支持直接发送到网卡,如果不支持就进行分片后再发往网卡。这样大数据包只需走一次协议栈,而不是被分割成几个数据包分别走,这就提高了效率。命令: ethtool -K eth0 gso on | off
large-receive-offload: off
LRO通过将接收到的多个TCP数据聚合成一个大的数据包,然后传递给网络协议栈处理,以减少上层协议栈处理 开销,提高系统接收TCP数据包的能力。
generic-receive-offload: on
GRO,基本思想跟LRO类似,克服了LRO的一些缺点,更通用。后续的驱动都使用GRO的接口,而不是LRO。

4、ethtool常用命令

ethtool ethX      
查询ethX网口基本设置
ethtool –i ethX   
查询ethX网口的相关信息 
ethtool –d ethX   
查询ethX网口注册性信息
ethtool –r ethX   
重置ethX网口到自适应模式
ethtool –S ethX   
查询ethX网口收发包统计
ethtool –s ethX [speed 10|100|1000] [duplex half|full] [autoneg on|off] [port tp|aui|bnc|mii]
设置网口速率10/100/1000M、网口半/全双工、网口是否自协商、网口类型
ethtool -K eth0 tso on | off
设置TSO特性

三、ip

1、ip简介

ip是iproute2软件包的一个强大的网络配置工具,用来显示或操作路由、网络设备、策略路由和隧道。

2、ip命令

ip [OPTIONS] OBJECT COMMAND | help
(1)OBJECT子命令
link:网络设备
address:协议(IP或IPv6)地址
addrlabel:协议地址选择的标签配置
neighbour:ARP或NDISC缓存条目
route:路由表条目
rule:路由策略数据库中的规则
maddress:组播地址
mroute:组播路由缓存条目
tunnel:IP隧道
xfrm:IPSec协议框架
(2)OPTIONS
-V,-Version:显示指令版本信息
-s,-stats,statistics:输出详细信息
-h,-human,-human-readable:输出可读统计信息和后缀
-iec:以IEC标准单位打印人类可读速率(例如1K=1024)
-f,-family FAMILY:指定协议族,inet、inet6、ipx、dnet、link。
-4:使用IPv4协议
-6:使用IPv6协议
-0:link
-o,-oneline:将每条记录输出到一行,用’\’字符替换换行符。
-r,-resolve:使用系统名称解析程序来打印DNS名称而不是主机地址。

3、ip常用命令

ip link show
显示网络接口信息
ip link set eth0 up
开启网卡
ip link set eth0 down
关闭网卡
ip link set eth0 promisc on
开启网卡的混合模式
ip link set eth0 promisc off
关闭网卡的混合模式
ip link set eth0 txqueuelen 1200
设置网卡队列长度
ip link set eth0 mtu 1400
设置网卡最大传输单元
ip addr show
显示网卡IP信息
ip addr add 192.168.0.1/24 dev eth0
设置eth0网卡IP地址192.168.0.1
ip addr del 192.168.0.1/24 dev eth0
删除eth0网卡IP地址
ip route show
显示系统路由
ip route add default via 192.168.1.254
设置系统默认路由
ip route list
查看路由信息
ip route add 192.168.4.0/24 via 192.168.0.254 dev eth0 设置192.168.4.0网段的网关为192.168.0.254,数据走eth0接口
ip route add default via 192.168.0.254 dev eth0
设置默认网关为192.168.0.254
ip route del 192.168.4.0/24
删除192.168.4.0网段的网关
ip route del default
删除默认路由
ip route delete 192.168.1.0/24 dev eth0
删除路由

四、iptables

1、iptables简介

iptables是Unix、Linux系统自带的优秀且完全免费的基于包过滤的防火墙工具,功能十分强大、使用非常灵活、可以对流入、流出及流经服务器的数据包进行精细的控制。
iptables是linux2.4及2.6内核中集成的服务,工作在OSI模型的、二、三层、四层。

2、iptables传输数据包

(1) 当一个数据包进入网卡时,首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转发。 
(2)如果数据包是进入本机的,会到达INPUT链。数据包到INPUT链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出。 
(3)如果数据包需要转发,且内核允许转发,数据包会经过FORWARD链,然后到达POSTROUTING链输出。
Linux性能优化(六)——网络配置工具

3、iptables规则表

iptables内置filter表、nat表、mangle表和raw表,分别用于实现包过滤、网络地址转换、包重构(修改)和数据跟踪处理。
链是数据包传播的路径,每一条链是众多规则中的一个检查清单,每一条链中可以有数条规则。当一个数据包到达一条链时,iptables就会从链中第一条规则开始检查,查看数据包是否满足规则所定义的条件。如果满足,会根据规则所定义的方法处理数据包;否则iptables将继续检查下一条规则,如果数据包不符合链中任一条规则,iptables就会根据链预先定义的默认策略来处理数据包。
Linux性能优化(六)——网络配置工具

4、iptables规则链

INPUT:进入防火墙的数据包应用INPUT规则链中的策略
OUTPUT:外出的数据包应用OUTPUT规则链中的策略
FORWARD:转发数据包时应用FORWARD规则链中的策略
PREROUTING:对数据包作路由选择前应用PREROUTING链中的规则
POSTROUTING:对数据包作路由选择后应用POSTROUTING链中的规则

5、iptables命令

iptables [-t table] {-A|-C|-D} chain rule-specification
ip6tables [-t table] {-A|-C|-D} chain rule-specification
iptables [-t table] -I chain [rulenum] rule-specification
iptables [-t table] -R chain rulenum rule-specification
iptables [-t table] -D chain rulenum
iptables [-t table] -S [chain [rulenum]]
iptables [-t table] {-F|-L|-Z} [chain [rulenum]] [options...]
iptables [-t table] -N chain
iptables [-t table] -X [chain]
iptables [-t table] -P chain target
iptables [-t table] -E old-chain-name new-chain-name

-h:获取帮助(help)
-A:在指定链的末尾添加一条新规则
-D:删除(delete)指定链中的某一条规则,可以按规则序号和内容删除
-I:在指定链中插入(insert)一条新规则,默认在第一行添加
-R:修改、替换(replace)指定链中的某一条规则,可以按规则序号和内容替换
-L:列出(list)指定链中所有的规则进行查看
-E:重命名用户定义的链,不改变链本身
-F:清空(flush)
-N:新建一条用户自己定义的规则链
-X:删除指定表中用户自定义的规则链
-P:设置指定链的默认策略(policy)
-Z:将所有表的所有链的字节和数据包计数器清零
-n:使用数字形式(numeric)显示输出结果
-v:查看规则表详细信息(verbose)的信息
-V:查看版本(version)

6、ipatbles常用命令

iptables -D INPUT 1
删除规则链第一条规则
iptables -I INPUT -p icmp -j REJECT
拒绝进入防火墙的ICMP协议数据包
iptables -A FORWARD -p ! icmp -j ACCEPT
允许防火墙转发除ICMP协议外的所有网络数据包
iptables -A FORWARD -s 192.168.1.11 -j REJECT 
拒绝转发来自192.168.1.11主机的数据包
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
转发来自192.168.0.0/24网段的数据包

iptables -A INPUT -i eth1 -s 192.168.0.0/16 -j DROP 
iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP 
iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP

丢弃从eth1网卡进入防火墙的源IP地址为私有地址的数据包

iptables -A INPUT -p tcp --dport 22 -s 202.13.0.0/16 -j ACCEPT 
iptables -A INPUT -p tcp --dport 22 -j DROP

允许从202.13.0.0/16网段使用SSH登录主机

iptables -A INPUT -p tcp --dport 20:1024 -j ACCEPT 
iptables -A OUTPUT -p tcp --sport 20:1024 -j ACCEPT

允许开放TCP端口20-1024提供的应用服务

iptables -I INPUT -p icmp --icmp-type Echo-Request -j DROP 
iptables -I INPUT -p icmp --icmp-type Echo-Reply -j ACCEPT 
iptables -I INPUT -p icmp --icmp-type destination-Unreachable -j ACCEPT

禁止从其它主机ping防火墙主机,允许防火墙主机ping其它主机
service iptables save
保存防火墙配置到/etc/sysconfig/iptables
iptables –F
清除filter表的所有规则链
iptables –X
删除filter表中用户自定义链

猜你喜欢

转载自blog.51cto.com/9291927/2594095