你好:

     感谢你访问我的 Blog ,本博客只提供博主的技术经验分享,你可以在此做简单的留言和评论,我会抽空回复你;若是要深入交流探讨,请联系QQ:47853253或者加QQ群:12012081


 

【ROS】路由名词解释和理解

一.防火墙重要名词:
1.input:    进入路由器,是指发往routeros自己的数据(也就是目的ip是routeros接口中的一个ip地址)
2.output: 从路由器出发,是指从routeros发出去的数据(也就是数据包源ip是routeros接口中的一个ip地址)
3.forward: 经路由转发中 是指通过routeros转发的(比如你内部计算机访问外部网络,数据需要通过你的routeros,进行转发出去
5.prerouting: 路由之前,就是说,在数据包进入路由表之间的链表 或解为:进路由前处理
在设置mangel时prerouting 后选 src-address=IP src-address就是在路由前的地址处理的效果
6.Postrouting: 路由之后,就是数据包已经确立了路由之后的链表 或解为:出路由后处理
在设置mangel时Postrouting 后选 dst-address=IP dst-address就是在路由后的地址的得理效果
7.passthrough与accept和reject与drop的区别:
Passthrough解为:passthrough的规则执行后,还可以进入下一条规则
Accept       解为:accept之后的数据包,不会在进入下一条规则。

• accept - accept the packet applying the appropriate attributes (marks, MSS), and no more rules are processed in the list
• passthrough - apply the appropriate attributes (marks, MSS), and go on to the next rule

更详细解释为:
accept解释为接受:引申意思就是接受检查,所以检查完了也就完了——即不再继续检查了
ROS解释就是,当符合条件后就不再执行下一条检查了——已经算拿到了通行证!
passthrough解释为机器转移归向,通过如果你查一下流体方面的词典,(计算机的网络同样是处理流体的—数据流)你会发现大部分的解释是旁通,其引申意思是不做处理,因此还要继续检查
ROS来解释就是,这个先让它过,但有可能还要接受后面的检查——谁让你走后门,不按规矩拿通行证呢!

reject拒绝, 抵制, 否决, 呕出, 驳回, 丢弃
drop使结束, 不再讨论, 停止与(某人)交往
这两个一起讨论,当你追一个MM失败的时候通常就有两种情况:
第1种、对方立刻说:“不行,我有男朋友了,而且下月就结婚”,哈哈,你仍有非常渺茫的希望
第2种、对方干脆连理都懒得理你,这表示你根本没戏!
ROS的解释:

reject拒绝, 抵制, 否决, 驳回,相当于第1种情况,明确告诉你,另选名花吧,ROS是通过ICMP消息通知被拒绝的
drop使结束, 不再讨论, 相当于第2种情况,没有明确通知,不理你,就看你的自知之名了。。。哈哈
虽然都是将包丢弃,但态度是不一样的,前者通常用于对完全控制的内部网络,如企业中,可以以这种方式通知分公司的管理员,这样的网络访问是公司规定禁止的。
而后者针对的是不可预知的网络,尤其是黑客机器的包,如果漠不作声,对方就有可能不会发现你的存在,从而不会产生非分之想了

Mangle:vt.乱砍, 撕裂, 破坏, 毁损, 损坏, 轧布,我理解为:把数据重新修改后包装处理与标记mark-routing
这个词表达的意思是,会对数据包的一些传输特性进行修改,在mangle表中允许的操作是 TOS、TTL、MARK。也就是说,今后只要我们见到这个词能理解它的作用就行了。


另一些小记:
把RoutreOS的服务开与关倒过来:/tool bandwidth-server set enabled=no  


Src-address 与 dst-address in-interface 与out-interface 解释与实际应用区别
说明:映射与数据流是同一方向时,禁止Action=Drop才算生效!
src-address  发送数据的IP地址/或数据将出发的IP地址
dst-address  接收数据的IP地址/或数据将到达的IP地址
in-interface  进入的网卡    out-interface 出去的网卡
测试环境:内网机器号为192.168.0.6,然后从此机器ping 61.144.56.101,与radmin外网访问内网0.6
          外网Home机器是VPN拨入,并远程radmin  0.6号机。

一.当src-address=192.168.0.6,选择in与out和选择nei与wai将产生的情况如下:

2. src-address=192.168.0.6     in-interface=nei         ping断     radmin断
ip firewall filter add chain=forward src-address=192.168.0.6 in-interface=nei action=drop


2. src-address=192.168.0.6     in-interface=wai        ping通
ip firewall filter add chain=forward src-address=192.168.0.6 in-interface=wai action=drop


3. src-address=192.168.0.6       out-interface=nei       ping通            radmin通
ip firewall filter add chain=forward src-address=192.168.0.6 out-interface=nei action=drop


Src-address 与 dst-address in-interface 与out-interface 解释与实际应用区别
4. src-address=192.168.0.6        out-interface=wai       ping断          radmin通
ip firewall filter add chain=forward src-address=192.168.0.6 out-interface=wai action=drop



二.当DST-address=192.168.0.6,选择in与out和选择nei与wai将产生的情况如下:

1 . dst-address=192.168.0.6        in-interface=nei        ping通
ip firewall filter add chain=forward dst-address=192.168.0.6 in-interface=nei action=drop


2. dst-address=192.168.0.6      in-interface=wai       ping断        radmin通
ip firewall filter add chain=forward dst-address=192.168.0.6 in-interface=wai action=drop

Src-address 与 dst-address in-interface 与out-interface 解释与实际应用区别


3. dst-address=192.168.0.6      out-interface=nei       ping断        radmin断
ip firewall filter add chain=forward dst-address=192.168.0.6 out-interface=nei action=drop


4. dst-address=192.168.0.6      out-interface=wai        ping 通     radmin 通
ip firewall filter add chain=forward dst-address=192.168.0.6 out-interface=waii action=drop


最后总结:箭头方向如果到达同一位置,即ping与radmin都不通。




理解input、output、forward与禁止ping
我喜欢routeros的一个理由是,routeros防火墙功能非常灵活。routeros防火墙属于包过滤防火墙,你可以定义一系列的规则过滤掉发往routeros、从routeros发出、通过routeros转发的数据包。在routeros防火墙中定义了三个防火墙(过滤)链(即input、forward、output),你可以在这三个链当中定义你自己的规则。其中input意思是指发往routeros自己的数据(也就是目的ip是routeros接口中的一个ip地址);output意思是指从routeros发出去的数据(也就是数据包源ip是routeros接口中的一个ip地址);forward意思是指通过routeros转发的(比如你内部计算机访问外部网络,数据需要通过你的routeros进行转发出去)。
  象“[分享]ROS禁止PING 方法”贴子中说到禁止ping routeros,我们一般需要在input链中添加规则,因为数据包是发给routeros的,数据包的目标ip是routeros的一个接口ip地址。
(当然如果你硬是要在output里建立一条规则过滤掉icmp信息也能做到ping不通,当你ping的数据包到达routeos时,routeos能接收这个数据包并做出回应,当routeros回应给你的包要发出去的时候会检查output的规则并过滤掉回应你的包。)
  在每条链中的每条规则都有目标ip,源ip,进入的接口(in interface),非常灵活的去建立规则。比如“[分享]ROS禁止PING 方法”中禁止外网ping你routeros,只需要在in interface中选择你连外部网络的接口。禁止内部ping的话可以选择连你内部网络的接口。如果禁止所有的ping的话,那么接口选择all。当然禁止ping 协议要选择icmp ,action选择drop或reject。
另外要注意的就是,icmp协议并不是就指的是ping,而是 ping是使用icmp协议中的一种(我们ping 出去发送的数据包icmp协议的类型为8 代码为0,在routeros中写为icmp-options=8:0;而我们对ping做出回应icmp类型为0 代码为0),还有很多东西也属于icmp协议。打个比方,如果你禁止内部网络ping所有外部网络,可以在forward链中建立一条规则,协议为icmp,action为drop,其他默认,那么你内部网络ping不通外部任何地址,同时如果你用trancroute命令跟踪路由也跟踪不了。在做规则是要注意每一个细节。
  还有就是,input,output,forward三条链在routeros中默认都是允许所有的数据。也就是除非你在规则中明确禁止,否则允许。可以通过ip firewall set input policy=drop等进行修改默认策略。




NAT解释:
NAT 中文为网络地址转换。最常见的应用有s-nat(源地址nat)和d-nat(目标地址nat),说白了s-nat就是我们用得最多的共享上网功能,d-nat我们常用的是针对内网有对外公布的服务器,如web服务器,就是我们常说的端口地址映射了。
至于路由表,就是根据路由表的内容选定数据包的走向。

  
  
    NAT英文全称是“Network Address Translation”,中文意思是“网络地址转换”,它是一个IETF(Internet Engineering Task Force, Internet工程任务组)标准,允许一个整体机构以一个公用IP(Internet Protocol)地址出现在Internet上。顾名思义,它是一种把内部私有网络地址(IP地址)翻译成合法网络IP地址的技术。如图


    简单的说,NAT就是在局域网内部网络中使用内部地址,而当内部节点要与外部网络进行通讯时,就在网关(可以理解为出口,打个比方就像院子的门一样)处,将内部地址替换成公用地址,从而在外部公网(internet)上正常使用,NAT可以使多台计算机共享Internet连接,这一功能很好地解决了公共IP地址紧缺的问题。通过这种方法,您可以只申请一个合法IP地址,就把整个局域网中的计算机接入Internet中。这时,NAT屏蔽了内部网络,所有内部网计算机对于公共网络来说是不可见的,而内部网计算机用户通常不会意识到NAT的存在。如图2所示。这里提到的内部地址,是指在内部网络中分配给节点的私有IP地址,这个地址只能在内部网络中使用,不能被路由(一种网络技术,可以实现不同路径转发)。虽然内部地址可以随机挑选,但是通常使用的是下面的地址:10.0.0.0~10.255.255.255,172.16.0.0~172.16.255.255,192.168.0.0~192.168.255.255。NAT将这些无法在互联网上使用的保留IP地址翻译成可以在互联网上使用的合法IP地址。而全局地址,是指合法的IP地址,它是由NIC(网络信息中心)或者ISP(网络服务提供商)分配的地址,对外代表一个或多个内部局部地址,是全球统一的可寻址的地址。


    NAT功能通常被集成到路由器、防火墙、ISDN路由器或者单独的NAT设备中。比如Cisco路由器中已经加入这一功能,网络管理员只需在路由器的IOS中设置NAT功能,就可以实现对内部网络的屏蔽。再比如防火墙将WEB Server的内部地址192.168.1.1映射为外部地址202.96.23.11,外部访问202.96.23.11地址实际上就是访问访问192.168.1.1。另外资金有限的小型企业来说,现在通过软件也可以实现这一功能。Windows 98 SE、Windows 2000 都包含了这一功能。
    NAT技术类型
    NAT有三种类型:静态NAT(Static NAT)、动态地址NAT(Pooled NAT)、网络地址端口转换NAPT(Port-Level NAT)。
    其中静态NAT设置起来最为简单和最容易实现的一种,内部网络中的每个主机都被永久映射成外部网络中的某个合法的地址。而动态地址NAT则是在外部网络中定义了一系列的合法地址,采用动态分配的方法映射到内部网络。NAPT则是把内部地址映射到外部网络的一个IP地址的不同端口上。根据不同的需要,三种NAT方案各有利弊。
    动态地址NAT只是转换IP地址,它为每一个内部的IP地址分配一个临时的外部IP地址,主要应用于拨号,对于频繁的远程联接也可以采用动态NAT。当远程用户联接上之后,动态地址NAT就会分配给他一个IP地址,用户断开时,这个IP地址就会被释放而留待以后使用。
    网络地址端口转换NAPT(Network Address Port Translation)是人们比较熟悉的一种转换方式。NAPT普遍应用于接入设备中,它可以将中小型的网络隐藏在一个合法的IP地址后面。NAPT与动态地址NAT不同,它将内部连接映射到外部网络中的一个单独的IP地址上,同时在该地址上加上一个由NAT设备选定的TCP端口号。
    在Internet中使用NAPT时,所有不同的信息流看起来好像来源于同一个IP地址。这个优点在小型办公室内非常实用,通过从ISP处申请的一个IP地址,将多个连接通过NAPT接入Internet。实际上,许多SOHO远程访问设备支持基于PPP的动态IP地址。这样,ISP甚至不需要支持NAPT,就可以做到多个内部IP地址共用一个外部IP地址上Internet,虽然这样会导致信道的一定拥塞,但考虑到节省的ISP上网费用和易管理的特点,用NAPT还是很值得的。




ICMP和IGMP 的简介

internet控制消息协议ICMP是用于报告错误并代表IP对消息进行控制。

IP运用互联组管理协议IGMP来告诉路由器,某一网络上指导组中的可用主机。

ICMP

ICMP源抑制消息:当TCP/IP主机发送数据到另一主机时,如果速度达到路由器或者链路的饱和状态,路由器发出一个ICMP源抑制消息。

ICMP数据包结构

类型:一个8位类型字段,表示ICMP数据包类型。

代码:一个8位代码域,表示指定类型中的一个功能。如果一个类型中只有一种功能,代码域置为0。

检验和:数据包中ICMP部分上的一个16位检验和。

指定类型的数据随每个ICMP类型变化的一个附加数据。

IGMP

IGMP信息传给别的路由器以使每个支持多路广播的路由器获知哪个主机组和哪个网络中。

IGMP包结构

版本:IGMP的版本,值一般为0x1h。

类型:IGMP消息的类型。0x1h类型称为主机成员请求,在多路广播路由器上用于指定多级组中的任何成员轮询一个网络。0x2h类型称为主机成员报告,在主机上用于发布指定组中的成员情况或对一个路由器的主机成员请求进行回答。

未用:未用的域名被发送者置零且被接收者忽略。

检验和:IGMP头的一个16位检验和。

组地址:主机用该组地址在一个主机成员请求中存储IP多路广播地址。在主机成员请求中,组地址被全置零,而且硬件级的多路广播地址被用来标示主机组。



什么是ICMP协议

对TCP/IP协议你一定非常熟悉,但是对ICMP协议你可能就一无所知了。ICMP协议是一个非常重要的协议,它对于网络安全具有极其重要的意义。下面我们就来谈谈ICMP协议。
 什么是ICMP协议


  ICMP是“Internet Control Message Protocol”(Internet控制消息协议)的缩写。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

  我们在网络中经常会使用到ICMP协议,只不过我们觉察不到而已。比如我们经常使用的用于检查网络通不通的Ping命令,这个“Ping”的过程实际上就是ICMP协议工作的过程。还有其他的网络命令如跟踪路由的Tracert命令也是基于ICMP协议的。


  ICMP的重要性


  ICMP协议对于网络安全具有极其重要的意义。ICMP协议本身的特点决定了它非常容易被用于攻击网络上的路由器和主机。例如,在1999年8月海信集团“悬赏”50万元人民币测试防火墙的过程中,其防火墙遭受到的ICMP攻击达334050次之多,占整个攻击总数的90%以上!可见,ICMP的重要性绝不可以忽视!

  比如,可以利用操作系统规定的ICMP数据包最大尺寸不超过64KB这一规定,向主机发起“Ping of Death”(死亡之Ping)攻击。“Ping of Death” 攻击的原理是:如果ICMP数据包的尺寸超过64KB上限时,主机就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使主机死机。

  此外,向目标主机长时间、连续、大量地发送ICMP数据包,也会最终使系统瘫痪。大量的ICMP数据包会形成“ICMP风暴”,使得目标主机耗费大量的CPU资源处理,疲于奔命。


  应对ICMP攻击


  虽然ICMP协议给黑客以可乘之机,但是ICMP攻击也并非无药可医。只要在日常网络管理中未雨绸缪,提前做好准备,就可以有效地避免ICMP攻击造成的损失。
对于“Ping of Death”攻击,可以采取两种方法进行防范:第一种方法是在路由器上对ICMP数据包进行带宽限制,将ICMP占用的带宽控制在一定的范围内,这样即使有ICMP攻击,它所占用的带宽也是非常有限的,对整个网络的影响非常少;第二种方法就是在主机上设置ICMP数据包的处理规则,最好是设定拒绝所有的ICMP数据包。

  设置ICMP数据包处理规则的方法也有两种,一种是在操作系统上设置包过滤,另一种是在主机上安装防火墙。具体设置如下:

  1.在Windows 2000 Server中设置ICMP过滤

  Windows 2000 Server提供了“路由与远程访问”服务,但是默认情况下是没有启动的,因此首先要启动它:点击“管理工具”中的“路由与远程访问”,启动设置向导。在其中选择“手动配置服务器”项,点击[下一步]按钮。稍等片刻后,系统会提示“路由和远程访问服务现在已被安装。要开始服务吗?”,点击[是]按钮启动服务。

  服务启动后,在计算机名称的分支下会出现一个“IP路由选择”,点击它展开分支,再点击“常规”,会在右边出现服务器中的网络连接(即网卡)。用鼠标右键点击你要配置的网络连接,在弹出的菜单中点击“属性”,会弹出一个网络连接属性的窗口,如图1所示。

  图1中有两个按钮,一个是“输入筛选器”(指对此服务器接受的数据包进行筛选),另一个是“输出筛选器”(指对此服务器发送的数据包进行筛选),这里应该点击[输入筛选器] 按钮,会弹出一个“添加筛选器”窗口,再点击[添加]按钮,表示要增加一个筛选条件。

  在“协议”右边的下拉列表中选择“ICMP”,在随后出现的“ICMP类型”和“ICMP编码”中均输入“255”,代表所有的ICMP类型及其编码。ICMP有许多不同的类型(Ping就是一种类型),每种类型也有许多不同的状态,用不同的“编码”来表示。因为其类型和编码很复杂,这里不再叙述。

  点击[确定]按钮返回“输入筛选器”窗口,此时会发现“筛选器”列表中多了一项内容(如图2所示)。点击[确定]按钮返回“本地连接”窗口,再点击[确定]按钮,此时筛选器就生效了,从其他计算机上Ping这台主机就不会成功了。

  2. 用防火墙设置ICMP过滤

  现在许多防火墙在默认情况下都启用了ICMP过滤的功能。如果没有启用,只要选中“防御ICMP攻击”、“防止别人用ping命令探测”就可以了,如图3所示。
  通过以上讲解,你现在知道ICMP的重要性了吧?赶紧给你的服务器设置ICMP过滤吧。




[ARP预防]   IP-MAC本机和网关通用批处理
@echo off
::::::::::::::::::::::::::::::::::::::::::::::::::::
:: 本机以及网关IP和MAC地址绑定批处理程序 ::
:: 说明:此方法治标不治本,要想根本解决ARP请 ::
:: 采用路由和本机实现双向绑定 ::
::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::读取本机Mac地址
if exist ipconfig.txt del ipconfig.txt
ipconfig /all >c:\ipconfig.txt
if exist phyaddr.txt del phyaddr.txt
find "Physical Address" ipconfig.txt >c:\phyaddr.txt
for /f "skip=2 tokens=12" %%M in (phyaddr.txt) do set Mac=%%M
:::::::::读取本机ip地址
if exist IPAddr.txt del IPaddr.txt
find "IP Address" ipconfig.txt >c:\IPAddr.txt
for /f "skip=2 tokens=15" %%I in (IPAddr.txt) do set IP=%%I
:::::::::绑定本机IP地址和MAC地址
arp -s %IP% %Mac%
:::::::::读取网关地址
if exist GateIP.txt del GateIP.txt
find "Default Gateway" ipconfig.txt >c:\GateIP.txt
for /f "skip=2 tokens=13" %%G in (GateIP.txt) do set GateIP=%%G
:::::::::读取网关Mac地址
if exist GateMac.txt del GateMac.txt
arp -a %GateIP% >c:\GateMac.txt
for /f "skip=3 tokens=2" %%H in (GateMac.txt) do set GateMac=%%H
:::::::::绑定网关Mac和IP
arp -s %GateIP% %GateMac%
exit




IP Masquerade
它是linux提供的一种网络功能,最大的好处是:通过一个合法的IP,
把一些没有正式IP的机器连到网上,如:通过一台linux机器拨号上网,
而把整个局域网带入internet。
比如一个局域网 192.168.100.0,其上有一linux机器192.168.100.10,
拨号上网后,通过以下指令即可实现IP Masquerade




SYN:
TCP连接的第一个包,非常小的一种数据包。SYN 攻击包括大量此类的包,由于这些包看上去来自实际不存在的站点,因此无法有效进行处理。每个机器的欺骗包都要花几秒钟进行尝试方可放弃提供正常响应。

在黑客攻击事件中,SYN攻击是最常见又最容易被利用的一种攻击手法。

SYN攻击属于DOS攻击的一种,它利用TCP协议缺陷,通过发送大量的半连接请求,耗费CPU和内存资源。SYN攻击除了能影响主机外,还可以危害路由器、防火墙等网络系统,事实上SYN攻击并不管目标是什么系统,只要这些系统打开TCP服务就可以实施。从上图可看到,服务器接收到连接请求(syn= j),将此信息加入未连接队列,并发送请求包给客户(syn=k,ack=j+1),此时进入SYN_RECV状态。当服务器未收到客户端的确认包时,重发请求包,一直到超时,才将此条目从未连接队列删除。配合IP欺骗,SYN攻击能达到很好的效果,通常,客户端在短时间内伪造大量不存在的IP地址,向服务器不断地发送syn包,服务器回复确认包,并等待客户的确认,由于源地址是不存在的,服务器需要不断的重发直至超时,这些伪造的SYN包将长时间占用未连接队列,正常的SYN请求被丢弃,目标系统运行缓慢,严重者引起网络堵塞甚至系统瘫痪。

关于SYN攻击防范技术,人们研究得比较早。归纳起来,主要有两大类,一类是通过防火墙、路由器等过滤网关防护,另一类是通过加固TCP/IP协议栈防范.但必须清楚的是,SYN攻击不能完全被阻止,我们所做的是尽可能的减轻SYN攻击的危害,除非将TCP协议重新设计。




1、TCP/IP的基本原理
  本文的重点虽然是根据实例来解析TCP/IP,但要讲明白下面的过程必须简要讲一下TCP/IP的基本原理。
  1)网络是分层的,每一层分别负责不同的通信功能。
  TCP/IP通常被认为是一个四层协议系统,TCP/IP协议族是一组不同的协议组合在一起构成的协议族。尽管通常称该协议族为TCP/IP,但TCP和IP只是其中的两种协议而已,如表1所示。每一层负责不同的功能:
