深信服M5100S tips

在某个项目中用到了深信服的M5100-S SSL VPN设备,而网上关于深信服设备的资料非常匮乏,因此我根据平时的积累,整理了一些资料和tips,以飨读者。

SNMP

community
在深信服的设备使用文档中从未提及SNMP,然而实际上是有SNMP这个功能的,只是community不是传统的public,而是sinfors

oid

1.3.6.1.2.1.1.3.0    # 设备运行时间(UPTIME),以1/100秒为单位。
1.3.6.1.2.1.1.1.0    # 系统描述
1.3.6.1.2.1.1.5.0    # 设备型号
1.3.6.1.2.1.1.4.0    # 联系方式
1.3.6.1.2.1.1.6.0    # 位置
1.3.6.1.2.1.2.1.0    # 接口数量
1.3.6.1.2.1.2.2.1.2.x     # 接口描述信息(不同的x数值代表不同的接口,视设备回复而定)
1.3.6.1.2.1.2.2.1.10.x    # 接口接收总流量,以Byte为单位(不同的x数值代表不同的接口,视设备回复而定)
1.3.6.1.2.1.2.2.1.11.x    # 接口发送总流量,以Byte为单位(不同的x数值代表不同的接口,视设备回复而定)
1.3.6.1.2.1.2.2.1.8.x     # 接口接口状态(1-up,2-down)(不同的x数值代表不同的接口,视设备回复而定)
1.3.6.1.2.1.2.2.1.5.x     # 接口速率,以10bps为单位(不同的x数值代表不同的接口,视设备回复而定)
1.3.6.1.4.1.33333.1.1.1.0     # CPU占用率,以百分比为单位。
1.3.6.1.4.1.33333.1.1.2.0     # 设备类型(如M5000)
1.3.6.1.4.1.33333.1.1.3.0     # 剩余内存,free+buffers,以KB为单位。
1.3.6.1.4.1.33333.1.2.1.0     # VPN状态("vpn's status. 0 is stopped, 1 is normal, 2 is error" ) DLAN4.x版本因为lmdlan没有跟snmpagent程序通信,因此取不到正确的运行状态,会一直显示为1。
1.3.6.1.4.1.33333.1.2.2.0     # VPN连接数,DLAN4.x版本因为lmdlan没有跟snmpagent程序通信,因此取不到正确的连接数,会一直显示为0。
1.3.6.1.4.1.33333.1.2.3.0     # 软件版本(如M5000-Q-4.0-R1)
1.3.6.1.4.1.33333.1.3.1.0     # SSL VPN状态("ssl's status. 0 is stopped, 1 is normal, 2 is error")
1.3.6.1.4.1.33333.1.3.2.0     # SSL VPN连接数(即接入的用户数目)

实际上,在PRTG中,可以通过auto discovery扫描到端口带宽和uptime,至于CPU利用率、MEM剩余量则可以通过手工添加sensor。

CLI

M5100-S不支持命令行,但是作为一个网络工程师,对非CLI的设备心存反感,想ping一下互联设备,抓个包啥的都不行,好在深信服提供了一个update的工具,勉强可以使用。

按F10将弹出如下窗口,支持的命令包括

  1. ifconfig
  2. netstat -rn
  3. ping

从显示结果来看,sinfor的OS应该是在linux上进行裁剪的,因为假如是BSD,网卡名称就应该是fxp或xx等以驱动来命名。
既然如此,根据GPL协议,sinfor是否应该开放源代码呢?

dlan

只要有这个工具,是否意味着任何一台sinfor设备,只要用户不修改原始密码,就可以从公网任意访问xx了呢?那安全性从何谈起。

默认端口映射问题

M5100-S通过一条互联网专线访问外网,运营商分配给该客户的是112.180.254.33/29网段的IP地址,其中112.180.254.34是M5100-S的接口IP地址。默认情况下,这几个IP地址的443端口全部映射到该接口IP的443端口,也就是说,当客户分别访问这几个IP的443端口时,全部重定向至https://112.180.254.34。

难道,作为一个安全网络设备,不应该将:“非明确通过的即禁止”当作设计的首要原则吗?

解决的办法:

除了112.180.254.34这个IP外,明确禁止剩余IP的443端口映射。

在CentOS中使用Serial console

手头上有一台HP ML110服务器,准备拿来当流控设备,安装完CentOS后发现机柜里面没有显示器,还得配置serial console,方便日后维护。

