3. 两种类型的 NAT

我将 NAT 分为两种不同的类型﹕ Source NAT (SNAT) 与 Destination NAT (DNAT)

Source NAT 就是您将改变第一个封包的来源地址﹕例如﹐您为传入的联机做 caching 的动作。Source NAT 永远会在封包传出网线之前就做好 post-routing 的动作。封包伪装(Masquerading)就是一个 SNAT 特例。

Destination NAT 就是您将改变第一个封包的目的地地址﹕例如您要为传出的联机做 caching 的动作。Destination NAT 永远会在封包从网线进入之后就马上做好 pre-routing 的动作。Port forwarding﹑负载分担﹑以及透明代理﹐都属于 DNAT。

4. 从 2.0 到 2.2 核心的快速转变

非常抱歉﹐假如您仍然忙于从 2.0(ipfwadm) 到 2.2(ipchains) 的转型的话。不过﹐这也是个喜� 参半的消息啦。

首先﹐您可以轻易的一如往昔地使用 ipchains 和 ipfwadm。要这样做的话﹐您需要将最新的 netfilter 套件中的 `ipchains.o' 或 `ipfwadm.o' 核心模块加载。它们是相互排斥的(您应已获警告了)﹐同时也不能和其它 netfilter 模块同时整合在一起。