TCP/IP层描述    主要协议    主要功能
应用层    HTTP、Telnet、FTP和E-mail等
负责把数据传输到传输层或接收从传输层返回的数据
传输层    TCP和UPD    主要为两台主机上的应用程序提供端到端的通信,TCP为两台主机提供可靠的数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。UPD则为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据能到达另一端。
网络层    ICMP、IP和IGMP    有时称作互联网层,主要为数据包选择路由,其中IP是TCP/IP协议族中最为核心的协议。所有的TCP、UPD、ICMP及IGMP数据协议都以IP数据包格式传输。
链路层    ARP、RARP和设备驱动程序及接口卡    发送时将IP包作为帧发送;接收时把接收到的位组装成帧;提供链路管理、错误检测等。
表1
  分层的概念说起来非常简单,但在实际的应用中非常的重要,在进行网络设置和排除故障时对网络层次理解得很透,将对工作有很大的帮助。例如:设置路由是网络层IP协议的事,要查找MAC地址是链路层ARP的事,常用的Ping命令由ICMP协议来做的。
  图5显示了各层协议的关系,理解它们之间的关系对下面的协议分析非常重要。





TCP/IP模型中的网络和协议(图解)
2007-06-09 17:26
传输层定义了两个端到端的协议:TCP和UDP。
TCP(Transmission Control Protocol)传输控制协议,它将输入的字节流分成报文段并传给Internet层。TCP还要处理流量控制,以避免快速发送方向低速接收方发送过多的报文而使接收方无法处理。
UDP(User Datagram Protocol)用户数据报协议,它是一个不可靠的、无连接的协议,用于不需要TCP排序和流量控制能力而是自己完成这些功能的应用程序。