在网上搜了很多文档,都说国外的文档质量高,可是就serial console这个问题也折腾了我大半天,因此记下来以免忘记。

VirtualBox Host中drop packet错误

前两天,我在VirtualBox的VM中安装了最新版的PRTG,结果发现SNMP traffic sensor的图像有断断续续的现象,同时伴随着异常返回值,这令我非常焦虑,因为cacti就是因为图像经常无缘无故出现异常而被我抛弃的,而PRTG这两年来一直位列我的十大兵器谱头名,可不能辜负了我对它的信任呀。

将VMware server迁移到VirtualBox

VMware GSX是VMware公司于200x年推出的一款企业级虚拟化产品,后来迫于VirtualBox的压力,VMware公司决定将其改名为VMware server,并免费提供给用户使用。2010年,VMware公司发布了臃肿迟缓的2.0版本,用户怨声载道,随后不久VMware公司便宣布终止更新该产品,并劝说用户迁移到VMware player。但是明眼人都知道,VMware公司并不愿意看到这个免费而优秀的产品,继续分流他们的客户,我甚至认为,VMware公司之所以推出错误百出的2.0版本是为了找一个冠冕堂皇的理由,将VMware server给埋了,这样对广大用户也有个交代,这一招实在是太狠了。

在H3C S5500中抓包

网络设备大多没有提供正儿八经的抓包工具,一般都建议通过端口镜像方式,将可疑端口的流量倾泻到监控端口,由PC来完成抓包动作。

然而,这种方式并不适用于远程维护的情况,网络工程师更倾向于能在交换机上看见流经的数据包。那如何在H3C S5500上抓包呢,可以采用曲线救国的办法:利用ACL的统计功能。

VirtualBox的使用技巧

VirtualBox命令行用起来很方便,下面是一些常用的功能,记录下来以免忘记。

1. sharedfolder

随着VMs的增多,迫切需要一个“共享文件夹”

HOST

# mkdir -p /home/sharedfolder/linux
# mkdir -p /home/sharedfolder/windows
# chown -R nobody:nogroup /home/sharedfolder
# vboxmanage sharedfolder add <vm1> --name "sharedfolder" --hostpath "/home/sharedfolder"
# vboxmanage sharedfolder add <vm2> --name "sharedfolder" --hostpath "/home/sharedfolder"

最后接着将公共文件放到sharedfolder中。

RouterOS中的几个调试工具

ROS的几个有用的测试工具

1、ping

  • 语法:ping
    option
  • 例子:ping 8.8.8.8 src-address=10.10.10.254
  • 说明:src-address这个选项有bug,icmp request包头的源地址仍然使用接口地址,而非10.10.10.254

2、telnet

  • 语法:telnet
    port
  • 例子:telnet 10.168.1.9 80

3、tcpdump

没有找到tcpdump,用什么来捕获数据包呢?原来ROS提供了一个packet sniffer的工具,只是用起来没有tcpdump那么方便,搞不懂源于linux的ROS为何不用tcpdump这个正统的排错工具。

网络设备管理 - rancid

Rancid的全称是Really Awesome New Cisco ConfIg Differ,顾名思义,该软件的初衷是为了管理cisco设备,然而由于它非常实用,目前已经被扩展到支持多达xx种网络设备,诸如常见的dell,hp,juniper,foundry,redback等,当然,国内常见的h3c也不在话下。
It‘s not that the name is not being recognized, it’s that the scripts it's running have errors in the first line which produce "

“No such file or directory”
Lookup list of groups

For each device in each list of groups
• Connect to the equipment (telnet, ssh, …)
• Run ”show” commands – config, inventory, …
• Collect, filter/format data
• Retrieve the resulting config files
• CVS check-in the changes
• Generate a diff from the previous version
• E-mail the diff to a mail address (individual or group)

rancid

rancid的工作原理

安装

# aptitude install rancid-core rancid rancid-utils

Rancid配置

/etc/rancid/rancid.conf

CVSROOT=$BASEDIR/SVN; export CVSROOT
RCSSYS=svn; export RCSSYS
LIST_OF_GROUPS=”access dist core”
  1. rancid支持CVS和SVN这两种版本管理工具,本文选择了SVN,因为CVS太古老了。
  2. 根据cisco的定义,一个大型的网络规划应该分成三层,分别是access、distribution和core,因此我们也创建三个组:access、dist、core

配置设备

