|
马上注册成为ROSABC会员,随时发帖回复。
您需要 登录 才可以下载或查看,没有账号?会员注册
x
nat 介绍
网络地址翻译是一种允许本地网络主机使用一段 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 firewall service-port 下启用
content (文本) - 文本数据包必须按顺序排列以与匹配规则 dst-address (IP 地址/掩码 | IP address-IP address) - 指定 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) - interface the 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)
|
|