高层协议:
TELNET(虚拟终端协议):允许一台机器上的用户等录到远程机器上并且进行工作。
FTP(文件传输协议):提供有效的将数据从一台机器上移动到另一台机器上的方法。
SMTP(电子邮件协议):发送E-MAIL。
DNS(域名系统服务):用于把主机名映射到网络地址。
HTTP(超文本传输协议):用于在万维网上获得主页。





udp,icmp协议格式
UDP 協定
UDP 的全名是:『User Datagram Protocol, 用戶資料流協定』,UDP 與 TCP 不一樣, UDP 不提供可靠的傳輸模式,因為他不是連線導向的一個機制,這是因為在 UDP 的傳送過程中,接受端在接受到封包之後,不會回覆回應封包 ( ACK ) 給發送端,所以封包並沒有像 TCP 封包有較為嚴密的驗證機制。至於 UDP 的表頭資料如下表所示:
16 bytes    16 bytes
Source Port    Destination Port
Message Length    Checksum
Data
圖十四、UDP 封包的表頭資料

TCP 封包確實是比較可靠的,因為通過三向交握嘛!不過,也由於三向交握的緣故, TCP 封包的傳輸速度會較慢。 至於 UDP 封包由於不需要確認對方是否有正確的收到資料,故表頭資料較少,也因為如此所以 UDP 就可以在 Data 處填入更多的資料了。同時 UDP 比較適合需要即時反應的一些資料流,例如即時通訊軟體或者是影像即時傳送軟體等, 就可以使用這類的封包傳送說。也就是說, UDP 傳輸協定並不考慮連線要求、連線終止與流量控制等特性, 所以使用的時機是當資料的正確性不很重要時,例如上面提到的即時通訊軟體啊!

