我大概清楚一点就是从内网出去的时候用POSTROUTING进来的时候用PREROUTING,可是做透明代理的时候确是用PREROUTING。这是为什么呢?
回复: sunnygg

pre还是post是根据数据包的流向来确定的。

通常内网到外网是post,外望到内网是pre,但是外还是内只是个相对概念,在一定条件下是可以转换的。落实到网卡上,对于每个网卡数据流入的时候必然经过pre,数量流出必然经过post。

透明代理的原理是将内网到外网的网页访问请求进行重定向,将内网的请求转发回内网的代理服务器,代理服务与网关又是一体,如果使用post进行处理,那么数据就流出了,透明代理设置也就失败了,因此必须在数据流入的时候改写规则,才能及时响应处理请求。

回复:
POSTROUTING是源地址转换,要把你的内网地址转换成公网地址才能让你上网。

PREROUTING是目的地址转换,要把别人的公网IP换成你们内部的IP,才让访问到你们内部受防火墙保护的机器。

回复:
1,你首先要明白什么是"PREROUTING" ,什么是"POSTROUTING",我们可以简单的用下面的关系来表示:

源地址发送数据--> {PREROUTING-->路由规则-->POSTROUTING} -->目的地址接收到数据

当你使用:iptables -t nat -A PREROUTING -i eth1 -d 1.2.3.4 -j DNAT --to 192.168.1.40
时,你访问1.2.3.4,linux路由器会在“路由规则”之前将目的地址改为192.168.1.40,并且Linux路由器(iptables)会同时记录下这个连接,并在数据从192.168.1.40返回时,经过linux路由器将数据发送到那台发出请求的机器。所以你的"POSTROUTING"规则没有起作用。

而"POSTROUTING"是“路由规则”之后的动作。

2,你最好能有个详细的网络拓扑图,这样我可以更好的给你解释。

3,我可以具一个简单的例子说明"PREROUTING"和"POSTROUTING"的不同应用环境:

3.1 PREROUTING的应用,
一般情况下,PREROUTING应用在普通的NAT中(也就是SNAT),如:你用ADSL上网,这样你的网络中只有一个公网IP地址(如:61.129.66.5),但你的局域网中的用户还要上网(局域网IP地址为:192.168.1.0/24),这时你可以使用PREROUTING(SNAT)来将局域网中用户的IP地址转换成61.129.66.5,使他们也可以上网:
iptables -t nat -A PREROUTING -s 192.168.1.0/24 -j SNAT 61.129.66.5

3.2 POSTROUTING的应用,
POSTROUTING用于将你的服务器放在防火墙之后,作为保护服务器使用,例如:
A.你的服务器IP地址为:192.168.1.2;
B.你的防火墙(Linux & iptables)地址为192.168.1.1和202.96.129.5

Internet上的用户可以正常的访问202.96.129.5,但他们无法访问192.168.1.2,这时在Linux防火墙里可以做这样的设置:
iptables -t nat -A POSTROUTING -d 202.96.129.5 -j DNAT 192.168.1.2

结:最要紧的是我们要记住PREROUTING是“路由规则”之前的动作,POSTROUTING是“路由规则”之后的动作!

本文: 总结、整理来自互联网

转载于:https://www.cnblogs.com/wspblog/p/4297160.html

