本帖最后由 EDCwifi黄 于 2014-6-4 17:07 编辑
网络地址翻译是一种允许本地网络主机使用一段IP 地址进行本地通信,使用另一段IP 地址进行外部通信的因特网标准。一个使用网络地址翻译的局域网就被称为natted(已翻译)网络。为了使网络地址翻译进行工作必须在每个natted 网络都有一个nat 网关。nat 网关的作用就是在数据包进/出局域网时重写IP 地址的作用。 输出数据包转换的示例: 网络地址翻译包括两种类型: • 源网络地址翻译或者 srcnat。这种类型的网络地址翻译工作在从一个natted网络产生的数据包上。nat路由器在IP包通过它的时候用一个新的公网IP地址代替了其私有源地址。相反的操作适用于响应包从相反方向通过路由器时。 • 目标网络地址翻译或者 dstnat。这种类型的网络地址翻译工作在到达一个 natted网络的数据包上。它通常用于使一个私有网络上的主机能够被因特网访问。dstnat路由器在IP包通过该路由器到达私有网络时替换了IP包的目标IP地址。 nat 缺点 在一个使用了网络地址翻译的路由器背后的主机并不拥有真实的端对端的连接。因此一些因特网协议就不在有网络地址翻译的情况下工作。一些来私有用网络外部或者无连接协议如UDP协议且需要TCP连接初始化的服务将被打断。此外,一些协议内在与NAT不兼容,一个鲜明的事例就是IPsec中的AH协议。
重定向与伪装 重定向和伪装分别是目的 nat 和源nat 的特殊形式。重定向类似与普通的目的网络地址翻译就好比伪装类似与源网络地址翻译——伪装是一种不需要指定to-addresses 的源网络地址翻译的特殊形式——对外接口地址将被自动使用。重定向同理 ——进入接口地址将被使用。注意,to-ports 对于重定向规则来说很有意义——这就是在路由器起上处理这些请求的的服务端口。(比如:web代理) 当数据包进行了目的网络地址翻译(dst-nat)时(不论action=nat或者action=redirect),目的地址都将改变。有关地址翻译的任何信息(包括初始的目的地址)将被保存在路由器的内部维护表。当web请求被重定性到路由器的代理端口 时,工作在路由器上的透明web 代理将访问从内部表这个信息并从其中取得web服务器的地址。如果你正在对几个不同的代理服务器进行目的网络地址翻译,那你将不会从IP包头找到web服务器的地址,因为IP包的目的地址之前是web服务器的地址但现在已经变成了代理服务器的地址。从HTTP/1.1开始在HTTP请求中出现了特殊的可以告知web服务器地址 的包头,于是代理服务器使用它取代了IP 包的目的地址。如果没有这样的包头(如:老版本的HTTP),代理服务器将不能确定web服务器地址也将无法工作。 这也就是说,对HTTP 流从一个路由器到其他一些透明代理服务器进行正确的透明的重定向是有可能的。只有在路由器本身添加透明代理并配置才是正确的方法,因此你的“真实的”代理就是上级代理。这种情况下你的“真实的”代理再也不用是透明的,因为在路由器上的代理将成为透明的并将向“真正的”代理转交代理方式请求(根据标准,这些请求包括了所有必须的web服务器信息)。
属性描述 action (accept |add-dst-to-address-list | add-src-to-address-list | dst-nat | jump | log |masquerade| netmap | passthrough | redirect | return | same | src-nat; 默认:accept) -如果数据包与规则匹配action 将启用 accept - 接收数据包。不进行任何动作。例如:数据包通过而且没有其他任何适用于它的规则 add-dst-to-address-list -向address-list 参数指定的地址表中添加IP 包的目的地址 add-src-to-address-list -向address-list 参数指定的地址表中添加IP 包的源地址 dst-nat - 用to-addresses 及to-ports 参数指定的变量取代IP 包的目的地址 jump - 跳转到由jump-target 参数指定的链 log - action 的每个匹配都将对系统日志添加一条消息 masquerade - 以一个路由策略自动分配的IP地址取代IP包的源地址 netmap - 创造一个IP地址从一端到另一端的静态1:1映像。通常用于分配公用IP地址到专用内网的主机上 passthrough - 忽略次条规则并转到下一个规则 redirect - 把IP包的目的地址替换成一个路由器的本地地址 return -返回到跳转发生的链 same - 从允许范围内分配给特定客户每个连接相同的源/目的IP地址。这种情况通常用于来自期望相同客户的相同客户地址对多重连接的服务。 src-nat - 把IP包的源地址替换成由to-addresses 和to-ports 参数指定的值 address-list (名称)-指定地址列表的名称以收集使用了action=add-dst-to-address-list 或 action=add-src-to-address-list 动作规则的IP地址。 address-list-timeout (时间;默认:00:00:00) - 在address-list 参数指定的地址列表删除地址之后的时间间隔。与add-dst-to-address-list 或 add-src-to-address-list动作一起起使用 00:00:00 - 从地址列表中永久删除 chain (dstnat | srcnat | name)– 选择或者定义一个规则的链。由于不同的数据流通过不同的链,所以为新规则选择正确的链必须很小心。如果输入一个与默认链名(srcnat和dstnat)不匹配,那么会生产一个新的链。 dstnat - 在这个链中的规则会在路由前被应用。代替IP 包目的地址的规则应放在这里。 srcnat - 在这个链中的规则会在路由后被应用。代替IP 包源地址的规则应放在这里。 comment (文本) - 对规则的描述性注解。一条注解能被用于从脚本中识别规则。 connection-bytes (整型-整型) - 当且仅当一定给定量字节从特定连接传输时与数据包进行匹配。 0 - 代表无穷大。例如:connection-bytes=2000000-0如果大于2MB 数据从相关连接传输就与规则匹配。 connection-limit (整型, 子网掩码) - 限制每个地址或地址群的连接限度。 connection-mark (名称) - 与通过mangle 机制标记的特定连接数据包进行匹配 connection-type (ftp | gre | h323 | irc | mms | pptp | quake3 | tftp)- 与基于连接跟踪助手信息的相关连接的包进行匹配。相关连接助手必须在/ip firewallservice-port 下启用 content (文本) - 文本数据包必须按顺序排列以与匹配规则 dst-address (IP 地址/掩码 | IP address-IPaddress) - 指定IP 包的目的地址范围 address/netmask – 对合法网络地址的换算,例如:1.1.1.1/24 被转换为1.1.1.0/24 dst-address-list (名称) - 在用户自定义的地址列表中匹配数据包的目的地址 dst-address-type (unicast | local | broadcast | multicast) - 在IP 包的目的地址类型中匹配其中之一 unicast - 用于点对点传输的IP 地址。这种情况仅限于一个发送者和一个接受者 local -与分配到路由器接口的地址匹配 broadcast - 这个IP 包从IP 子网的一个点到其他所有点发送信号 multicast - 这种类型的IP 地址负责从一个或多个点到其他一系列点的传输 dst-limit (整型/时间{0,1},整型, dst-address | dst-port | src-address{+},time{0,1})- 在每个目的IP 或者每个目的端口库上限制每秒数据包绿(pps)。与limit 匹配相反,每个目的IP 地址/目的端口都有自己的限度。其选项如下(按出现次序): Count - 最大平均包率。以pps 衡量,除非跟随在Time 选项之后。 Time - 指定包率衡量的时间间隔 Burst - 以成组方式匹配的包数量 Mode - 包率限制分类方式 Expire - 指定已记录的IP 地址/端口将被删除的过期时间,时间间隔。 dst-port (整型: 0..65535-整型: 0..65535{*}) - 目的端口数或范围 hotspot (多选项: from-client | auth |local-dst) - 从各种不同的Hot-Spot 中匹配从客户获得的包。所有值都可以被取消。 from-client - 如果一个包来自于HotSpot客户则为真 auth - 如果一个包来自验证用户则为真 local-dst - 如果一个包拥有本地目的IP地址则为真 icmp-options (整型:整型)- 与ICMP的Type:Code域匹配 in-interface (name) - interfacethe packet has entered the router through ipv4-options (any |loose-source-routing | no-record-route | no-router-alert | no-source-routing | no-timestamp | none | record-route | router-alert |strict-source-routing | timestamp) - 与ipv4 标题选项匹配 any - 与ipv4选项中至少一个匹配 loose-source-routing -与发射源路由选项的包进行匹配。次选项一般用于路由基于源提供信息的因特网数据报 no-record-route - 以无记录路由选项匹配包。次选项一般用于路由基于源提供信息的因特网数据报 no-router-alert - 以无路由警报选项匹配包 no-source-routing -以无源路由选项匹配包 no-timestamp - 以无时间印章选项匹配包 record-route - 以记录路由选项匹配包 router-alert - 以路由警报选项匹配包 strict-source-routing -以严密的源路由选项匹配包 timestamp - 以时间印章选项匹配包 jump-target (dstnat | srcnatname) - 将要跳转的目标链名称,如果使用了动作action=jump limit (整型/时间{0,1},整型) - 按给定限度限制包匹配率。对于减少日志信息数量有用 Count - 最大平均包率。以pps 衡量,除非跟随在Time 选项之后。 Time - 指定包率衡量的时间间隔 Burst - 以成组方式匹配的包数量 log-prefix (文本) - 所有写入日志的信息都包含次中指定的前缀。与action=log 一起使用。 nth (整型, 整型: 0..15,整型{0,1}) - 与特定的由规则获取的第N 个包匹配。16 个可用计数器之一可被用来计算包数 Every - 匹配每第Every+1 个包。例如:如果Every=1 那么规则匹配每第二个包 Counter - 指定要使用的计数器。 Packet - 以给定包的数量进行匹配。显然地,这个值必须在0 和Every 之间。如果这个选项用于一个给定的计数器,那么在这个选项里必须至少有Every+1 个规则,以包含所有在0 和Every 之间的值 out-interface (name) - 离开路由器的包的接口 packet-size (整型: 0..65535-整型: 0..65535{0,1}) - 按字节匹配指定大小或大小范围的包 Min - 指定大小范围或独立的值的下限 Max - 指定大小范围的上限 phys-in-interface (name) -与添加到一个桥设备的桥端口物理输入设备匹配。仅在数据包从桥到达并通过路由器时有用 phys-out-interface (name) - 与添加到一个桥设备的桥端口物理输出设备匹配。仅在数据包从桥离开路由器时有用 protocol (ddp | egp | encap | ggp | gre | hmp | icmp | idrp-cmtp |igmp | ipencap | ipip | ipsec-ah |ipsec-esp | iso-tp4 | ospf | pup | rdp | rspf | st | tcp | udp | vmtp | xns-idp| xtp | 整型) - 与由协议名称或编号指定的特定IP 协议匹配。如果你想指定端口就应该进行这个配置。 psd (整型,时间,整型,整型) - 试图探测TCP 及UDP 扫描。建议对高号码端口分配低权重以减少被误判的频率,例如来自被动模式的FTP 迁移 WeightThreshold - 来自不同主机且被作为端口扫描序列的带有不同目的端口的最新的TCP/UDP 包的总权重值 DelayThreshold - 来自同意主机且被当作可能端口扫描子序列带有不同目的端口的包延迟 LowPortWeight - 特权目的端口(<=1024)的数据包权重值 HighPortWeight –非特权目的端口(<=1024)的数据包权重值 random (整型) - 以给定概率随机匹配包 routing-mark (name) - 对mangle 标记的特定路由的包进行匹配 same-not-by-dst (yes | no) - 当选择要与action=same 规则匹配的包的新源IP 地址时指定是否对目的IP 地址进行计数 src-address (IP 地址/子网掩码 | IP 地址- IP 地址) - 指定源IP 包产生的地址范围。 src-address-list (name) - 与用户定义的地址列表中的数据包源地址匹配 src-address-type (unicast | local | broadcast | multicast) - 与IP 包的源地址类型中的一个匹配 unicast - 用于点对点传输的IP 地址。这种情况仅限于一个发送者和一个接受者 local -与分配到路由器接口的地址匹配 broadcast - 这个IP 包从IP 子网的一个点到其他所有点发送信号 multicast - 这种类型的IP 地址负责从一个或多个点到其他一系列点的传输 src-mac-address (MAC address) - 源MAC 地址 src-port (整型: 0..65535-整型: 0..65535{*}) - 源端口数或范围 tcp-mss (整型: 0..65535) - 与IP 包的TCP MSS 值匹配 time (时间-时间,sat | fri | thu | wed | tue | mon | sun{+}) - 允许产生基于数据包到达时间和日期的过滤器,或者对于本地产生的数据包的离开时间和日期 to-addresses (IP address-IP address{0,1};default: 0.0.0.0) -取代初始IP 包地址的地址或地址范围 to-ports (整型: 0..65535-整型: 0..65535{0,1}) - 取代初始IP 包端口的端口或端口范围 tos (max-reliability | max-throughput | min-cost | min-delay | normal) - 对IP 头服务类型(ToS)域的值指定一个匹配 max-reliability – 最大的可靠性 (ToS=4) max-throughput – 最大的吞吐量 (ToS=8) min-cost – 最低的成本代价(ToS=2) min-delay – 最小的延迟 (ToS=16) normal – 普通服务 (ToS=0)
|