另外,很多的軟體其實是同時提供 TCP 與 UDP 的傳輸協定的,舉例來說,查詢主機名稱的 DNS 服務就同時提供了 UDP/TCP 協定。由於 UDP 較為快速,所以我們 client 端可以先使用 UDP 來與伺服器連線。 但是當使用 UDP 連線卻還是無法取得正確的資料時,便轉換為較為可靠的 TCP 傳輸協定來進行資料的傳輸囉。 這樣可以同時兼顧快速與可靠的傳輸說!
ICMP 協定
ICMP 的全稱是『 Internet Control Message Protocol, 網際網路訊息控制協定 』。 基本上,ICMP 是一個錯誤偵測與回報的機制,最大的功能就是可以確保我們網路的連線狀態與連線的正確性! 同樣的,ICMP 封包也是必須要裝在 IP 封包的 Data 內才行喔! 因為在 Internet 上面有傳輸能力的就是 IP 封包啦! ICMP 有相當多的類別可以偵測與回報,底下是比較常見的幾個 ICMP 的類別 (Type):
類別代號    類別名稱與意義
0    Echo Reply (代表一個回應信息)
3    Distination Unreachable (表示目的地不可到達)
4    Source Quench (當 router 的負載過高時,此類別碼可用來讓發送端停止發送訊息)
5    Redirect (用來重新導向路由路徑的資訊)
8    Echo Request (請求回應訊息)
11    Time Exceeded for a Datagram (當資料封包在某些路由傳送的現象中造成逾時狀態,此類別碼可告知來源該封包已被忽略的訊息)
12    Parameter Problem on a Datagram (當一個 ICMP 封包重複之前的錯誤時,會回覆來源主機關於參數錯誤的訊息)
13    Timestamp Request (要求對方送出時間訊息,用以計算路由時間的差異,以滿足同步性協定的要求)
14    Timestamp Replay (此訊息純粹是回應 Timestamp Request 用的)
15    Information Request (在 RARP 協定應用之前,此訊息是用來在開機時取得網路信息)
16    Information Reply (用以回應 Infromation Request 訊息)
17    Address Mask Request (這訊息是用來查詢子網路 mask 設定信息)
18    Address Mask Reply (回應子網路 mask 查詢訊息的)

那麼我們是如何利用 ICMP 來檢驗網路的狀態呢?最簡單的指令就是 ping 與 traceroute 了, 這兩個指令可以透過 ICMP 封包的輔助來確認與回報網路主機的狀態。在設定防火牆的時候, 我們最容易忽略的就是這個 ICMP 的封包了,因為只會記住 TCP/UDP 而已~事實上, ICMP 封包可以幫助連線的狀態回報,除了上述的 8 可以考慮關閉之外,基本上, ICMP 封包也不應該全部都擋掉喔!






关TCP MSS值
中低端路由器tcp mss的实现原理为何经常要在内网口和外网口都要配置tcp mss 值呢?

PC1(192.168.0.1)―――Router――――Internet―――-www server(238.135.1.1)