Linux prerouting和postrouting的区别相关推荐

  1. ebtables之BROUTING和PREROUTING的redirect的区别

    ebtables和iptables实用工具都使用了Netfilter框架,这是它们一致的一方面,然而对于这两者还真有一些需要联动的地方.很多人不明白ebtales的broute表的redirect和n ...

  2. Linux进程与线程的区别 详细总结(面试经验总结)

    首先,简要了解一下进程和线程.对于操作系统而言,进程是核心之核心,整个现代操作系统的根本,就是以进程为单位在执行任务.系统的管理架构也是基于进程层面的.在按下电源键之后,计算机就开始了复杂的启动过程, ...

  3. Linux进程与线程的区别

    2019独角兽企业重金招聘Python工程师标准>>> Linux进程与线程的区别 cnyinlinux 本文较长,耐心阅读,必有收获! 进程与线程的区别,早已经成为了经典问题.自线 ...

  4. 【Linux】Linux简介以及 与UNIX区别

    一直以来对Linux.Unix.linux内核.linux发行版的概念比较模糊,最近查找资料并经过自己的整理,主要总结了Linux和UNIX的区别和联系.内核和操作系统的关系.Linux操作系统和结构 ...

  5. 如何区分iptables的PREROUTING和POSTROUTING链

    *mangle -A PREROUTING -i wlan0 -j TTL –ttl-inc 1 -A POSTROUTING -o wlan0 -j TTL –ttl-dec 1 COMMIT 上面 ...

  6. 从Docker在Linux和Windows下的区别简单理解Docker的层次结构

    上篇文章我们成功在Windows下安装了Docker,输出了一个简单的Hello World程序.本文中我们将利用Docker已有的云端镜像training/webapp来发布一个简单Python的W ...

  7. linux服务器知识学习:Linux与Windows之间的区别

    目前国内Linux更多的是应用于服务器上,而桌面操作系统更多使用的是Window. linux与Windows主要的区别如下: 从界面上来看, Windows界面统一,外壳程序固定所有Windows程 ...

  8. 103.107.189.XXX机房服务器linux和windows系统的区别:

    机房服务器linux和windows系统的区别: 1.首先从界面上个人感觉windows的界面比linux漂亮,从视觉效果上来看windows给人感觉更好 2.软件的使用,linux软件都是开源的由全 ...

  9. centos linux 和 centos stream 的区别

    文章目录 CentOS Linux 和 CentOS Stream 的区别 项目终止日期(EOL) 上游 vs 下游 更新频率 贡献方式 测试 CentOS Linux 和 CentOS Stream ...

  10. PREROUTING 和 POSTROUTING, SNAT 和 DNAT图文解析(非常清淅)

    NAT (网络地址转换) 技术在平时是很多见的,如家庭中在使用路由器共享上网时,一般用的就是 NAT 技术,它可以实现众多内网 IP 共享一个公网 IP 上网.NAT 的原理 简单的说就是当内网主机访 ...

最新文章

  1. spring+mybatis整合读取不了配置文件
  2. 中国联通华东云数据中心—电气培训
  3. AgileConfig-1.5.5 发布 - 支持 JSON 编辑模式
  4. 图解elasticsearch原理转载自
  5. Coinbase 现“市场核弹级”漏洞,颁发25万美元奖励
  6. [20170515]数据库启动的一个疑问.txt
  7. Spring Boot的filter简单使用
  8. 什么是无卡支付、快捷支付、通用代扣?他们有什么区别?
  9. java写的小米商城_开发”小米商城官网首页”(静态页面)
  10. mib浏览器_大众汽车的第二代MIB信息娱乐系统图解
  11. 中国慕课moocpython答案_中国大学慕课mooc2020用Python玩转数据题目答案
  12. cabbage liunx学习之路之用户与用户组管理篇
  13. 计算机基础知识常用口诀,三句口诀!记住大部分常用的电脑快捷键!
  14. 2017清华大学计算机考研机试答案(含代码)
  15. Solidigm正式推出PCIe 4.0 固态盘Solidigm™ P41 Plus
  16. C++的tie()函数
  17. 朗强HDMI视频拼接分割器
  18. (附源码)spring boot动力电池数据管理系统 毕业设计 301559
  19. 学校校园教务老师选课排课系统 毕业设计毕设源码毕业论文参考(2)班主任辅导员功能
  20. 怎么在CAD图库中添加新图块?

热门文章

  1. ubuntu安装Nvidia-docker2详细步骤
  2. 《史记》记载的喝粥延命内容
  3. CPU个数引起服务器软件启动失败的事故
  4. 苹果照片库的照片,直接拖到桌面上
  5. Day_05用结构体 从内存中 读取配置信息
  6. C# 异步调用控件 跨线程调用控件 跨线程赋值
  7. c++ 11 之lambda
  8. linux 内核 介绍,Linux内核详细介绍
  9. pythonunittest模块_python单元测试模块unittest
  10. linux命令执行绕过,命令执行绕过