Archive for category 网络和安全
Linux端口扫描工具nmap and nwatch
Port scan简介
port Scan的方法介绍 port Scan就是一种通过检测对方服务器的开放端口,侦测对方服务器服务的方法。一般可分为主动式和被动式两种。 主动式就是通过向对方服务器的特定端口发送数据包,根据应答来判断。以nmap 为代表
被动式,不主动发出数据包,而是在网络上长时侦听,分析网上的transaction,来分析,严格的来被动式不应该被称作是端口扫描。以nwatch为代表
优缺点比较 主动式的优点
主动式只要在对方没有把通信阻断的情况下,可以在较短的时间内获得结果
主动式的缺点
1 现在带有阻断功能的防火墙越来越多,有些防火墙当检测到端口扫描时,会将端口关闭一定的时间,还有的机器使用了很多filter功能,只对特定的IP地址提供服务,这种情况下,主动式的正确性大打折扣。
2 主动式只是在一瞬间对端口进行扫描,只有当服务器那个时候使用的服务才有可能被侦测到。
3 端口扫描是一种广义上的攻击行为,对于末经许可的机器,一般不能施行。
被动式的优点
被动式只是侦听网络,不会成为网络攻击,它长期运行,可以侦测到一个长时间间内,服务器的变化。
被动式的缺点
由于它不会主动发出请求包,即使端口开着,如果没有发生实际的通信,被动式也无法侦测到服务
3。nmap的安装
debian apt-get install nmap
fedora core yum install nmap
others 下载源代码,编译
4。nmap的使用方法
下面是Nmap支持的四种最基本的扫描方式:
* TCP connect()端口扫描(-sT参数)。
* TCP同步(SYN)端口扫描(-sS参数)。
* UDP端口扫描(-sU参数)。
* Ping扫描(-sP参数)
如果要勾画一个网络的整体情况,Ping扫描和TCP SYN扫描最为实用。
* Ping扫描通过发送ICMP(Internet Control Message Protocol,Internet控制消息协议)回应请求数据包和TCP应答(Acknowledge,简写ACK)数据包,确定主机的状态,非常适合 于检测指定网段内正在运行的主机数量。
* TCP SYN扫描一下子不太好理解,但如果将它与TCP connect()扫描比较,就很容易看出这种扫描方式的特点。在TCP connect()扫描中,扫描器利用操作系统本身的系统调用打开一个完整的TCP连接也就是说,扫描器打开了两个主机之间的完整握手过程(SYN, SYN-ACK,和ACK)。一次完整执行的握手过程表明远程主机端口是打开的。
* TCP SYN扫描创建的是半打开的连接,它与TCP connect()扫描的不同之处在于,TCP SYN扫描发送的是复位(RST)标记而不是结束ACK标记(即,SYN,SYN-ACK,或RST):如果远程主机正在监听且端口是打开的,远程主机用 SYN-ACK应答,Nmap发送一个RST;如果远程主机的端口是关闭的,它的应答将是RST,此时Nmap转入下一个端口。
-sS 使用SYN+ACK的方法,使用TCP SYN,
-sT 使用TCP的方法, 3次握手全做
-sU 使用UDP的方法
-sP ICMP ECHO Request 送信,有反应的端口进行调查
-sF FIN SCAN
-sX
-sN 全部FLAG OFF的无效的TCP包送信,根据错误代码判断端口情况
-P0 无视ICMP ECHO request的结果,SCAN
-p scan port range 指定SCAN的目端口的范围
1-100, 或者使用25,100的方式
-O 侦测OS的种类
-oN 文件名 通常格式文件输出
-oX 文件名 通过DTD,使用XML格式输出结果
-oG 文件名,grep容易的格式输出
-sV 服务的程序名和版本SCAN
实例:
nmap -v target.com
这样对target.com上所有的保留TCP端口做了一次扫描,-v表示用详细模式。
nmap -sS -O target.com/24
这将开始一次SYN的半开扫描,针对的目标是target.example.com所在的C类子网,它还试图确定在其上运行的是什么系统。这需要root权限,因为用到了半开扫描以及系统侦测。
利用Iptables实现NAT
本文主要介绍如何使用iptbales实现linux2.4下的强大的NAT功能。关于iptables的详细语法请参考“用iptales实现包过虑 型防火墙”一文。需要申明的是,本文绝对不是 NAT-HOWTO的简单重复或是中文版,在整个的叙述过程中,作者都在试图用自己的语言来表达自己的理解,自己的思想。
一、概述
1. 什么是NAT
在传统的标准的TCP/IP通信过程中,所有的路由器仅仅是充当一个中间人的角色,也就是通常所说的存储转发,路由器并不会对转发的数据包进 行修改,更为确切的说,除了将源MAC地址换成自己的MAC地址以外,路由器不会对转发的数据包做任何修改。NAT(Network Address Translation网络地址翻译)恰恰是出于某种特殊需要而对数据包的源ip地址、目的ip地址、源端口、目的端口进行改写的操作。
2. 为什么要进行NAT
我们来看看再什么情况下我们需要做NAT。
假设有一家ISP提供园区Internet接入服务,为了方便管理,该ISP分配给园区用户的IP地址都是伪IP,但是部分用户要求建立自己 的WWW服务器对外发布信息,这时候我们就可以通过NAT来提供这种服务了。我们可以在防火墙的外部网卡上绑定多个合法IP地址,然后通过NAT技术使发 给其中某一个IP地址的包转发至内部某一用户的WWW服务器上,然后再将该内部WWW服务器响应包伪装成该合法IP发出的包。
再比如使用拨号上网的网吧,因为只有一个合法的IP地址,必须采用某种手段让其他机器也可以上网,通常是采用代理服务器的方式,但是代理服务 器,尤其是应用层代理服务器,只能支持有限的协议,如果过了一段时间后又有新的服务出来,则只能等待代理服务器支持该新应用的升级版本。如果采用NAT来 解决这个问题,
因为是在应用层以下进行处理,NAT不但可以获得很高的访问速度,而且可以无缝的支持任何新的服务或应用。
还有一个方面的应用就是重定向,也就是当接收到一个包后,不是转发这个包,而是将其重定向到系统上的某一个应用程序。最常见的应用就是和squid配合使用成为透明代理,在对http流量进行缓存的同时,可以提供对Internet的无缝访问。
3. NAT的类型
在linux2.4的NAT-HOWTO中,作者从原理的角度将NAT分成了两种类型,即源NAT(SNAT)和目的NAT(DNAT),顾名思义,所谓SNAT就是改变转发数据包的源地址,所谓DNAT就是改变转发数据包的目的地址。
二、原理
在“用iptales实现包过虑型防火墙”一文中我们说过,netfilter是Linux 核心中一个通用架构,它提供了一系列的"表"(tables),每个表由若干"链"(chains)组成,而每条链中可以有一条或数条规则(rule)组 成。并且系统缺省的表是"filter"。但是在使用NAT的时候,我们所使用的表不再是"filter",而是"nat"表,所以我们必须使用"-t nat"选项来显式地指明这一点。因为系统缺省的表是"filter",所以在使用filter功能时,我们没有必要显式的指明"-t filter"。
同filter表一样,nat表也有三条缺省的"链"(chains),这三条链也是规则的容器,它们分别是:
PREROUTING:可以在这里定义进行目的NAT的规则,因为路由器进行路由时只检查数据包的目的ip地址,所以为了使数据包得以正确路由,我们必须在路由之前就进行目的NAT;
POSTROUTING:可以在这里定义进行源NAT的规则,系统在决定了数据包的路由以后在执行该链中的规则。
OUTPUT:定义对本地产生的数据包的目的NAT规则。
三、操作语法
如前所述,在使用iptables的NAT功能时,我们必须在每一条规则中使用"-t nat"显示的指明使用nat表。然后使用以下的选项:
1. 对规则的操作
加入(append) 一个新规则到一个链 (-A)的最后。
在链内某个位置插入(insert) 一个新规则(-I),通常是插在最前面。
在链内某个位置替换(replace) 一条规则 (-R)。
在链内某个位置删除(delete) 一条规则 (-D)。
删除(delete) 链内第一条规则 (-D)。
2. 指定源地址和目的地址
通过–source/–src/-s来指定源地址(这里的/表示或者的意思,下同),通过–destination/–dst/-s来指定目的地址。可以使用以下四中方法来指定ip地址:
a. 使用完整的域名,如“www.linuxaid.com.cn”;
b. 使用ip地址,如“192.168.1.1”;
c. 用x.x.x.x/x.x.x.x指定一个网络地址,如“192.168.1.0/255.255.255.0”;
d. 用x.x.x.x/x指定一个网络地址,如“192.168.1.0/24”这里的24表明了子网掩码的有效位数,这是 UNIX环境中通常使用的表示方法。
缺省的子网掩码数是32,也就是说指定192.168.1.1等效于192.168.1.1/32。
3. 指定网络接口
可以使用–in-interface/-i或–out-interface/-o来指定网络接口。从NAT的原理可以看出,对于 PREROUTING链,我们只能用-i指定进来的网络接口;而对于POSTROUTING和OUTPUT我们只能用-o指定出去的网络接口。
4. 指定协议及端口
可以通过–protocol/-p选项来指定协议,如果是udp和tcp协议,还可–source-port/–sport和 –destination-port/–dport来指明端口。
四、准备工作
1. 编译内核,编译时选中以下选项,具体可参看“用iptales实现包过虑型防火墙”一文:
Full NAT
MASQUERADE target support
REDIRECT target support
2. 要使用NAT表时,必须首先载入相关模块:
modprobe ip_tables
modprobe ip_nat_ftp
iptable_nat 模块会在运行时自动载入。
五、使用实例
1. 源NAT(SNAT)
比如,更改所有来自192.168.1.0/24的数据包的源ip地址为1.2.3.4:
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT –to 1.2.3.4
这里需要注意的是,系统在路由及过虑等处理直到数据包要被送出时才进行SNAT。
有一种SNAT的特殊情况是ip欺骗,也就是所谓的Masquerading,通常建议在使用拨号上网的时候使用,或者说在合法ip地址不固定的情况下使用。比如
# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
可以看出,这时候我们没有必要显式的指定源ip地址等信息。
2. 目的SNAT(DNAT)
比如,更改所有来自192.168.1.0/24的数据包的目的ip地址为1.2.3.4:
iptables -t nat -A PREROUTING -s 192.168.1.0/24 -i eth1 -j DNAT –to 1.2.3.4
这里需要注意的是,系统是先进行DNAT,然后才进行路由及过虑等操作。
有一种DNAT的特殊情况是重定向,也就是所谓的Redirection,这时候就相当于将符合条件的数据包的目的ip地址改为数据包进入系 统时的网络接口的ip地址。通常是在与squid配置形成透明代理时使用,假设squid的监听端口是3128,我 们可以通过以下语句来将来自192.168.1.0/24,目的端口为80的数据包重定向到squid监听
端口:
iptables -t nat -A PREROUTING -i eth1 -p tcp -s 192.168.1.0/24 –dport 80
-j REDIRECT –to-port 3128
六、综合例子
1. 使用拨号带动局域网上网
小型企业、网吧等多使用拨号网络上网,通常可能使用代理,但是考虑到成本、对协议的支持等因素,建议使用ip欺骗方式带动区域网上网。
成功升级内核后安装iptables,然后执行以下脚本:
#载入相关模块
modprobe ip_tables
modprobe ip_nat_ftp
#进行ip伪装
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
2. ip映射
假设有一家ISP提供园区Internet接入服务,为了方便管理,该ISP分配给园区用户的IP地址都是伪IP,但是部分用户要求建立自己 的WWW服务器对外发布信息。我们可以再防火墙的外部网卡上绑定多个合法IP地址,然后通过ip映射使发给其中某一 个IP地址的包转发至内部某一用户的WWW服务器上,然后再将该内部WWW服务器响应包伪装成该合法IP发出的包。
我们假设以下情景:
该ISP分配给A单位www服务器的ip为:
伪ip:192.168.1.100
真实ip:202.110.123.100
该ISP分配给B单位www服务器的ip为:
伪ip:192.168.1.200
真实ip:202.110.123.200
linux防火墙的ip地址分别为:
内网接口eth1:192.168.1.1
外网接口eth0:202.110.123.1
然后我们将分配给A、B单位的真实ip绑定到防火墙的外网接口,以root权限执行以下命令:
ifconfig eth0 add 202.110.123.100 netmask 255.255.255.0
ifconfig eth0 add 202.110.123.200 netmask 255.255.255.0
成功升级内核后安装iptables,然后执行以下脚本:
#载入相关模块
modprobe ip_tables
modprobe ip_nat_ftp
首先,对防火墙接收到的目的ip为202.110.123.100和202.110.123.200的所有数据包进行目的NAT(DNAT):
iptables -A PREROUTING -i eth0 -d 202.110.123.100 -j DNAT –to 192.168.1.100
iptables -A PREROUTING -i eth0 -d 202.110.123.200 -j DNAT –to 192.168.1.200
其次,对防火墙接收到的源ip地址为192.168.1.100和192.168.1.200的数据包进行源NAT(SNAT):
iptables -A POSTROUTING -o eth0 -s 192.168.1.100 -j SNAT –to 202.110.123.100
iptables -A POSTROUTING -o eth0 -s 192.168.1.200 -j SNAT –to 202.110.123.200
这样,所有目的ip为202.110.123.100和202.110.123.200的数据包都将分别被转发给192.168.1.100 和192.168.1.200;而所有来自192.168.1.100和192.168.1.200的数据包都将分 别被伪装成由202.110.123.100和202.110.123.200,从而也就实现了ip映射。
2005年恶意程序的六大创新与技术突破
2005年恶意程序作者被唾弃的程度,就像德高望重的大学教授对他们作恶多端、傲慢自大 的学生的观感一样:一群爱张扬、却无聊的十几岁青少年 (Script Kiddie)。但是近来更明显的是这些「小鬼」已经学聪明了,而且变得更狡诈、更市侩:恶意程序不再只是为了突显自我而已。以下是趋势科技全球防毒研发 暨技术支持中心–TrendLabs所分析的六项「2005年恶意程序的创新与突破」。
移动装置恶意程序:从消耗电力到借助感染记忆卡荼毒PC
2004年底,第一个能感染行动电话的恶意程序被发现在外四处散播。从其名称即可看出 SYMBOS_CABIR.A 是以 .SIS的形式来传播,并且是通过蓝牙装置感染其它手机。这代表了恶意程序攻击手法另一波邪恶革新的开始。第一个 SYMBOS 恶意程序除了传播病毒的行为模式会让电池消耗大量电力以外,并不会产生任何破坏行为,后续出现的 SYMBOS 恶意程序纷纷露出成熟的尖牙利爪,因为它们会改变显示设定,植入其它恶意程序、并且覆写合法的应用程序。接着出现的是 SYMBOS_CARDTRP。这个移动装置恶意程序会利用手机便利的储存功能,将计算机恶意程序植入中毒去移动电话的记忆卡中。您可以这样想:这个恶意 程序不仅会感染您的手机,同时也会将恶意程序传播到您的个人电脑中。
移动装置间谍程序:将电话通讯簿传送给第三者
一个新的 Symbian 恶意程序SYMBOS_PBSTEAL在 11 月 11 日现身。它会尝试将中毒使用者的通讯簿资料传送给第三者–在本文撰写时,它传送的对象是所有可用的线上蓝牙装置。目前行动装置恶意程序仍必须依赖社交工 程技巧来散播,因为目标使用者必须接受通过蓝牙装置传送的信息,恶意程序才能进行散播。已知的 Symbian 恶意程序伪装成游戏程序与防毒软件,目的是为了让使用者接受并执行它。
游戏机恶意程序:从窃取游戏密码,到让游戏机变成“砖块”
2005 年 10 月 2 日 – 一个以 PSP 团队为名的团体公布了一个声称为目前极受欢迎的 Sony PlayStation Portable (PSP) 的韧体(farmware)更新程序。后来发现这个文件其实是 TROJ_PSPBRICK.A,一旦执行之后将会破坏 PSP 的韧体与 BIOS,让游戏机变成一块非常昂贵的“砖块”。几天之后随即出现 TROJ_DSBRICK.A,立刻让号称「绝不会变成砖块」的 Nintendo DS 挨了一巴掌。DSBRICK 变种让砖块这个比喻显得更贴切 — 它不仅会让您的游戏机变成像砖块一样毫无作用,而且它还真的会显示一堵砖墙的图片。它并不是以谋取利益为目的的攻击。不像其它以游戏密码为目标的窃贼, PSP 与 DS 特洛依木马程序只会让掌上型游戏机无法使用。
突然间,这个恶意程序让追求开放原始程序代码的理论再度浮上台面。有些人认为这也是一种尝试妨碍隐私的行为,更有人大胆怀疑这是 Sony 与 Nintendo 联手策划的资本家阴谋。
商业性质的 Rootkit:从Sony 捍卫版权,到“魔兽世界”作弊工具
就在 Sony PSP 遭到「砖块化」攻击之后不到一个月内,Sony BGM 被发现在其数字软件版权管理 (DRM) 软件中使用 Rootkit 技术以遏止盗版行为。这个 Rootkit 会隐藏所有名称开头为 "$sys$" 字符串的文件、资料夹、处理程序、以及登录机码。基本上,只要 Sony 的 Rootkit 存在,恶意程序作者就有现成的方法可隐藏他们的恶意程序。这是一种正当且合理的疑虑,而 BKDR_REPLIBOT.C 的出现竟让这个恶梦成真。最后,这场捍卫隐私权的战争竟然变质了。
此外,Sony 的 Rootkit 还可用于一些较不正当的用途。专门攻击热门线上游戏「魔兽世界 (World of Warcraft)」的黑客已经确认 Sony 的 Rootkit 可以让线上游戏的作弊行为完全无法被侦测到。「魔兽世界」的创作者撰写了一个防止作弊的程序,这个程序有个十分合适的名称 ─ Warden,它会在游戏进行期间侦测执行的处理程序。然而这个 Warden 程序并无法侦测到 Sony Rootkit 所隐藏起来的处理程序。虽然这还算不上是恶意的行径。只是有些不择手段的游戏玩家竟然毫不费力就能拥有令人难以置信的强大角色,而且还不会被逮到。
木马间谍程序:从银行密码到公家机关人事资料、线上游戏帐户
2004 年底到 2005 年初期间,间谍程序所造成的信息与财务损失已成为计算机安全业界最关切的问题。多年来已有难以计数的个人使用者信用卡号与银行帐户号码遭窃。2003 年底还传出 Valve Software 热门的视角射击游戏「战栗时空 (Half-Life)」原始程序代码遭窃。2005 年初,俄克拉荷马州某个警局里极为敏感的信息被窃,其中包括一些人事档案。虽然是公家机关,但在间谍程序的攻击行动中没有任何目标是神圣而不可侵犯的。为 因应这种威胁,趋势科技在今年初定义了一个新的间谍程序类别,也就是特洛依木马间谍程序。
目前最著名且明显针对特定目标的间谍程序就是 BANCOS 与 BANKER 间谍程序,这两个间谍程序大多以巴西银行为攻击目标。继锁定银行为目标的窃贼之后,还出现了窃取热门线上游戏「传奇 (Lineage)」与「天堂 (Legend of Mir)」帐户的窃贼。
网络钓鱼:从email 到 IM,从伪造页面到登录真正页面
网络钓鱼与利益导向恶意程序之间的微妙差异之前已经稍微讨论过。网络钓鱼攻击会运用最巧妙的社交工程技巧 — 巧妙的程度至少足以操弄使用者的恐惧、贪婪的心态,甚至更糟糕的是能利用使用者的无知。像是 PayPal 与 eBay 等知名网站经常成为网络钓鱼攻击所利用的对象。这确实是可以理解的,因为上述网站都是与金钱交易有极大关联的网站。十一月时,有一个 Yahoo! 钓鱼网站被发现,这个网站会利用 Yahoo! Photos 的名义,通过 Yahoo! 实时通讯进行自我推销。除了包含 Yahoo! Photos 与 Yahoo! 实时通讯在内的社交工程技巧以外,这个钓鱼网站所使用的技巧与八月所发现的 Yahoo! Phish 完全相同。
十一月时,PayPal 遭到 TSPY_FAKEPAL.A 利用,这个恶意程序会附在告知收件者 Paypal 将进行「效能检查」的电子邮件中。一旦附件文件执行之后,就会悄悄安装这个特洛依木马程序,并且在使用者登入真正的 Paypal 网站时随即展开行动。这种技巧可被视为网络钓鱼诈骗手法的一大革新,因为使用者完全不会察觉到任何网络钓鱼诈骗行为的迹象。
二层交换机,三层交换机,四层交换机的区别
二层交换技术是发展比较成熟,二层交换机属数据链路层设备,可以识别数据包中的MAC地址信息,根据MAC地址进行转发,并将这些MAC地址与对应的端口记录在自己内部的一个地址表中。具体的工作流程如下:
1. 当交换机从某个端口收到一个数据包,它先读取包头中的源MAC地址,这样它就知道源MAC地址的机器是连在哪个端口上的;
2. 再去读取包头中的目的MAC地址,并在地址表中查找相应的端口;
3. 如表中有与这目的MAC地址对应的端口,把数据包直接复制到这端口上;
4. 如表中找不到相应的端口则把数据包广播到所有端口上,当目的机器对源机器回应时,交换机又可以学习一目的MAC地址与哪个端口对应,在下次传送数据时就不再需要对所有端口进行广播了。
不断的循环这个过程,对于全网的MAC地址信息都可以学习到,二层交换机就是这样建立和维护它自己的地址表。从二层交换机的工作原理可以推知以下三点:
1. 由于交换机对多数端口的数据进行同时交换,这就要求具有很宽的交换总线带宽,如果二层交换机有N个端口,每个端口的带宽是M,交换机总线带宽超过N×M,那么这交换机就可以实现线速交换;
2. 学习端口连接的机器的MAC地址,写入地址表,地址表的大小(一般两种表示方式:一为BEFFER RAM,一为MAC表项数值),地址表大小影响交换机的接入容量;
3. 还有一个就是二层交换机一般都含有专门用于处理数据包转发的ASIC (Application specific Integrated Circuit)芯片,因此转发速度可以做到非常快。由于各个厂家采用ASIC不同,直接影响产品性能。以上三点也是评判二三层交换机性能优劣的主要技术参数,这一点请大家在考虑设备选型时注意比较。
(二)路由技术
路由器工作在OSI模型的第三层—网络层操作,其工作模式与二层交换相似,但路由器工作在第三层,这个区别决定了路由和交换在传递包时使用不同的控制信息,实现功能的方式就不同。工作原理是在路由器的内部也有一个表,这个表所标示的是如果要去某一个地方,下一步应该向那里走,如果能从路由表中找到数据包下一步往那里走,把链路层信息加上转发出去;如果不能知道下一步走向那里,则将此包丢弃,然后返回一个信息交给源地址。路由技术实质上来说不过两种功能:决定最优路由和转发数据包。路由表中写入各种信息,由路由算法计算出到达目的地址的最佳路径,然后由相对简单直接的转发机制发送数据包。接受数据的下一台路由器依照相同的工作方式继续转发,依次类推,直到数据包到达目的路由器。而路由表的维护,也有两种不同的方式。一种是路由信息的更新,将部分或者全部的路由信息公布出去,路由器通过互相学习路由信息,就掌握了全网的拓扑结构,这一类的路由协议称为距离矢量路由协议;另一种是路由器将自己的链路状态信息进行广播,通过互相学习掌握全网的路由信息,进而计算出最佳的转发路径,这类路由协议称为链路状态路由协议。由于路由器需要做大量的路径计算工作,一般处理器的工作能力直接决定其性能的优劣。当然这一判断还是对中低端路由器而言,因为高端路由器往往采用分布式处理系统体系设计。
(三)三层交换技术
近年来的对三层技术的宣传,耳朵都能起茧子,到处都在喊三层技术,有人说这是个非常新的技术,也有人说,三层交换嘛,不就是路由器和二层交换机的堆叠,也没有什么新的玩意,事实果真如此吗?下面先来通过一个简单的网络来看看三层交换机的工作过程。组网比较简单
使用IP的设备A————————三层交换机————————使用IP的设备B
比如A要给B发送数据,已知目的IP,那么A就用子网掩码取得网络地址,判断目的IP是否与自己在同一网段。如果在同一网段,但不知道转发数据所需的MAC地址,A就发送一个ARP请求,B返回其MAC地址,A用此MAC封装数据包并发送给交换机,交换机起用二层交换模块,查找MAC地址表,将数据包转发到相应的端口。
如果目的IP地址显示不是同一网段的,那么A要实现和B的通讯,在流缓存条目中没有对应MAC地址条目,就将第一个正常数据包发送向一个缺省网关,这个缺省网关一般在操作系统中已经设好,对应第三层路由模块,所以可见对于不是同一子网的数据,最先在MAC表中放的是缺省网关的MAC地址;然后就由三层模块接收到此数据包,查询路由表以确定到达B的路由,将构造一个新的帧头,其中以缺省网关的MAC地址为源MAC地址,以主机B的MAC地址为目的MAC地址。通过一定的识别触发机制,确立主机A与B的MAC地址及转发端口的对应关系,并记录进流缓存条目表,以后的A到B的数据,就直接交由二层交换模块完成。这就通常所说的一次路由多次转发。
以上就是三层交换机工作过程的简单概括,可以看出三层交换的特点:
由硬件结合实现数据的高速转发。
这就不是简单的二层交换机和路由器的叠加,三层路由模块直接叠加在二层交换的高速背板总线上,突破了传统路由器的接口速率限制,速率可达几十Gbit/s。算上背板带宽,这些是三层交换机性能的两个重要参数。简洁的路由软件使路由过程简化。大部分的数据转发,除了必要的路由选择交由路由软件处理,都是又二层模块高速转发,路由软件大多都是经过处理的高效优化软件,并不是简单照搬路由器中的软件。
结论
二层交换机用于小型的局域网络。这个就不用多言了,在小型局域网中,广播包影响不大,二层交换机的快速交换功能、多个接入端口和低谦价格为小型网络用户提供了很完善的解决方案。路由器的优点在于接口类型丰富,支持的三层功能强大,路由能力强大,适合用于大型的网络间的路由,它的优势在于选择最佳路由,负荷分担,链路备份及和其他网络进行路由信息的交换等等路由器所具有功能。
三层交换机的最重要的功能是加快大型局域网络内部的数据的快速转发,加入路由功能也是为这个目的服务的。如果把大型网络按照部门,地域等等因素划分成一个个小局域网,这将导致大量的网际互访,单纯的使用二层交换机不能实现网际互访;如单纯的使用路由器,由于接口数量有限和路由转发速度慢,将限制网络的速度和网络规模,采用具有路由功能的快速转发的三层交换机就成为首选。
如果把大型网络按照部门,地域等等因素划分成一个个小局域网,这将导致大量的网际互访,单纯的使用二层交换机不能实现网际互访;如单纯的使用路由器,由于接口数量有限和路由转发速度慢,将限制网络的速度和网络规模,采用具有路由 功能的快速转发的三层交换机就成为首选。
一般来说,在内网数据流量大,要求快速转发响应的网络中,如全部由三层交换机来做这个工作,会造成三层交换机负担过重,响应速度受影响,将网间的路由交由路由器去完成,充分发挥不同设备的优点,不失为一种好的组网策略,当然,前提是客户的腰包很鼓,不然就退而求其次,让三层交换机也兼为网际互连。
第四层交换的一个简单定义是:它是一种功能,它决定传输不仅仅依据MAC地址(第二层网桥)或源/目标IP地址(第三层路由),而且依据TCP/UDP(第四层) 应用端口号。第四层交换功能就象是虚IP,指向物理服务器。它传输的业务服从的协议多种多样,有HTTP、FTP、NFS、Telnet或其他协议。这些业务在物理服务器基础上,需要复杂的载量平衡算法。在IP世界,业务类型由终端TCP或UDP端口地址来决定,在第四层交换中的应用区间则由源端和终端IP地址、TCP和UDP端口共同决定。在第四层交换中为每个供搜寻使用的服务器组设立虚IP地址(VIP),每组服务器支持某种应用。在域名服务器(DNS)中存储的每个应用服务器地址是VIP,而不是真实的服务器地址。
当某用户申请应用时,一个带有目标服务器组的VIP连接请求(例如一个TCP SYN包)发给服务器交换机。服务器交换机在组中选取最好的服务器,将终端地址中的VIP用实际服务器的IP取代,并将连接请求传给服务器。这样,同一区间所有的包由服务器交换机进行映射,在用户和同一服务器间进行传输。
第四层交换的原理
OSI模型的第四层是传输层。传输层负责端对端通信,即在网络源和目标系统之间协调通信。在IP协议栈中这是TCP(一种传输协议)和UDP(用户数据包协议)所在的协议层。
在第四层中,TCP和UDP标题包含端口号(portnumber),它们可以唯一区分每个数据包
包含哪些应用协议(例如HTTP、FTP等)。端点系统利用这种信息来区分包中的数据,尤其是端口号使一个接收端计算机系统能够确定它所收到的IP包类型,并把它交给合适的高层软件。端口号和设备IP地址的组合通常称作“插口(socket)”。
1和255之间的端口号被保留,他们称为“熟知”端口,也就是说,在所有主机TCP/IP协议栈实现中,这些端口号是相同的。除了“熟知”端口外,标准UNIX服务分配在256到1024端口范围,定制的应用一般在1024以上分配端口号.
分配端口号的最近清单可以在RFc
"熟知"端口号举例:
应用协议 端口号
FTP 20(数据)
21(控制)
TELNET 23
SMTP 25
HTTP 80
NNTP 119
NNMP 16
162(SNMP traps)
TCP/UDP端口号提供的附加信息可以为网络交换机所利用,这是第四层交换的基础。
具有第四层功能的交换机能够起到与服务器相连接的“虚拟IP”(VIP)前端的作用。每台服务器和支持单一或通用应用的服务器组都配置一个VIP地址。这个VIP地址被发送出去并在域名系统上注册。在发出一个服务请求时,第四层交换机通过判定TCP开始,来识别一次会话的开始。然后它利用复杂的算法来确定处理这个请求的最佳服务器。一旦做出这种决定,交换机就将会话与一个具体的IP地址联系在一起,并用该服务器真正的IP地址来代替服务器上的VIP地址。 每台第四层交换机都保存一个与被选择的服务器相配的源IP地址以及源TCP 端口相关联的连接表。然后第四层交换机向这台服务器转发连接请求。所有后续包在客户机与服务器之间重新影射和转发,直到交换机发现会话为止。
在使用第四层交换的情况下,接入可以与真正的服务器连接在一起来满足用户制定的规则,诸如使每台服务器上有相等数量的接入或根据不同服务器的容量来分配传输流。
如何选用合适的第四层交换
a,速度
为了在企业网中行之有效,第四层交换必须提供与第三层线速路由器可比拟的性能。也就是说,第四层交换必须在所有端口以全介质速度操作,即使在多个千兆以太网连接上亦如此。千兆以太网速度等于以每秒1488000 个数据包的最大速度路由(假定最坏的情形,即所有包为以及网定义的最小尺寸,长64字节)。
b,服务器容量平衡算法
依据所希望的容量平衡间隔尺寸,第四层交换机将应用分配给服务器的算法有很多种,有简单的检测环路最近的连接、检测环路时延或检测服务器本身的闭环反馈。在所有的预测中,闭环反馈提供反映服务器现有业务量的最精确的检测。
c,表容量
应注意的是,进行第四层交换的交换机需要有区分和存贮大量发送表项的能力。交换机在一个企业网的核心时尤其如此。许多第二/ 三层交换机倾向发送表的大小与网络设备的数量成正比。对第四层交换机,这个数量必须乘以网络中使用的不同应用协议和会话的数量。因而发送表的大小随端点设备和应用类型数量的增长而迅速增长。第四层交换机设计者在设计其产品时需要考虑表的这种增长。大的表容量对制造支持线速发送第四层流量的高性能交换机至关重要.
d,冗余
第四层交换机内部有支持冗余拓扑结构的功能。在具有双链路的网卡容错连接时,就可能建立从一个服务器到网卡,链路和服务器交换器的完全冗余系统。
FreeBSD配置ADSL拨号
1.关于Modem
确定你的ADSL Modem己经接入Internet
2.配置内核
你不再需要为 PPPoE 配置你的内核。 如果netgraph支持的话,就无需进入内核built,ppp将会动态装载
3.设置ppp.conf
下面以ppp.conf为例:
default:
set log Phase tun command # you can add more detailed logging if you wish
set ifaddr 10.0.0.1/0 10.0.0.2/0
name_of_service_provider:
set device PPPoE:xl1 # replace xl1 with your Ethernet device
set authname 你的帐户
set authkey 你的密码
set dial
set login
add default HISADDR
4.运行ppp
必须是root,才能运行:
# ppp -ddial name_of_service_provider
5.引导ppp
把下列各项加放到 /etc/rc.conf文件中:
ppp_enable="YES"
ppp_mode="ddial"
ppp_nat="YES" # if you want to enable nat for your local network, otherwise NO
ppp_profile="name_of_service_provider"
用pureftpd建一个安全可控的ftpserver
目的:
一个ftp server,使用虚拟用户验证
指定某些用户可上传,指定某些用户可下载指定资料
步骤:
1.目录准备:
1.1 创建资源目录、设置属主、权限:
解释:product目录为产品资料;tech目录为技术资料;other目录为非技术资料
| 引用: |
| #mkdir /var/ftpd #chown wutieling /var/ftpd #chmod 755 /var/ftpd #mkdir /var/ftpd/product #mkdir /var/ftpd/tech #mkdir /var/ftpd/other #cd /var/ftpd #chown wutieling * #chmod 755 * |
1.2 创建虚拟用户家目录、设置属主、权限
| 引用: |
| #mkdir /var/ftpd/home #cd /var/ftpd/home #mkdir /var/ftpd/home/anonymous #mkdir /var/ftpd/home/tzguest #mkdir /var/ftpd/home/zdguest #mkdir /var/ftpd/home/teczm #chown -R wutieling * #chmod -R 755 * |
1.3 创建有上传权限虚拟用户的上传目录、设置属主、权限
| 引用: |
| #mkdir /var/ftpd/home/tzguest/upload #mkdir /var/ftpd/home/zdguest/upload #mkdir /var/ftpd/home/teczm/upload |
| 引用: |
| #chown wutieling /var/ftpd/home/tzguest/upload #chmod 777 /var/ftpd/home/tzguest/upload #chown wutieling /var/ftpd/home/zdguest/upload #chmod 777 /var/ftpd/home/zdguest/upload #chown wutieling /var/ftpd/home/teczm/upload #chmod 777 /var/ftpd/home/teczm/upload |
1.4 创建符号链接
| 引用: |
| #ln –s /var/ftpd/tech /var/ftpd/home/anonymous/tech #ln –s /var/ftpd/tech /var/ftpd/home/tzguest/tech #ln –s /var/ftpd/tech /var/ftpd/home/zdguest/tech #ln –s /var/ftpd/tech /var/ftpd/home/teczm/tech #ln –s /var/ftpd/product /var/ftpd/home/zdguest/product #ln –s /var/ftpd/other /var/ftpd/home/tzguest/other |
2. 编译、安装pureftpd
| 引用: |
| #./configure –without-inetd –with-paranoidmsg –with-quotas –with-sysquotas –with-altlog –with-extauth –with-cookie –with-throttling –with-ratios –with-ftpwho –with-virtualhosts –with-virtualchroot –with-diraliases –with-peruserlimits –with-language= simplified-chinese –with-pam –with-puredb –with-tls #make #make check #make install |
解释:
–without-inetd 不支持以inetd的方式执行ftpd.
–with-paranoidmsg Use paranoid
–with-sysquotas 使用系统磁盘配额,不使用虚拟磁盘配额。
–with-quotas 使支持quota磁盘限制.(非系统下的quota)
–with-altlog 支持可选择的log模式(类似Apache)
–with-extauth 支持使用第三方认证模式(默认无)
–with-cookie 使用者进站看到的东东.类似进站画面.
–with-throttling 频宽可设限.(默认无)
–with-ratios 支持上下传比.(默认无)
–with-ftpwho 可用/usr/local/sbin/pure-ftpwho看线上使用者.(默认无)
–with-virtualhosts 支持不同ip地址的虚拟主机[默认无]
–with-virtualchroot Enable the ability to follow symlinks outside a
chroot jail
–with-diraliases 允许目录别名
–with-peruserlimits 支持每个用户流量限制
–with-language= simplified-chinese 简体中文支持
–with-pam 允许PAM支持
–with-puredb 支持虚拟用户
–with-tls Enable SSL/TLS support,needs OpenSSL)
3. 配置:
3.1 配置文件准备
| 引用: |
| #chmod 755 configuration-file/pure-config.pl #cp configuration-file/pure-config.pl /usr/local/sbin/ #cp configuration-file/pure-ftpd.conf /usr/local/etc/ |
3.2 pure-ftpd.conf的设定
| 引用: |
| #pure-ftpd.conf ChrootEveryone yes BrokenClientsCompatibility yes MaxClientsNumber 50 Daemonize yes MaxClientsPerIP 10 VerboseLog no DisplayDotFiles no AnonymousOnly no NoAnonymous yes SyslogFacility ftp FortunesFile /usr/local/etc/ftpmsg #欢迎信息文件 DontResolve yes MaxIdleTime 5 PureDB /etc/pureftpd.pdb LimitRecursion 2000 8 AnonymousCanCreateDirs no MaxLoad 4 AntiWarez yes UserBandwidth 30 Umask 133:022 MinUID 100 AllowUserFXP no AllowAnonymousFXP no ProhibitDotFilesWrite yes ProhibitDotFilesRead yes AutoRename yes AnonymousCantUpload yes AltLog w3c:/var/log/pureftpd.log NoChmod yes KeepAllFiles no Quota 2000:1000 NoRename no CustomerProof yes # PerUserLimits 10:200 |
3.3虚拟用户添加
| 引用: |
| #pw groupadd ftpgroup #pw useradd ftpuser -g ftpgroup -d /dev/null -s /etc #/usr/local/bin/pure-pw useradd guest -u ftpuser -d /var/ftpd/home/anonymous |
以上是使用ID+Password下载/上传文件用户
添加管理员账号
| 引用: |
| 资源维护管理员帐号:ftpadmin #pure-pw useradd ftpadmin -u wutieling -d /var/ftpd –r 192.168.8.0/24 用户上传内容审查管理员 帐号:ftpman |
解释:管理员只能从192.168.8段登录
最后:
| 引用: |
| #/usr/local/bin/pure-pw mkdb |
3.4 启动
| 引用: |
| #/usr/local/sbin/pure-config.pl /usr/local/etc/pure-ftpd.conf |
Oracle DB 10g 中文乱码问题的解决
1. 安装时的乱码
2. 一些应用程序的乱码, 比如 dbca, netca
3. 一些基于oc4j的web应用的乱码, 比如 isqlplus, em
造成这些问题的原因都是一个, 就是这些程序都使用jdk, 相应的jdk(或jre) 使用的字体配置文件 font.properties 中的字体和操作系统的字体或者字体配置文件不匹配. 解决的办法是把两者改成一致.
1. 下载, 解包 ship.db.cpio.gz, 生成目录 Disk1
2. cd Disk1/stage/Components/oracle.swd.jre/1.4.2.0.0/1/DataFiles/
unzip all_except_bin.jar
(这时生成一个 jre 的目录)
cd jre/1.4.2/lib/
mv font.properties font.properties.bak
cp font.properties.zh_CN.Redhat8.0 font.properties
cd ../../../
zip -r all_except_bin.jar.new jre/
mv all_except_bin.jar.new all_except_bin.jar
(这么累啊, 其实就是把 font.properties 文件换掉. 这样安装时汉字显示就没有问题了)
3. 如法炮制, 把Disk1/stage/Components/oracle.jdk/1.4.2.0.0/1/DataFiles/sol_bin.1.1.jar
文件里面的font.properties 文件换掉, 创建数据库和执行网络配置时的乱码就没有了. isqlplus 和em 的乱码也解决了.
笑傲江湖版SWITCH 和ROUTE的故事(转发自思科在线)
令狐冲十四岁那年进入华山,那年岳灵珊八岁,岳不群白天给两人指点剑法,晚上令狐冲给小师妹讲故事哄她入睡。后来,岳不群陆续收了劳德诺,陆大有等徒弟, 又忙于修炼紫霞神功,就没有时间指点徒弟。于是他做了一个hub,从此华山派实现教育电子化,岳不群在网上同时给每个徒弟授课,这种方法很快在五岳剑派内 部推广。为了在五岳剑派之间互连,嵩山派掌门左冷禅研制出路由器,使得五岳剑派之间可以互联互通。
令狐冲晚上就通过网络给小师妹讲故事。
很快,岳灵珊已经十六岁,变成了一个亭亭玉立的小姑娘了。令狐冲发现自己的目光总是不由自主的在小师妹身上停留,每次和小师妹在一起的时候,总能听到自己 强烈的心跳声,经过了一段时间的茶饭不思后,终于有一天晚上,令狐冲在网上给小师妹发了一首情意绵绵的诗:你是风儿我是沙,你是蜜蜂我是花,你是梳子我是 头发,你是牙膏我是牙刷。
第二天,华山派开例会,令狐冲怀着忐率不按的心情来到了会议室,发现小师妹红着脸躲在师父后面,而其它的师弟都在偷偷朝自己笑,开完会,一个调皮的师弟就 过来叫牙刷师兄,赶紧蒙面逃走。问陆大有,才知道是劳德诺用一个叫netxray的工具把自己在网上的大作全抓了出来。令狐冲悔恨万分,于是,闭门研究 rfc,成功的研制出lanswitch。它能够识别设备mac地址,这样,令狐冲发送给小师妹的数据只有她一个人能够收到。令狐冲晚上可以在网上放心的 给小师妹讲故事,偶尔手痒还能敲几句平时心里想又说不出口的话来过瘾,然后,红着脸想象小师妹看到后的表情。
lanswitch是二层交换设备,它可以理解二层网络协议地址mac地址。二层交换机在*作过程中不断的收集资料去建立它本身的地址表,这个表相当简 单,主要标明某个mac地址是在哪个端口上被发现的,所以当交换机接收到一个数据封包时,它会检查该封包的目的mac地址,核对一下自己的地址表以决定从 哪个端口发送出去。而不是象hub那样,任何一个发方数据都会出现在hub的所有端口上(不管是否为你所需)。这样,lanswitch在提高效率的同 时,也提高了系统的安全性。
接下来的一年,岳不群大量招收门徒,华山派得以极大的壮大,所使用的lanswitch也多次级连。但门徒中难免鱼龙混杂,当时华山派一批三、四代弟子崇 拜万里独行田伯光,成立了一个田协,经常广播争论比赛八百米还是一千米很合理的问题;第三代弟子中有一个叫李洪至的,每天在华山派内部广播发轮大法;更让 令狐冲受不了的是,随着师父年龄的增大,变得越来越罗嗦,每句话都要重复二十遍,然后在网上广播。令狐冲想和小师妹,陆大有等人专门使用一个广播域,但如 果另外使用一个lanswitch的话,师父肯定不会同意,于是,他修改了lanswitch的软件,把小师妹,陆大有等人和自己划成一个虚拟网 (vlan),其它人使用另外的vlan,广播包只在vlan内发送,vlan间通过路由器连接。岳不群也深受田协,李洪至其害,但为与左冷禅抗争,用人 之际,只能隐忍,知道了这件事,大为高兴,但仍为令狐冲私自修改软件一事,罚他到思过崖面壁一年,一年之内不得下山。在华山派内重新使用vlan进行子网 划分,分为五个子网,师父和师娘,小师妹还有林平之在一个vlan,发轮功弟子用一个vlan;田协弟子用一个 vlan,其它弟子用一个vlan,而思过崖上也有单独的一个vlan。令狐冲到了思过崖,并不难过,终于,世界安静了,依靠左冷禅的路由器,令狐冲还可 以每天在网上给小师妹讲故事,聊天。
局域网交换机的引入,使得网络节点间可独享带宽,但是,对于二层广播报文,二层交换机会在各网络节点上进行广播;同时,对于二层交换机无法识别的 mac地址,也必须在广播域内进行广播。当多个二层交换机级连时,二层交换网络上的所有设备都会收到广播消息。在一个大型的二层广播域内,大量的广播使二 层转发的效率大大减低,为了避免在大型交换机上进行的广播所引起的广播风暴,需要在一个二层交换网络内进一步划分为多个虚拟网(vlan)。在一个虚拟网 (vlan)内,由一个工作站发出的信息只能发送到具有相同虚拟网号(vlanid)的其他站点,其它虚拟网(vlan)的成员收不到这些信息或广播帧。 采用虚拟网(vlan)可以控制网络上的广播风暴和增加网络的安全性。不同虚拟网(vlan)之间的通信必须通过路由器进行。
但是幸福永远是短暂的,接下来总是无尽的烦恼。随着整个五岳剑派势力的增大,路由器的速度越来越慢。令狐冲发现每次给小师妹讲故事时,小师妹的回答总是珊 珊来吃,而且话也很少,总是"嗯","噢"或者"我听着呢"。终于有一天,路由器再也ping不通的,令狐冲三天没有得到小师妹的消息,对着空空的显示 屏,再也忍不住,在一个下着雪的晚上,偷偷下山找小师妹,到了小师妹窗前,发现小师妹正在网上和小林子热烈的聊天,全没注意一边的自己,内心一阵酸痛,回 到思过崖,大病一场。病好后潜心研究,终于有一天,做出来一个路由器,这时,令狐冲发现,此时华山派已经有了三十个vlan,路由器必须为每个 vlan分配一个接口,接口不够用,而且,两个子网内通过路由器的交换速度远远低于二层交换的速度。二层交换机划分虚拟子网后,就出现了一个问题:不同虚 拟子网之间的转发需要通过其它路由器来实现。二层交换机的不同vlan节点间的转发需要通过路由器设备来实现大大浪费了端口,而路由器的高成本,低效率又 使它无法满足大量子网情况下的三层转发需求,三层交换的概念就在这种情况下被提了出来。
这天晚上,令狐冲心灰意懒,借酒消愁,这时,一个黑影出现在他的面前,原来是一个道风仙骨的老人,正是风清扬。风清扬听了令狐冲的疑惑,说:路由器接口不 够,把路由器做在lanswitch内部不就可以了;交换速度慢,是因为路由器查找的是网段路由,而lanswitch直接查mac对应出端口,当然速度 快。为什么不能直接根据ip地址查到出端口呢?令狐冲一听,大为仰慕,但还是不明白,ip地址那么多,而且经常变化,如何能够直接查到出端口呢?风清扬 说:
"你先坐下,让我来问你,华山派有多少弟子?"
"一万六千左右。"
"你全知道他们住哪里吗?"
"不知道。"
"岳不群要你找一个不知道住哪里的人,如何去找?"
"查华山派电话号码查询系统,找到他的地址,然后去找他。"
"如果你回来后再让你找这个人,又如何去找?"
"如何…. ,查华山派电话号码查询系统,找到他的地址,然后去找他。"
"你不知道到这个人的地址吗?"
"知道,但师父说,华山派的地址那么多,而且经常变化,不用知道地址。"
"岳不群这小子,把徒弟都教成木头了!我问你,你自己认为应该如何找?"
"直接去找!"
"好!你这人还不算太苯。那你知道了一个人的地址后,是不是永远记住了?"
"有的人记住了。其它的都忘了。"
"为什么忘了?"
"因为我记不了那么多人,而且一段时间没有去找他。"
"华山派电话号码查询系统里的地址是如何获得的?"
"我在空旷处大喊一声他的名字,他听到后就会来找我,告诉我他的地址。"
风清扬又问了大把类似脑筋急转弯的问题,然后风清扬说:"现在你明白根据ip地址直接查出端口的道理了吗?等到你明白这个道理,你自然会做出三层交换机来 ",令狐冲仔细回忆了今天的话,终于明白了和二层转发由mac地址对应到出端口的道理一样,三层转发也可以直接由ip地址对应到出端口,ip地址的路由可 以通过arp来学习,同样需要老化。这样,vlan间转发除第一个包需要通过arp获得主机路由外,其它的报文直接根据ip地址就能够查找到出端口,转发 速度远远高于路由器转发的速度。抬头看时,风清扬已经走了。
一年后,令狐冲下思过崖,成功的推出quidway s8016路由交换机。实现了vlan间的互通,并且与嵩山,黑木崖等路由器实现互通。三层交换机是在二层交换机的基础上增加三层交换功能,但它不是简单 的二层交换机加路由器,二而是采用了不同的转发机制。路由器的转发采用最长匹配的方式,实现复杂,通常使用软件来实现,。而三层交换机的路由查找是针对流 的,它利用cache技术,很容易采用asic实现,因此,可以大大的节约成本,并实现快速转发。很多文章会提及三层交换机和路由器的区别,一般的比较是 三层交换机又快又便宜。这些话没有错,但场合是汇聚层。我们看到,在汇聚层,面向三层交换机直接下挂的主机,因为能够获得其主机路由,所以三层交换机能够 实现快速查找;而对于通过其它路由器连接多个子网后到达的主机,三层交换机和路由器的处理是一样的,同样采用最长匹配的方法查找到下一跳,由下一跳路由器 进行转发。
因此,通常的组网方式是在骨干层使用gsr,汇聚层使用三层交换机。当然,对于一个小型的城域网,也可以直接拿三层交换机组网,不需要gsr。
Samba 3.0.10 的 MySQL 用户表验证
Samba 让 Linux 的灵活性表露无遗。在公司的局域网内部,我十分喜欢 Samba 的自由自在。
安装和编译的步骤并不复杂,但是需要了解为了支持 MySQL 认证,编译时需要的参数,以及配置时采用正确的参数。
编译命令:
$ ./configure –with-expsam=mysql –with-mysql-prefix=/opt/mysql
如果以上命令成功的话,然后就是 make ; make install 了。
然后拷贝一个 examples 下的 smb.conf 到 /usr/local/samba/lib 。
用 /usr/local/samba/sbin/smbd -D 即可启动。
用 smbstatus 命令可以查看 Samba 服务器的状态。
下面配置 MySQL 的支持。 和 MYSQL 相关的配置有以下几行:
[global]
# passdb backend = plugin:/usr/local/samba/lib/pdb/mysql.so:mysql
passdb backend = mysql:mysql
mysql:mysql host = localhost #主机名
mysql:mysql port = nnnn #端口号,默认3306
mysql:mysql user = samba #mysql用户
mysql:mysql password = password #mysql密码
mysql:mysql database = smb_user #数据库名
mysql:mysql table = user #数据表,似乎没有用处
……
建立 smb_user.user 表的脚本可以从 examples/pdb/mysql 目录下的 mysql.dump 导入,如果使用的版本是samba3,还需要单独手工增加“logon_hours"键值,这个目录下的 smb.conf 是一个最简单的配置,可以供参考。但是这个文件有几个地方是错的。
最主要的就是上面注释掉的那行,我发现根据这个 sample 不能使用,后来修改为简单的
mysql:mysql 后就能使用了。
具体的调试还是必须看相关的日志文件,如果是数据库连接错误,相关的日志文件会报告数据库不能连接的错误。
这样,一个基于 MySQL 用户的 Samba 系统建立了起来。
如果安装了swat,可以运行一下,重新格式化一下配置文件,这样看起来更方便一些。
但是,目前没有现成的完全基于 PHP 的针对 Samba 口令的修改程序。因为 user 表中的 lm_pw 和 nt_pw 分别代表口令的散列,其算法相对比较复杂, 远远不是 PHP 和 MySQL 提供的 encrypt() md5() 之类的函数能解决的。
如果有读者已经发现或者已经研发出纯 PHP 的修改 lm_pw 和 nt_[pw 字段的程序,欢迎一起交流。
巧用Linux 架设TFTP Server备份路由器的配置文件
TFTP (普通文件传输协议或一般文件传输协议) 大家一定记得在2003年8月12日全球爆发冲击波(Worm.Blaster)病毒,这种病毒会监听端口69,模拟出一个TFTP服务器,并启动一个攻 击传播线程,不断地随机生成攻击地址,进行入侵。另外tftp被认为是一种不安全的协议而将其关闭,同时也是防火墙打击的对象,这也是有道理的。不过 tftp还是有用武之地的,下面讲的文件传输和备份router配置文件都时实际应用,它也只时一种手段而已。
一、用TFTP实现文件传输
环境:服务器A :rhas11
客户机B: rhas101
首先用rpm –qa | grep tftp看一下tftp有没安装,没有的话安 装一下。
A:在服务器端设置
#vi /etc/xinetd.d/tftp
service tftp
{
disable = no
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /test
per_source = 11
cps = 100 2
flags = IPv4
}
或用chkconfig tftp on 也可以打开xinetd代理的tftp服
#mkdir /test
#service xinetd restart 从启xinetd服务,因为TFTP服务受控与xinetd, xinetd是管服务的服务,它是不开端口的。
验证一下TFTP是否起来了:
[root@rhas11 tftp]# netstat -nlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:32768 0.0.0.0:* LISTEN 3122/rpc.statd
tcp 0 0 127.0.0.1:32781 0.0.0.0:* LISTEN 4035/xinetd
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 3103/portmap
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3324/httpd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 3255/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 3213/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 3295/sendmail: acce
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 3415/0
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 3324/httpd
udp 0 0 0.0.0.0:32768 0.0.0.0:* 3122/rpc.statd
udp 0 0 0.0.0.0:69 0.0.0.0:* 4035/xinetd
udp 0 0 0.0.0.0:69 0.0.0.0:* 4012/in.tftpd
udp 0 0 0.0.0.0:111 0.0.0.0:* 3103/portmap
udp 0 0 0.0.0.0:754 0.0.0.0:* 3122/rpc.statd
udp 0 0 0.0.0.0:631 0.0.0.0:* 3213/cupsd
A:服务器端 新建一文件file
#cd /test
[root@rhas11 test]# ls -l
总用量 4
-rw-r–r– 1 root root 19 5月 15 18:26 file
B客户端:
下载:
[root@rhas101 tmp]# tftp 172.31.0.11
tftp> get 1
Received 72 bytes in 0.0 seconds
tftp>
上传当前目录下文件”aaa”
[root@rhas101 client]# ls -l
总用量 4
-rw-r–r– 1 root root 15 5月 20 21:49 aaa
[root@rhas101 client]# tftp 172.31.0.11
tftp> put aaa
Error code 1: File not found
tftp>
奇怪当前目录却是有aaa文件???让我想一下
哦,原来服务器/test目录下没有文件aaa,那就touch一个吧
[root@rhas11 test]# touch aaa
[root@rhas11 test]# ls -l
总用量 4
-rw-r–r– 1 root root 0 5月 15 18:46 aaa
-rw-r–r– 1 root root 19 5月 15 18:26 file
好了再试一试
[root@rhas101 client]# tftp 172.31.0.11
tftp> put aaa
Error code 1: File not found
tftp> put aaa
Error code 2: Access denied
tftp>
细心的读者一定想到这是权限问题
再到服务器上设置
(===============================================================
小插曲:#chown -R nobody.nobody /test
#vi /etc/xinetd.d/tftp
service tftp
{
disable = no
socket_type = dgram
protocol = udp
wait = yes
user = nobody
server = /usr/sbin/in.tftpd
server_args = -u nobody -s /test
per_source = 11
cps = 100 2
flags = IPv4
}
chmod 777 -R /test
================================================================
)
#service xinetd restart
)
[root@rhas11 test]# chmod 007 aaa 其实只要有可写的权限就行了
[root@rhas11 test]# ls -l
总用量 4
——-rwx 1 root root 0 5月 15 18:46 aaa
-rw-r–r– 1 root root 19 5月 15 18:26 file
[root@rhas101 client]# tftp 172.31.0.11
tftp> put aaa
Error code 1: File not found
tftp> put aaa
Error code 2: Access denied
tftp> put aaa
Sent 16 bytes in 0.0 seconds
tftp>
二、 特殊应用:上传和下载路由器(或交换机)配置文件
配使用Linux的tftp功能配置cisco route
在局域网环境中,如果有Cisco 路由器和Linux服务器。也许你需要利用Linux的
TFTP服务去下载Cisco router配置文件 startup-config,在服务器上编辑后再上载
到路由器,在实现中有一些特别注意的地方。
所用软、硬件:Redhat Linux AS 3.0 ,Cisco 2611 路由器
BEIJING#copy run tftp
Address or name of remote host []? 172.31.0.11
Destination filename [beijing-confg]? beijing-route
!!
1968 bytes copied in 0.581 secs (3387 bytes/sec)
别忘了在tftp server 上创建beijing-route权限为777
BEIJING#copy tftp flash
Address or name of remote host []? 172.31.0.11
Source filename []? beijing-route
Destination filename [beijing-route]?
Accessing tftp://172.31.0.11/beijing-route…
Erase flash: before copying? [confirm]
Erasing the flash filesystem will remove all files! Continue? [confirm]
Erasing device… eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee …erased
Erase of flash: complete
Loading beijing-route from 172.31.0.11 (via FastEthernet0/0): !
[OK - 1968 bytes]
Verifying checksum… OK (0×5248)
1968 bytes copied in 0.285 secs (6905 bytes/sec)

近期评论