建立tcp连接的两端在三次握手时会协商tcp mss大小,具体如下:
pc1发出syn报文,其中option选项填充的mss字段一般为1460,同样www server收到syn报文后,会发送syn+ack报文应答,option选项填充的mss字段也为1460;协商双方会比较syn和syn+ack报文中mss字段大小,选择较小的mss作为发送tcp分片的大小。通过比较,协商双方的tcp mss都是1460。

对于涉及mpls l3vpn、pppoe+nat、ipsec、l2tp、gre等组网,通常由于报文太大需要分片,一般可以通过设置tcp mss解决。

针对上例说明tcp mss如何实现
1、
假设在路由器内网口配置tcp mss 1200
a)
路由器收到www server的syn+ack报文时会修改option选项中的mss字段为1200,然后再转发给PC1,PC1收到报文后认为对端的tcp mss为1200,这样PC1发送数据给www server时会以1200作为分片大小;但路由器修改tcp mss为1200的操作www server是不知道的,因此www server还会以1460作为分片大小发送报文。

2、
假设再路由器外网口配置tcp mss 1200
a)
路由器收到PC1的syn报文时会修改option选项中的mss字段为1200,然后再转发给www server,同样www server发送数据给PC1时会以1200作为分片大小;同样PC1不知道路由器修改tcp mss为1200,因为PC1还会以1460作为分片大小发送报文。

3、
因此在实现双向大包传输时需要在内外网同时修改tcp mss

综上所述:在路由器接口上配置的tcp mss命令仅对出接口方向的syn报文和syn+ack报文有效,对于入接口方向的syn和syn+ack报文无效。



关于MTU和MRU还有tcp mss的解释说明
MSS:是最大段单元大小(Maximum Segment Size)的缩写。最大报文段长度(
M S S)表示T C P传往另一端的最大块数据的长度。当一个连接建立时,连接的双方都要通告各自的M S S。它是一个可“协商”选项,当建立一个连接时,每一方都有用于通告它期望接收的M S S选项(M S S选项只能出现在S Y N报文段中)。一般说来,如果没有分段发生,% l; w: w- @+ f
M S S还是越大越好。报文段越大允许每个报文段传送的数据就越多,相对I P和T C P首部有更高的网络利用率。当T C P发送一个S Y N时,或者是因为一个本地应用进程想发起一个连接,或者是因为另一端的主机收到了一个连接请求,它能将M S S值设置为外出接口上的M T U长度减去固定的I P首部和T C P首部长度。对于一个以太网,
M S S值可达1 4 6 0字节。
MTU是以太网里的术语,它是数据链路层的一个参数,最大为1500,如果有报文载荷(不包括以太网封装,一般是数据大小加上协议头部,比如PING1472大小的报文,则载荷部分为1472 数据大小+20 IP头+8 ICMP头=1500字节,下同)大于MTU,那么这个报文在传送时就会被分片;MRU是PPP里的术语,它是数据链路层的一个参数,是在PPP链路建立的时候协商的,如果PPP链路一端设备需要发送的报文载荷大于对端的MRU,这个报文在传送时就会被分片;MSS是TCP里的术语,它是网络层的参数,是在TCP联接建立时协商的,在使用TCP传送数据时,如果数据长度大于MSS的值,数据就会被分成几个报文发送,注意:这和报文分片是不一样的,报文分片后只有第一个报文包含有报文详细的协议和端口等信息,而后面的每片只包含有IP头部及数据,和第一个报文有相同的报文ID




网络管理之TCP/UDP篇

我们学习过什么是“数据包”。理解数据包,对于网络管理的网络安全具有至关重要的意义。比如,防火墙的作用本质就是检测网络中的数据包,判断其是否违反了预先设置的规则,如果违反就加以阻止。图1就是瑞星个人版防火墙软件设置规则的界面。细心的读者会发现,图1中的“协议”栏中有“TCP”、“UDP”等名词,它们是什么意思呢?现在我们就来讲讲什么是TCP和UDP。
  面向连接的TCP
  “面向连接”就是在正式通信前必须要与对方建立起连接。比如你给别人打电话,必须等线路接通了、对方拿起话筒才能相互通话。
    图1

  TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,我们这里只做简单、形象的介绍,你只要做到能够理解这个过程即可。我们来看看这三次对话的简单过程:主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:“可以,你什么时候发?”,这是第二次对话;主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着吧!”,这是第三次对话。三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。

TCP协议能为应用程序提供可靠的通信连接,使一台计算机发出的字节流无差错地发往网络上的其他计算机,对可靠性要求高的数据通信系统往往使用TCP协议传输数据。
图2
我们来做一个实验,用计算机A(安装Windows 2000 Server操作系统)从“网上邻居”上的一台计算机B拷贝大小为8,644,608字节的文件,通过状态栏右下角网卡的发送和接收指标就会发现:虽然是数据流是由计算机B流向计算机A,但是计算机A仍发送了3,456个数据包,如图2所示。这些数据包是怎样产生的呢?因为文件传输时使用了TCP/IP协议,更确切地说是使用了面向连接的TCP协议,计算机A接收数据包的时候,要向计算机B回发数据包,所以也产生了一些通信量。

                                      图3
如果事先用网络监视器监视网络流量,就会发现由此产生的数据流量是9,478,819字节,比文件大小多出10.96%(如图3所示),原因不仅在于数据包和帧本身占用了一些空间,而且也在于TCP协议面向连接的特性导致了一些额外的通信量的产生。
  面向非连接的UDP协议
  “面向非连接”就是在正式通信前不必与对方先建立连接,不管对方状态就直接发送。这与现在风行的手机短信非常相似:你在发短信的时候,只需要输入对方手机号就OK了。
  UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!
                                                图4
UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。比如,我们经常使用“ping”命令来测试两台主机之间TCP/IP通信是否正常,其实“ping”命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的。例如,在默认状态下,一次“ping”操作发送4个数据包(如图2所示)。大家可以看到,发送的数据包数量是4包,收到的也是4包(因为对方主机收到后会发回一个确认收到的数据包)。这充分说明了UDP协议是面向非连接的协议,没有建立连接的过程。正因为UDP协议没有连接的过程,所以它的通信效果高;但也正因为如此,它的可靠性不如TCP协议高。QQ就使用UDP发消息,因此有时会出现收不到消息的情况。

附表:tcp协议和udp协议的差别
  TCP协议和UDP协议各有所长、各有所短,适用于不同要求的通信环境。TCP协议和UDP协议之间的差别如附表所示。




概要介绍ICMP、TCP及UDP 三种高级扫描技术及原理

是一切入侵的基础,扫描探测一台主机包括是为了确定主机是否活动、主机系统、正在使用哪些端口、提供了哪些服务、相关服务的软件版本等等,对这

些内容的探测就是为了“对症下药”。对主机的探测工具非常多,比如大名鼎鼎的nmap、netcat、superscan,以及国内的X-Scanner 等等。

ICMP协议——PING是最常用的,也是最简单的探测手段,用来判断目标是否活动。实际上Ping是向目标发送一个要求回显(Type = 8)的ICMP数据报,当主机得

到请求后,再返回一个回显(Type = 0)数据报。而且Ping 程序一般是直接实现在系统内核中的,而不是一个用户进程。Ping是最基本的探测手段,Ping Sweep

(Ping扫射)就是对一个网段进行大范围的Ping,由此确定这个网段的网络运作情况,比如著名的fping工具就是进行Ping扫射的。

