iptables后,外网访问网站可以,内网无法访问【已解决】

  1. 最近,到处看到有人问这个问题,怎么以前没人问,现在这么多人问呢?前两天我还在华为的论坛上仔细的说了这个问题,现在复制到这边来。希望能帮助大家理解这个问题。
  2. 这是个理论问题,我们先从NAT讲起:NAT有两种基本类型,一种是SNAT(Source   NAT),一种是DNAT(Dest.   NAT).SNAT即源NAT是改变数据包的IP层中的源IP地址,一般是用来将不合法的IP外出请求转换成合法的IP的外出请求,就是普通的用一个或者几个合法IP来带动一整个非法IP段接入。   DNAT即目的NAT,就是改变数据包的目标IP地址,使得能对数据包重新定向,可以用做负载均衡或者用于将外部的服务请求重定向到内网的非法IP的服务器上。
  3. 好了,罗嗦了一通,大致就是这样了。   那么之所以会出现无法在DNAT的内部网络通过DNAT服务的外部IP地址来访问的情况,是因为,如果服务从内部请求,那么经过DNAT转换后,将目标 IP改写成内网的IP地址,譬如172.16.10.254,而请求的机器的IP是   172.16.10.100,数据包被网关172.16.10.1顺利的重定向到172.16.10.254的服务端口,然后,192.16.10.254根据请求发送回应给目的IP地址,就是172.16.10.100,但是,问题出现了,因为172.16.10.100请求的地址是外部IP   假设是221.232.34.56,所以他等待着221.232.34.56的回应,而172.16.10.254的回应请求被看做是非法的,被丢弃了。这就是问题的所在了。
  4. 呵呵,写的有点混乱,不好意思。不知道大家明白没有.那么如何解决这个问题,我说个用iptables实现的例子,
  5. #我们先把发向外网IP221.232.34.56   80号端口的数据重定向到172.16.10.254   理论上来讲,如果只要从外网访问,这就完成了。
  6. iptables   -t   nat   -A   PREROUTING   -p   tcp   -d   221.232.34.56   --dport   80   -j   DNAT   --to-destination   172.16.10.254
  7. #解决内网通过外网IP访问的情况
  8. iptables   -t   nat   -A   POSTROUTING   -p   tcp   -d   172.16.10.254   --dport   80   -j   SNAT   --to-source   172.16.10.1
  9. 我们将内网的请求强行送回到网关172.16.10.1,依靠网关在内核建立的状态表再转发到真实的请求地址172.16.10.100.
  10. 当然,这并不是最好的解决方法,最好的解决方法是将服务器放在另外一个网段,也就是说所谓的DMZ(解除武装区),这样就不会出现上面所说的问题了。
  11. 如果大家还不清楚,给个参考文档:
  12. http://iptables-tutorial.frozentux.net/iptables-tutorial.html#DNATTARGET
时间: 2024-10-19 23:29:02

iptables后,外网访问网站可以,内网无法访问【已解决】的相关文章

阿里云ECS网络服务器配置网站,内网上能够访问,公网ip不能访问,或者选择ip时没有公网ip地址为字符串

最近租了一个阿里云服务器,想挂几个网站上去玩玩.在iis上配置好网站后,在服务器上用内网可以打开,但是通过公网ip不能访问.我的配置情况如下 因为主机是专有网络,服务器内部看不到公网ip,直接的选择全部未分配,不会影响外网来访问网站. 可是这样配置好后,就出现了内网可以访问外网不能访问的问题. 于是我通过本机的控制台去ping 公网ip能够ping通,那么说明公网没有问题可以正常访问.那么就有可能是端口被服务器给禁止了.通过百度阿里云的端口设置,搜索到了配置安全组可以解决端口问题,于是抱着试一试

配置NAT回流导致外网解析到了内网IP

单位有3个域名,用量很大,2014年开始本人研究部署了Bind+DLZ +Mysql的三机智能多链路DNS,非常好用,优点是: 1.使用Mysql管理记录,配置.管理.查询方便. 2.自动判断运营商,返回指定IP,实现智能多链路.目前我们单位有电信.移动.教育网专线和固定IP,通过Bind的View,判断请求源IP自动返回对应运营商的服务IP.很好很强大也很实用. 3.根据配置自动为内网分配对应的运营商解析...我单位内网用户较多,有一个不少见的需求,内网部分用户要使用电信专线.部分用户要使用移