一旦其中一个模块被加载﹐您就可以如常使用 ipchains 和 ipfwadm 了﹐但也有如下一些变化啦﹕

  • 用 ipchains -M -S﹐或是 ipfwadm -M -s 作伪装逾时将不再有效。因为逾时设定已经移至新的 NAT 牯c中﹐所以这里也就没什么所谓了。
  • 在伪装列表中显示的 ini seq﹑delte﹑和 previous delta 字段﹐将永远为零。
  • 同时归零(zeroing)和列示记数器(counter)的 `-Z -L' 已无作用﹕记数器将不能再归零了。

Hacker 们仍要留意之处﹕

  • 您现在可以捆绑 61000-65095 之间的埠口﹐而无需理会您是否使用封包伪装技术。在过去﹐封包伪装程序会把此值域内的所有东西捕获进来﹐所以其它程序就不可用之了。
  • 至于(尚未成文之) getsockname 破解﹐在过去﹐透明代理程序可以找出那些不再有效联机之真正目的地。
  • 至于(尚未成文之) bind-to-foreign-address 破解﹐同样尚未实作﹔这在过去用以完善透明代理的构想。

4.1 救命啊﹗我只想要封包伪装而已﹗

没错﹐这也是大多数朋友之需。如果您用 PPP 拨接获得的动态 IP (如果您不了解的话﹐那您应该是了)﹐您或许只想单纯告诉您的主机让所有来自您内部网络的封包﹐看起来如来自该 PPP 拨接主机一样。

# Load the NAT module (this pulls in all the others).

modprobe iptable_nat

# In the NAT table (-t nat), Append a rule (-A) after routing

# (POSTROUTING) for all packets going out ppp0 (-o ppp0) which says to

# MASQUERADE the connection (-j MASQUERADE).

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

# Turn on IP forwarding

echo 1 > /proc/sys/net/ipv4/ip_forward

注﹕您这里并没做任何封包过滤﹕如要的话﹐请参考 Packet Filtering HOWTO﹕将 NAT 和封包过滤合并起来就是了。

4.2 那 ipmasqadm 怎么了﹖

这个其实取决于使用者而已﹐所以我并不是很为向后兼容问题而担心。您可以单纯使用 iptables -t nat 做 port forwarding 的动作。例如﹐在 Linux 2.2 您或许已经这样做了﹕

# Linux 2.2

# Forward TCP packets going to port 8080 on 1.2.3.4 to 192.168.1.1's port 80

ipmasqadm portfw -a -P tcp -L 1.2.3.4 8080 -R 192.168.1.1 80

而现在﹐如此则可﹕

# Linux 2.4

# Append a rule pre-routing (-A PREROUTING) to the NAT table (-t nat) that

# TCP packets (-p tcp) going to 1.2.3.4 (-d 1.2.3.4) port 8080 (--dport 8080)

# have their destination mapped (-j DNAT) to 192.168.1.1, port 80

# (--to 192.168.1.1:80).

iptables -A PREROUTING -t nat -p tcp -d 1.2.3.4 --dport 8080 \

-j DNAT --to 192.168.1.1:80

假如您想让这条规则同时修改本机联机的话(如﹐即使在 NAT 主机本身﹐要连接 1.2.3.4 的 8080 埠口之 telnet 联机﹐会帮您连接至 192.168.1.1 的 80 埠口)﹐您就可以插入相同的规则至 OUTPUT 链中(它只适用于本机传出的封包)﹕

# Linux 2.4

iptables -A OUTPUT -t nat -p tcp -d 1.2.3.4 --dport 8080 \

-j DNAT --to 192.168.1.1:80

转载于:https://blog.51cto.com/makewong/565360

Linux 2.4 NAT (网络地址转换) HOWTO(二)相关推荐

  1. 网络入门-NAT网络地址转换-Easy ip

    209.NAT网络地址转换--Easy  IP :允许多个私网地址转换成公网IP地址:企业网常用: 210 .实验topo: 原理: 内网私网地址转换成公网接口g0/0/1 当前的IP地址: 先将内网 ...

  2. 【计算机网络】网络层 : NAT 网络地址转换 ( 私有 IP 地址不被路由器转发 | NAT 转换表 )

    文章目录 一.路由器不转发私有 IP 地址 二.NAT 网络地址转换 三.NAT 转换表 一.路由器不转发私有 IP 地址 私有 IP 地址 : 只适用于在内部网络中使用 , 在互联网上使用私有 IP ...

  3. ACL访问控制表与NAT网络地址转换

    一.ACL的作用 用来对数据包做访问控制(丢弃或者放行) 结合其他协议,用来匹配范围 (一)acl工作原理 当数据包从接口经过时,由于接口启用了acl,此时路由器会对报文进行检查,然后做出相应的处理. ...

  4. 细致讲解一下NAT网络地址转换技术

    目录 静态nat 静态nat配置 动态nat 动态nat配置 NAPT(Network Address and Port Translation,网络地址端口转换 NAPT配置 Easy IP Eas ...

  5. 网络技术:NAT 网络地址转换及原理

    NAT 网络地址转换(NAT)技术的理论部分可以看博客--网络层--NAT.NAT 的功能大致为:在局域网中组织会为内部主机分配私有地址,当内部主机发送数据包到外部网络时私有地址就会自动转换为公有 I ...

  6. Nat网络地址转换实验

    实验要求: 使用Nat网络地址转换完成下图中所有的要求 第一步:子网划分,ip地址规划 本实验网段差异较大,所以我们在左边类似企业内网的网段直接使用192.168.1.0/24网段.右边的isp网段我 ...

  7. NAT 网络地址转换

    NAT 网络地址转换 内网 源地址(私有地址-公有地址)目标(公有地址) 外网 源地址(公有)目标(公有-私有地址) 1.动态NAT地址池(已不再使用了,用于内到外的访问) 动态NAT地址池配置 配置 ...

  8. eNSP—静态路由+NAT网络地址转换

    实验需求 1.全网可达 2.拓扑中所需地址全部基于192.168.0.0/24划分所得 3.静态路由(不许使用其他动态) 4.R1的有三个环回,需要汇总 DNS.http部分属于扩展部分,模拟网页访问 ...

  9. HCIP——NAT网络地址转换

    目录 NAT网络地址转换 NAT MAC 课堂实验 NAT网络地址转换 在IPV4地址中存在私有与公有IP地址的区别: 公有IP地址-----具有全球唯一性,可以在互联网中通讯,需要付费使用 私有IP ...

  10. linux配置nat端口转换,NAT网络地址转换——静态NAT,端口映射(实操!!)

    NAT概述 NAT(Network Address Translation,网络地址转换)是1994年提出的.当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但 ...

最新文章

  1. ubuntu, debian 安装redis,设置开机自动启动和密码,允许外网访问
  2. 二十年后的回眸(2)——顺风顺水的前三年
  3. 【算法导论】学习笔记——第9章 中位数和顺序统计量
  4. 在远程桌面连接中使用命令行参数
  5. python多进程调试_使用pyrasite进行python进程调试,改变运行中进程的代码
  6. sql 新建表 alter_SQL ALTER表
  7. 大学计算机教学ppt,大学计算机基本教学教程3.ppt
  8. html选择日期选择器
  9. 计算机操作系统教程徐甲同pdf,《操作系统实践教程》.pdf
  10. mysql知识系列:报错right syntax to use near IDENTIFIED BY
  11. 20.古体诗的平仄与三字脚
  12. Javascript验证码的生成和验证,源代码
  13. TCP协议:报文字段解析
  14. Python环境搭建(一)
  15. 各种网络下的社会面现有安防监控摄像头如何统一接入管理方案介绍
  16. 关于 Android 6.0 的流媒体播放异常
  17. 地方网站运营分享、未来发展汇报 [十年巨献,纯干货,不忽悠]
  18. sqli-labs系列——第一关
  19. git设置当前项目的用户名称name和邮箱email
  20. Android学习笔记----解决“com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536”问题

热门文章

  1. ZeroMQ API(一) 总序
  2. LeetCode131:Palindrome Partitioning
  3. 数据库中单个表数据备份
  4. nodeName、nodeValue 以及 nodeType 包含有关于节点的信息
  5. 【系统架构】VC 开发辅助工具大收集
  6. Chrome Frame
  7. FreeBSD11配置local_unbound做dns缓存和转发
  8. Ruby First
  9. 目标跟踪理论方法小结
  10. iOS 使用FMDB进行数据库操作