不过现在连基本的个人防火墙都对Ping做了限制,这个也太基本了。如果透过防火墙,如何获得最理想的目标图,也是很多人整天思考的问题。我们这里介绍的

一些扫描技术就是要尽可能地绕过一些安全防护设备,并且尽量保护自己,同时达到我们需要的目的。

一、高级ICMP扫描技术

Ping就是利用ICMP协议走的,高级的ICMP扫描技术主要是利用ICMP协议最基本的用途:报错。根据网络协议,如果按照协议出现了错误,那么接收端将产生一个

ICMP的错误报文。这些错误报文并不是主动发送的,而是由于错误,根据协议自动产生。

当IP数据报出现checksum和版本的错误的时候,目标主机将抛弃这个数据报,如果是checksum出现错误,那么路由器就直接丢弃这个数据报了。有些主机比如AIX

、HP-UX等,是不会发送ICMP的Unreachable数据报的。

我们利用下面这些特性:

1、向目标主机发送一个只有IP头的IP数据包,目标将返回Destination Unreachable的ICMP错误报文。

2、向目标主机发送一个坏IP数据报,比如,不正确的IP头长度,目标主机将返回Parameter Problem的ICMP错误报文。

3、当数据包分片但是,却没有给接收端足够的分片,接收端分片组装超时会发送分片组装超时的ICMP数据报。

向目标主机发送一个IP数据报,但是协议项是错误的,比如协议项不可用,那么目标将返回Destination Unreachable的ICMP报文,但是如果是在目标主机前有一

个防火墙或者一个其他的过滤装置,可能过滤掉提出的要求,从而接收不到任何回应。可以使用一个非常大的协议数字来作为IP头部的协议内容,而且这个协议

数字至少在今天还没有被使用,应该主机一定会返回Unreachable,如果没有 Unreachable的ICMP数据报返回错误提示,那么就说明被防火墙或者其他设备过滤了

,我们也可以用这个办法来探测是否有防火墙或者其他过滤设备存在。

利用IP的协议项来探测主机正在使用哪些协议,我们可以把IP头的协议项改变,因为是8位的,有256种可能。通过目标返回的ICMP错误报文,来作判断哪些协议

在使用。如果返回Destination Unreachable,那么主机是没有使用这个协议的,相反,如果什么都没有返回的话,主机可能使用这个协议,但是也可能是防火墙

等过滤掉了。NMAP 的IP Protocol scan也就是利用这个原理。

利用IP分片造成组装超时ICMP错误消息,同样可以来达到我们的探测目的。当主机接收到丢失分片的数据报,并且在一定时间内没有接收到丢失的数据报,就会

丢弃整个包,并且发送ICMP分片组装超时错误给原发送端。我们可以利用这个特性制造分片的数据包,然后等待ICMP组装超时错误消息。可以对UDP分片,也可以

对TCP甚至ICMP数据包进行分片,只要不让目标主机获得完整的数据包就行了,当然,对于UDP这种非连接的不可靠协议来说,如果我们没有接收到超时错误的

ICMP返回报,也有可能时由于线路或者其他问题在传输过程中丢失了。

我们能够利用上面这些特性来得到防火墙的ACL(access list),甚至用这些特性来获得整个网络拓扑结构。如果我们不能从目标得到Unreachable报文或者分片

组装超时错误报文,可以作下面的判断:

1、防火墙过滤了我们发送的协议类型

2、防火墙过滤了我们指定的端口

3、防火墙阻塞ICMP的Destination Unreachable或者Protocol Unreachable错误消息。

4、防火墙对我们指定的主机进行了ICMP错误报文的阻塞。

二、高级TCP扫描技术

最基本的利用TCP扫描就是使用connect(),这个很容易实现,如果目标主机能够connect,就说明一个相应的端口打开。不过,这也是最原始和最先被防护工具拒

绝的一种。

在高级的TCP扫描技术中主要利用TCP连接的三次握手特性和TCP数据头中的标志位来进行,也就是所谓的半开扫描。

先认识一下TCP数据报头的这六个标志位。

URG:(Urgent Pointer field significant)紧急指针。用到的时候值为1,用来处理避免TCP数据流中断

ACK:(Acknowledgment field significant)置1时表示确认号(Acknowledgment Number)为合法,为0的时候表示数据段不包含确认信息,确认号被忽略。

PSH:(Push Function),PUSH标志的数据,置1时请求的数据段在接收方得到后就可直接送到应用程序,而不必等到缓冲区满时才传送。

RST:(Reset the connection)用于复位因某种原因引起出现的错误连接,也用来拒绝非法数据和请求。如果接收到RST位时候,通常发生了某些错误。

SYN:(Synchronize sequence numbers)用来建立连接,在连接请求中,SYN=1,ACK=0,连接响应时, SYN=1,ACK=1。即,SYN和ACK来区分Connection  

Request和Connection Accepted。

FIN:(No more data from sender)用来释放连接,表明发送方已经没有数据发送了。

TCP协议连接的三次握手过程是这样的:

首先客户端(请求方)在连接请求中,发送SYN=1,ACK=0的TCP数据包给服务器端(接收请求端),表示要求同服务器端建立一个连接;然后如果服务器端响应这

个连接,就返回一个SYN=1,ACK=1的数据报给客户端,表示服务器端同意这个连接,并要求客户端确认;最后客户端就再发送SYN=0, ACK=1的数据包给服务器端

,表示确认建立连接。

我们就利用这些标志位和TCP协议连接的三次握手特性来进行扫描探测。

SYN 扫描

这种扫描方式也被称为“半打开” 扫描,因为利用了TCP协议连接的第一步,并且没有建立一个完整的TCP连接。

实现办法是向远端主机某端口发送一个只有SYN标志位的TCP数据报,如果主机反馈一个SYN || ACK数据包,那么,这个主机正在监听该端口,如果反馈的是RST数

据包,说明,主机没有监听该端口。在X-Scanner 上就有SYN的选择项。

ACK 扫描

发送一个只有ACK标志的TCP数据报给主机,如果主机反馈一个TCP RST数据报来,那么这个主机是存在的。也可以通过这种技术来确定对方防火墙是否是简单的分

组过滤,还是一个基于状态的防火墙。

FIN

对某端口发送一个TCP FIN数据报给远端主机。如果主机没有任何反馈,那么这个主机是存在的,而且正在监听这个端口;主机反馈一个TCP RST回来,那么说明

该主机是存在的,但是没有监听这个端口。

NULL

即发送一个没有任何标志位的TCP包,根据RFC793,如果目标主机的相应端口是关闭的话,应该发送回一个RST数据包。

FIN+URG+PUSH

向目标主机发送一个Fin、URG和PUSH分组,根据RFC793,如果目标主机的相应端口是关闭的,那么应该返回一个RST标志。

上面这些办法可以绕过一些防火墙,从而得到防火墙后面的主机信息,当然,是在不被欺骗的情况下的。这些方法还有一个好处就是比较难于被记录,有的办法

即使在用netstat命令上也根本显示不出来,而且一般的安全防护设备也根本不记录这些内容,这样能够更好地隐藏自己。

三、高级UDP扫描技术

在UDP实现的扫描中,多是了利用和ICMP进行的组合进行,这在ICMP中以及提及了。还有一些特殊的就是UDP回馈,比如SQL SERVER,对其1434端口发送‘x02’或