网络通: 免费一键内网穿透 方便配置

越来越多的用户没有自己的独立公网IP,在发布一些应用或者网站到外网的时候就是一件很麻烦的事情.请注意,我说的独立公网 IP并不是说一定要静态公网IP.拨号上网动态IP也不一定不可以.我们要的就是网关出口一定要是公网IP,假如你的网关路由器WAN 口是一个内网IP肯定不行.说明一点,ipv4 的内网IP 保留范围: Class A 10.0.0.0-10.255.255.255.Class B 172.16.0.0- 172.31.255.255.Class C 192.168.0.0-192.1

linux外网服务器跳转内网服务器实现内网访问(iptables)

服务器信息如下 外网服务器:eth0:公网IP eth1:内网IP(192.168.10.205) 公网对外提供服务,内网IP与内部局域网通信. 配置过程: (1)开启iptables service iptables restart   (临时开启) chkconfig  iptables on    (永久开启) (2)配置iptables          (2-1)配置filter选项,使得IP和PORT可以通过防火墙 注意:在filter选项下配置 例如:#18081(tomcat-O

用户iis可以用外网ip访问,用内网访问报错404

如下,没有添加内网ip绑定

二层网管交换机应用——访问控制功能管理内网电脑上网行为

访问控制(ACL)通过数据包的源IP地址.目的IP地址.源MAC地址.目的MAC地址.协议.VLAN ID以及生效时间等来控制交换机上主机互相访问的权限,并可以通过建立Policy,将ACL和流镜像.流监控.Qos Remarking.端口重定向等动作组合起来,组成一个访问控制策略,对符合相应ACL规则的数据包进行控制. 1.ACL访问控制默认策略为"允许",即"不符合规则的允许通过". 2.源地址和目的地址均需采用"MAC+掩码"或者"

外网主机A连接内网主机B

实现通过外网的主机A连接内网的主机B 设置内网主机B免密登陆外网主机A 在主机B中输入下面的命令,并且一直回车: ssh-keygen 然后会在/root/.ssh/下生成2个文件:id_rsa和id_rsa.pub. 可以用下面的命令查看: ls /root/.ssh/ 在外网主机A中建立自己的文件夹,用来存id_rsa.pub文件.把内网主机B中的id_rsa.pub发到外网主机A的文件夹中: scp ~/.ssh/id_rsa.pub [email protected]123.206.18

内网渗透基础:内网、域、工作组、域控概念介绍

一.什么是内网 局域网(Local Area Network, LAN),又称内网,是指在某一区域内由多台计算机互联成的计算机组. 局域网可以实现文件管理.应用软件共享.打印机共享.扫描仪共享.工作组内的日程安排.电子邮件和传真通信服务等功能.局域网严格意义上是封闭型的.它可以由办公室内几台甚至上千台计算机组成.决定局域网的主要技术要素为:网络拓扑,传输介质与介质访问控制方法. 局域网标准定义了传输媒介.编码和介质访问等底层(一二层)功能.要使数据通过复杂的网络结构传输到达目的地,还需要具有寻址

IIS发布的网站,内网和外网不能访问的解决办法

A.关闭防火墙.控制面板-Windows防火墙-打开或关闭Windows防火墙(不推荐) B.打开:控制面板-Windows防火墙-高级设置-入站规则,在入站规则窗口中找到"BranchCache内容检索(http-in)"选项并启用此规则. 这时候远程用户通过网站地址即可访问站点程序,但是如果远程用户访问IIS的非80端口,也会出现不能访问的问题,这是因为"BranchCache内容检索(http-in)"只是启用了80端口. 此时只需要添加一条新的入站规则,并指

IIS搭建网站,内网用本机IP和127.0.0.1访问需要输入密码的问题。

xp配置好iis后,用localhost访问没有问题,用本机IP和127.0.0.1访问均提示输入用户名和密码. 我知道是权限问题,上网一百度,资料很多,解决方法也很多,但是好多我都做了 1.IIS配置权限 我就选择的是匿名访问与集成windows身份验证,选这两个, 2.网站文件所在的文件夹设置权限 3.设置了各种权限,该开启的也开启了,很多都设置了everyone这种. 我搜了很多资料,发现各位大神说的,我都试了,且已经设置好,但并没有起什么作用. 后来小白的我终于发现了,原来原因是因为我改