分类目录归档:network

cisco dhcp snoop and arp inspect

最近在调整网络设置,因此重温了下DHCP SNOOP 和ARP INSPECT 的原理和设置

一 DHCP SNOOPING

简单来说,dhcp snooping通过能过滤非法的dhcp信息,并维护着一个mac-ip的数据库

1.启用dhcp snooping

(config)#ip dhcp snooping  (启用)

(config)#ip dhcp snooping vlan 4,8,16( 你要监视的vlan)

(config)#ip dhcp snooping database flash:dhcp.db (维护的那个DB,这里是放在闪存里边)

(config-if)#ip dhcp snooping trust  (对上联端口或者DHCP服务器端口启用trust)

默认状态下,所有的非trust端口都无法响应DHCP请求,因此:非法的DHCP Server就给block掉了

二 ARP INSPECT

启用了dhcp snooping之后就建立了mac-ip的对应表,因此能在此基础上开启arp inspection,屏蔽非法的mac-ip通信请求

(config)#ip arp inspection vlan 4,8,16
(config)#ip arp inspection validate src-mac ip
(config-if)#ip arp inspection trust  (对上联端口或者静态IP端口启用trust)

启用以上设置后,所有非trust端口的数据包都需要跟数据库中的mac-ip(flash:dhcp.db)校验,这里只校验了源mac和ip,对目标mac-ip不做校验(为什么?因为目标如果在其他交换机,这里的dhcp.db是没有记录的)

三 注意点

需要特别指出:dhcp snooping的数据库有个learning的过程,这个对应着dhcp请求的ack应答报文

如果在客户端已经获取IP后再启用arp inspection,会导致该客户端因没有mac-ip的对应而给屏蔽!

ddos 与 黑洞路由

通常遇到ddos或者其他攻击,简单想到的办法是iptable,比如

iptable -A INPUT -s IP -j DROP

实际上,超大规模的攻击使用iptable过滤会非常耗CPU,一般建议使用黑洞路由

从这个网址: http://www.cyberciti.biz/tips/how-do-i-drop-or-block-attackers-ip-with-null-routes.html 可以看到

假设需要屏蔽掉202.33.8.49,有三种不同做法:

1. # route add 202.33.8.49 gw 127.0.0.1 lo

2.#ip route add blackhole 202.33.8.49

3.#route add -host 202.33.8.49 reject

当然,文中没有解释这三种做法的区别与优劣,这里简单说说个人看法

第一种,是把这个ip的路由导向lo 127.0.0.1,其实是相当犯傻的行为,系统会自动的尝试往lo发送数据(tcpdump可见)

第二种,是加入黑洞路由,意思就是直接就丢弃了,当然也不会有对应的应用层程序收到数据包尝试回包了

第三种,先看看man里边怎么说: “reject install a blocking route, which will force a route lookup to fail.  This is for example used to mask out networks before using the default route.  This is NOT for firewalling.”  reject是阻止了”到”这个IP的网络,通常用于在使用默认路由前标识网络,不适用于防火墙,为什么呢?因为应用层程序能收到数据包,只不过尝试回包时会知道网络不可达而已

由此可见,从性能来说使用blackhole是最好的办法

参考:http://en.wikipedia.org/wiki/Null_route

思科交换机查看状态

#sh ip interface brief
Interface IP-Address OK? Method Status Protocol
FastEthernet0/1 unassigned YES unset down down
FastEthernet0/2 unassigned YES unset up up
能看到端口状态,主要是链路状态

#sh interfaces status
Port Name Status Vlan Duplex Speed Type
Fa0/1 “Connect to Cicso notconnect 8 auto auto 10/100BaseTX
Fa0/2 “Connect to Cicso connected 8 a-full a-100 10/100BaseTX
侧重于vlan和描述性的东西,这里能看到链接速度

iphone QQ 端口

今天有个颇蛋疼的需求,iphoneQQ 在公司不是很正常,初步怀疑是端口没开放导致的
1.查看手机的IP,在cisco 6506上建立策略路由
1)建立ACL
access-list extended 188
permit ip host $iphoneIP$ any

2)建立策略路由

route-map src-route permit 20(原来有这个策略路由,新增个规则)
match ip address 188
set ip next-hop $linuxNAT$

3)在手机的VLAN接口生效

ip policy route-map src-route

2. 在linux设置NAT转发请求:

/sbin/iptables -t nat -A POSTROUTING -s $iphoneIP$/32 -o eth0 -j MASQUERADE
sysctl -w net.ipv4.ip_forward=1

3.在linux NAT机器上听包:

tcpdump -nn host $iphoneIP$

抓到了,iphoneQQ访问的是14000端口

双网卡bond 配置

最近公司的服务器配置做了更改,LVS+双公网策略路由出了问题,所以干脆改成bonding来做

bonding的各种模式:

按照卢瑟同学的介绍,bonding有7种模式:

Mode=0(balance-rr) 表示负载分担round-robin,和交换机的聚合强制不协商的方式配合。
Mode=1(active-backup) 表示主备模式,只有一块网卡是active,另外一块是备的standby
这时如果交换机配的是捆绑,将不能正常工作,因为交换机往两块网卡发包,有一半包是丢弃的。
Mode=2(balance-xor) 表示XOR Hash负载分担,和交换机的聚合强制不协商方式配合。(需要xmit_hash_policy)
Mode=3(broadcast) 表示所有包从所有interface发出,这个不均衡,只有冗余机制...和交换机的聚合强制不协商方式配合。
Mode=4(802.3ad) 表示支持802.3ad协议,和交换机的聚合LACP方式配合(需要xmit_hash_policy)
Mode=5(balance-tlb) 是根据每个slave的负载情况选择slave进行发送,接收时使用当前轮到的slave
Mode=6(balance-alb) 在5的tlb基础上增加了rlb。
5和6不需要交换机端的设置,网卡能自动聚合。4需要支持802.3ad。0,2和3理论上需要静态聚合方式
但实测中0可以通过mac地址欺骗的方式在交换机不设置的情况下不太均衡地进行接收。

决定使用最简单的模式6来做

bonding的配置

modprobe.conf

在这个文件加入

alias bond0 bonding
options bond0 miimon=100 mode=5

网卡配置文件修改

ifcfg-eth1

DEVICE=eth1
USERCTL=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes
BOOTPROTO=none

ifcfg-eth2

DEVICE=eth2
USERCTL=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes
BOOTPROTO=none

ifcfg-bond0

DEVICE=bond0
IPADDR="Your IP Adress"
NETMASK="Your NetMask"
ONBOOT=yes
BOOTPROTO=none
USERCTL=no

变更修改

/etc/init.d/network stop;modprobe -r bonding;/etc/init.d/network start

附录:转发方式

layer2 (1): (source MAC XOR destination MAC) modulo slave count
layer2+3 (2): (((source IP XOR dest IP) AND 0xffff) XOR ( source MAC XOR destination MAC )) modulo slave count
layer3+4 (3): ((source port XOR dest port) XOR ((source IP XOR dest IP) AND 0xffff) modulo slave count
为了能更加均衡,可采用 mac ip 异或 哈希:xmit_hash_policy=2