者‘x03’就能够探测得到其连接端口。

本文只是作技术方面的探讨,目的是让大家更好的防范来自各方的攻击,确保网络安全。本文不提供任何程序和软件的下载信息




router os 常用命令详解
看了很多router os 的资料都是关于如何安装的,却很少见到关于router os的命令资料(也许因为有winbox了),虽然在router os 的手册中有说明,但是是英文版本的,很不好看懂。下面就我就写出一些常用的命令,希望对大家有所帮助:
1、开机登陆以后常用的一个 ? 是常用的帮助命令,可以列出可用的命令及简单的说明。
    2、有些英文命令很长,可以简写如interface ,你输入in后回车自动就会进入interface了。或者你可以按下tab键来帮你完成长英文命令的输入。
    3、有些命令的参数很多,你不知道的时候可以输入命令后加空格?,如print ?
    可以显示该命令的参数。
    4、setup 该命令可是谁都要记得的,因为最初安装完router os 必须用它分配网卡的ip地址。
    5、ip route add gate=211.12.*.14,220.163.*.12 该命令用于多线路接入时加入多个网关用的。
    6、ip firewall add action=nat protocol=tcp dst-address=212.12.*.*/32:80 to-dst-address=192.168.0.198 该命令用于映射端口80到本地的192.168.0.198上。
    7、print 该命令有点用于列出所有的项目。
    8、interface monitor-traffice 0,1,2 可以监视当前0,1,2网卡的活动情况。
    9、ip firewall connection print 显示当前的所有的连接。
    10、ip arp print 显示所有router os 知道的ip地址和mac地址的对应列表。
    11、user active print 显示所有的router os 的活动用户。
    12、system reboot 、system shutdown分别是重启和关机。
    13、system reset 删除所有原来的配置,并重新启动router os. 14、system resource monitor 可以监视当前的cpu,和内存的使用情况。
    15、log print 可以显示router os 的日志。
    16、tool ping-speed 210.13.14.* 可以显示ping 的速度。
    17、tool sniffer start,和tool sniffer stop 可以开启和停止嗅探器。
    18、tool sniffer packet print 可列出嗅探的包。
    19 、system backup name=2004107.bak 可以将系统的配置备份到文件2004107.bak,可以用file print看到。
    还有什么enable,disable,remove,set 那些常用的就不说了。
    以上是我用了router os接入两个光纤后,常使用的一些命令,发现router os 真是个好东西,所以忍不住写出来,为router os 宣传一下。有很多不成熟的东西,希望大家多原谅。
    具我观察我没设置什么负载均衡,但是两个光纤基本上是收发的包是均衡的,而且很稳定。
Router OS的备份和恢复
1、备份和恢复设置
  绝对是好东东!你想想辛辛苦苦设置好的防火墙规则,网卡设置,各个路由,端口映射万一弄错了或重新安装时,是不是都要重新自已设置?这个巨麻烦!!!但ROUETOS却为你考虑得很周到,可以手工备份你的设置文件,需要时只要一个命令即可恢复!
  大家可以用WINBOX登陆,注意用ADMIN帐号,在左边是不是有个FILES?点开,再点对话框上面的BACKUP,这样就把当前的设置保存一个文件里面了,再用IE登陆你的路由,用ftp://网管帐号:密码@路由IP:端口,登陆到你的路由后就会到你保存的文件了!用IE直接下载吧!
  当你重新安装时,只要把内网弄通,用IE再登陆你的路由,把这个设置文件传上去,在WINBOX左边下面有个TE开头的英文,这是终端模拟,点开后就像在路由上操作一样,用以下命令恢复你以前的设置:
system回车
backup回车
load name=你保存的设置文件名   回车
提示重启就一下子恢复到你以前设置了!!
是不是方便实用啊?
大家可能会说用WINBOX备份不爽,那我们也可以用终端备份呀!
  在WINBOX左边下面有个TE开头的英文,这是终端模拟,点开后就像在路由上操作一样,用以下命令备份你以前的设置:
system回车
backup回车
save name=你保存的设置文件名   回车
  建议文件名用日期表示可以很直观。这样就按你的文件名保存了。
  用LOAD NAME命令就是恢复了。。。]
2、恢复路由本身默认值。
  如果设错了规则或者地址,造成win不能进入管理界面,可以这样复原:
  使用 admin 登陆
system 回车
reset 选择 y
  将删除所有改动,恢复新装的状态
这个是恢复到出厂设置,很适合刚开始设置ROUTEOS时用用!
3、备份ROUTEOS
  可以用GHOST8。0备份,注意是要用全盘备份,DISK TO IMG才行。
4、简单化输入
在ROUTEOS是不是感觉输入命令很麻烦?
其实ROUTEOS可以只要输入前两位字母就可以了。。。
比如上面的命令:
system
backup
这是进入目录的,可以简化成:
sy
ba
即可!很适合一些懒人。。。哈哈
5、检查磁盘
  在路由或终端模拟下用下面命令:
system
check-disk
  检查磁盘,要重启。 但是很慢,一分钟一G。。。哈哈
6、关机
可以在WINBOX中关机,也可以用命令关:
system
sh
  即可。。。不过ROUTEOS关机不太好,像IPCOP可以直接关掉电源。。。ROUTEOS不行。。
  还有,在IP---SERVICE里面可以打开或关闭路由本身各个端口,大家看着办吧,不过强列要求不要关闭WEB端口!!否则你的WINBOX连不上去。。FTP功能可以关掉,再把端口换掉。用的时候打开就行了。
  ROUEOS功能太强大了。。。。绝非普通路由所能比拟的,可以支持VPPP,就是多路由备份,主路由出现问题后可以自动调用备份路由。。。强大。
支持SNMP,可以直接读取SNMP交换机的数据。。。强大。。
RouterOS2.96脚本详解global - 定义全局变量, 可以要所有的脚本中调用共享local - 定义本地变量,只能在其所要的脚本下调用,不能被其它脚本共享loop index variables - 定义在for或foreach里的索引号变量monitor variables - 监视变量ROS算术操作-   负号;相减。!   逻辑非。/   相除。.   连接。两个符串的连接,添加元素到列表^   异或(XOR)
~   取反*   相剩&   与(AND)
&&  逻辑与+   相加<   小于<<  向左位移<=  小于等于>   大于>=  大于等于>>  向右位移|   或||  逻辑或ROS说明书里的例子:计算顺序[admin@MikroTik]> :put (10+1-6*2=11-12=2+(-3)=-1)
false
[admin@MikroTik]> :put (10+1-6*2=11-12=(2+(-3)=-1))
true

逻辑非[admin@MikroTik]> :put (!true)
false
[admin@MikroTik]> :put (!(2>3))
true

数位取反[admin@MikroTik]> :put (~255.255.0.0)
0.0.255.255

加法[admin@MikroTik]> :put (3ms + 5s)
00:00:05.003
[admin@MikroTik]> :put (10.0.0.15 + 0.0.10.0)
cannot add ip address to ip address
[admin@MikroTik]> :put (10.0.0.15 + 10)
10.0.0.25

减法[admin@MikroTik]> :put (15 - 10)
5
[admin@MikroTik]> :put (10.0.0.15 - 10.0.0.3)
12
[admin@MikroTik]> :put (10.0.0.15 - 12)
10.0.0.3
[admin@MikroTik]> :put (15h - 2s)
14:59:58