cd /var/lib/rancid/
mkdir access
mkdir dist
mkdir core
touch access/router.db
touch dist/router.db
touch core/router.db

接着往router.db里面填内容:

# vim access/router.db
10.0.0.1:h3c:up:sw_access_1f_A
10.0.0.2:h3c:up:sw_access_1f_B
10.0.0.3:h3c:up:sw_access_1f_C
10.0.0.4:h3c:up:sw_access_1f_D
...

依次创建dist/router.db和core/router.db

# vim .cloginrc
add user * <username>
add password * <password>
add method * telnet

H3C脚本

H3C并不在rancid的官方支持之列,不过好在有热心的网友Jethro Binks制作了h3c的脚本

H3C的OS叫Comware,有3和5这两个系列,常见的S3100,S3600,S5600,S5800等均能正常使用。以下是经过测试的型号列表:

  1. H3C S3100 (Comware 3)
  2. H3C S5600 (Comware 3)
  3. H3C S7506 (Comware 5)
  4. H3C S7906E (Comware 5)
  5. H3C S5820X (Comware 5)
  6. H3C S5800 (Comware 5)
  7. H3C S3610 (Comware 5)
  8. H3C MSR30-60 (Comware 5)

Jethro Binks的脚本并不适合于Debian,需要做一点小修改:

h3clogin:

#! /usr/local/bin/expect --

改成

#! /usr/bin/expect --

h3crancid:

#! /usr/bin/perl5

改成

#! /usr/bin/perl

接着将它们拷贝到/usr/lib/rancid/bin中,同时赋予+x的属性。

# cp h3clogin h3crancid /usr/lib/rancid/bin
# chmod +x h3crancid h3clogin

H3C设备配置

rancid的脚本将使用perl+expect来登录H3C设备,并执行一些display命令来获取设备信息,虽然然而所以安全性需要着重考虑,直接给完整的特权账号肯定不合适,最好创建一个单独的ranciduser,并且仅分配level1权限:

local-user ranciduser
authorization-attribute level 1

看到这,有些读者不禁倒吸一口凉气:糟糕,手头上管理着几十台设备,难不成我要逐台登录和创建几十个相同的帐号?别急,我们完全可以利用clogin/h3clogin来自动完成这个任务。

# vim create.rancid.account
sys
local-user rancid
authorization-attribute level 1
quit
save

h3clogin -x /path/to/commands.file

最后测试一下

# sudo -u rancid -H /usr/lib/rancid/h3clogin <H3C-device-ip> FIXME

配置变更

硬件配置变更

软件配置变更

版本管理工具

rancid利用版本管理工具对配置变更进行管理,这是一个聪明而省力的做法,unix哲学就是帅。rancid支持CVS和SVN这两个版本管理工具,本文选择的是SVN,因为CVS太古老了。

安装svn

# aptitude install svn

整合svn

cd /var/lib/rancid/
svnadmin create configs
svn mkdir file:///var/lib/rancid/configs/access -m “created folder”
svn mkdir file:///var/lib/rancid/configs/dist -m “created folder”
svn mkdir file:///var/lib/rancid/configs/core -m “created folder”
svn co file:///var/lib/rancid/configs/access ./access/
svn co file:///var/lib/rancid/configs/dist ./dist/
svn co file:///var/lib/rancid/configs/core ./core/

chown -R rancid:rancid /var/lib/rancid/
chmod 0600 /var/lib/rancid/.cloginrc

sudo -u rancid -H /usr/lib/rancid/bin/rancid-run

svn mkdir access/configs
svn mkdir dist/configs
svn mkdir core/configs
svn add access/
svn add dist/

svn add core/*
svn commit -m “added files” access/
svn commit -m “added files” dist/
svn commit -m “added files” core/

配置变更提醒

当rancid检测到变更时,control_rancid组件利用sendmail将变更信息通过邮件发送给管理员。对于debian来说,我们将使用默认的MTA exim4来完成这项工作。

exim4的安装和配置

详见《如何利用exim4通过gmail发送邮件

/etc/aliases

# vim /etc/aliases
...
rancid-<group-name> : mail-address@domain.name
rancid-adimin-<group-name> : mail-address@domain.name
...
# newaliases
# /etc/init.d/exim4 restart

当配置变更时,邮件将发送给rancid-,当有错误信息时,邮件将发送给rancid-admin-

至此完成了配置变更的邮件提醒功能。

查看变更历史记录

viewvc安装

viewvc配置