乘法[admin@MikroTik]> :put (12s * 4)
00:00:48
[admin@MikroTik]> :put (-5 * -2)
10

除法[admin@MikroTik]> :put (10s / 3)
00:00:03.333
[admin@MikroTik]> :put (5 / 2)
2
[admin@MikroTik]> :put (0:0.10 / 3)
00:00:02

比较[admin@MikroTik]> :put (10.0.2.3<=2.0.3.10)
false
[admin@MikroTik]> :put (100000s>27h)
true
[admin@MikroTik]> :put (60s,1d!=1m,3600s)
true
[admin@MikroTik]> :put (bridge=routing)
false
[admin@MikroTik]> :put (yes=false)
false
[admin@MikroTik]> :put (true=aye)
false

逻辑与 AND, 逻辑或 or
[admin@MikroTik]> :put ((yes && yes) || (yes && no))
true
[admin@MikroTik]> :put ((no || no) && (no || yes))
false

数位与AND, 或OR, 异或XOR
[admin@MikroTik]> :put (10.16.0.134 & ~255.255.255.0)
0.0.0.134

位移操作[admin@MikroTik]> :put (~((0.0.0.1 << 7) - 1))
255.255.255.128

连接操作[admin@MikroTik]> :put (1 . 3)
13
[admin@MikroTik]> :put (1,2 . 3)
1,2,3
[admin@MikroTik]> :put (1 . 3,4)
13,4
[admin@MikroTik]> :put (1,2 . 3,4)
1,2,3,4
[admin@MikroTik]> :put ((1 . 3) + 1)
14
[admin@MikroTik]> :set  a "It's "
[admin@MikroTik]> :put ($a . OK)
It's OK

ROS脚本保留字beep execute global list pick time toip typeof
delay find if local put toarray tonum while
do for led log resolve tobool tostr
environment foreach len nothing set toid totime

:beep length=2s frequency=10000
产生2秒10kHz的音频length缺省值为100ms
frequency缺省值为1000Hz

:set a "/int dis lan\n/int dis wan"
:execute $a
执行多条命令,例子里执行了两条命令。\n是换行:global
定义全局变量:list interface
显示相关命令。显示当前目录及子目录下有关interface的命令:pick
取字符串或数组的某一断。字符串(数组)的第一个为0。[admin@MikroTik]>:put [:pick "I love you" 2 6]
love

:time
执行命令所需的时间[admin@MikroTik]> :put [:time [:resole www.sina.com.cn]]
00:00:00.006
执行解析www.sina.com.cn这个域名所需的时间toip toarray tonum tobool tostr toid totime
转换值类型:delay 3
延时3秒,缺省为1秒:find
查找字符串或数组中第一个出现查找内容的位置[admin@MikroTik]>:put [:find abcdcba cd]
2
[admin@MikroTik]>:put [:find "1,2,3,4,3,2,1" 2]
1

:put
输出到屏幕上,上面就很多例子了。:if
条件选择[admin@MikroTik]>:if(1<2) do={:put true}
true
如果条件为真,执行do={}里面的命令[admin@MikroTik]>:if(1>2) do={:put true} else={:put flase}
flase
如果条件为真,执行do={}里面的命令,否则执行else={}里有命令:local
定义本地变量:while
条件为真时循环执行do={}里的脚本命令[admin@MikroTik]>:set i 0;:while($i<5) do={:put $i;:set i ($i+1)}
0
1
2
3
4
5

:for
循环执行do={}里的脚本命令:for i from=1 to=100 step=30 do={:put $i}
1
31
61
91

:foreach
在集合(数组)里循环执行do={}里的脚本命令:foreach i in=[/interface find type=ether] do={:put [/interface get $i name]}
ether1
ether2
ether3
ether4
在[/interface find type=ether]的集合(类型为ether的interface ID)循环输出interface的名称。我这时有四张网卡:log 日志类型 日志内容写文本到日志(script log)类型在/system logging里可以找到:log info "系统信息"
到LOG里查查运行结果吧:resolve
解析域名的IP地址[admin@MikroTik] > :put [:resolve www.sina.com.cn]
61.172.201.240

:environment print
显示所有变量及其值:len
字符串或数组的长度[admin@MikroTik] > :put [:len hello]
5
[admin@MikroTik] > :put [:len "1,2,23,65,54,6"]
6

:nothing
空值。nothing不等0,不等于空字符""
:find abc a的结果是0
:find abc d的结果是nothing

:set
赋值[admin@MikroTik] > :set a test
将abc字符赋给变量a
[admin@MikroTik] > :put $a
test
[admin@MikroTik] > :put a
a
引用变量的值要在变量前面加$


:find
查找字符串或数组中第一个出现查找内容的位置
[admin@MikroTik]>:put [:find abcdcba cd]
2
[admin@MikroTik]>:put [:find "1,2,3,4,3,2,1" 2]
1

:put
输出到屏幕上,上面就很多例子了。

:if
条件选择
[admin@MikroTik]>:if(1<2) do={:put true}
true
如果条件为真,执行do={}里面的命令
[admin@MikroTik]>:if(1>2) do={:put true} else={:put flase}
flase
如果条件为真,执行do={}里面的命令,否则执行else={}里有命令

:local
定义本地变量

:while
条件为真时循环执行do={}里的脚本命令
[admin@MikroTik]>:set i 0;:while($i<5) do={:put $i;:set i ($i+1)}
0
1
2
3
4
5

:for
循环执行do={}里的脚本命令
:for i from=1 to=100 step=30 do={:put $i}
1
31
61
91

:foreach
在集合(数组)里循环执行do={}里的脚本命令
:foreach i in=[/interface find type=ether] do={:put [/interface get $i name]}
ether1
ether2
ether3
ether4
在[/interface find type=ether]的集合(类型为ether的interface ID)循环输出

interface的名称。我这时有四张网卡

:log 日志类型 日志内容
写文本到日志(script log)
类型在/system logging里可以找到
:log info "系统信息"
到LOG里查查运行结果吧

:resolve
解析域名的IP地址
[admin@MikroTik] > :put [:resolve www.sina.com.cn]
61.172.201.240

:environment print
显示所有变量及其值

:len
字符串或数组的长度
[admin@MikroTik] > :put [:len hello]
5
[admin@MikroTik] > :put [:len "1,2,23,65,54,6"]
6



这个脚本是我写的,测试过可用,你看看吧

:local ip1
:local ip2
:local x
:set x 2    (这里的数字2是代表多少条动态ADSL接入)
:for i from=1 to=$x do={       (这里是循环执行)
     :set ip1 [/ip address get [/ip address find dynamic=yes  interface=("pppoe-out" . $i)] address]
     :set ip1 [:pick $ip1 0 [:find $ip1 "/"]]
     :set ip2 [/ip route get [/ip route find comm=$i] gateway]
     :if ($ip1 != $ip2) do={       (这里是条件选择,$ip1不等于$ip2时,执行do={}里面的命令)
      /ip add set [/ip add find comm=$i] address=$ip1 network=$ip1 broa=$ip1
      /ip route set [/ip route find comm=$i] gateway=$ip1
     :log info "〖动态或同网关ADSL修改完毕〗"
  }
}


[本日志由 lq3447 于 2016-02-28 09:27 PM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: ROS
评论: 0 | 引用: 0 | 查看次数: 747
发表评论
你没有权限发表留言!