免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 枫影谁用了
打印 上一主题 下一主题

[网络管理] 郁悶了,越來越蠢了,問個SNAT的問題 {已解決} [复制链接]

论坛徽章:
0
11 [报告]
发表于 2006-03-02 10:35 |只看该作者
从原理上来说,得加条snat

把内网对abc.com的请求,snat为网关内网口ip地址就可以了

论坛徽章:
0
12 [报告]
发表于 2006-03-02 10:38 |只看该作者
和你的那个不一样,虽然用户可以直接与 192.168.0.3 通讯,但他们都是共同的 GW,都是指向 Linux 的,所以不会涉及到那个问题

论坛徽章:
0
13 [报告]
发表于 2006-03-02 10:45 |只看该作者
原帖由 platinum 于 2006-3-2 10:38 发表
和你的那个不一样,虽然用户可以直接与 192.168.0.3 通讯,但他们都是共同的 GW,都是指向 Linux 的,所以不会涉及到那个问题


和共用gw也有关啊...

假设看看只改dnat的情形模拟

1.client 访问abc.com,dns解析为网关机的外网ip地址;
2.client连接到gw,首先进行dnat,这时候把目的请求指到了内网的web上;
3.请求发到web端,由于没做snat,则内网web接到访问后,直接朝client发送一个"已收到请求"的回应;
4.client经过自己的检查,确认自己没朝过这台web机器发过任何请求,判断为对方错发,不允回应

论坛徽章:
0
14 [报告]
发表于 2006-03-02 10:48 |只看该作者
你想啊,规则里有个针对 192.168.0.0/24 的 MASQUERADE,这不就是你说的那个吗?
不如让楼主先试试我的那个规则?如果不是我马虎而忽略了什么东西的话,应该可以直接实现他的需求

论坛徽章:
0
15 [报告]
发表于 2006-03-02 10:54 |只看该作者
这个问题,我遇到过,实际上和skylove老兄的问题差不多.

我们可以看一下请求和回应过程:

内网client请求外网ip,到了nat server后,因为这个请求不是通过ppp0发出去,所以不会被SNAT,所以源地址没有变,然后nat server发请求发给内部192.168.0.3:8000, 所以192.168.0.3从这个请求里看的源ip是内网的client ip,而不是snat的ip,所以0.3会直接发送返回给client机器,结果自然是无法建立正确的连接了.

论坛徽章:
1
白银圣斗士
日期:2015-11-23 08:33:04
16 [报告]
发表于 2006-03-02 10:55 |只看该作者
我試試!我上次是加了一條snat實現的。

论坛徽章:
0
17 [报告]
发表于 2006-03-02 10:57 |只看该作者
原帖由 platinum 于 2006-3-2 10:28 发表
改成这样好了

[6:26] -A PREROUTING -s ! 192.168.0.3 -p tcp -m tcp --dport 8000 -j DNAT --to-destination 192.168.0.3:8080
[27:2579] -A POSTROUTING -s 192.168.0.0/255.255.255.0 -o ppp0 -j MASQUER ...


你这条规则等于是做了snat,那么也就是说 client发的任何请求,一到网关,就被变成了外网了.

等于是snat是做到了网关的外网ip上了.

那网关上就大致该有这么几份记录
client 的请求1 修改dnat为 web的ip
client的请求1 修改snat为 网关外网ip地址

则web信息反馈到客户端的时候, 理想情形下是进行
web 回应 --> gw内口ip --> gw外口ip -->gw内口ip-->client

=========================================

而如果针对内网段对web的访问在内口上设置snat的话,则web信息反馈到client的时候,进行的是如下过程

web回应 --> gw内口 -->client
明显要节约一些开销的

论坛徽章:
0
18 [报告]
发表于 2006-03-02 11:00 |只看该作者
原帖由 skylove 于 2006-3-2 10:57 发表
你这条规则等于是做了snat,那么也就是说 client发的任何请求,一到网关,就被变成了外网了.

没错,要的就是这个结果
因为楼主的需求是:无论内网用户还是外网用户,访问 http://www.abc.com:8080 都可以访问到内网某台机器
因为 DNS 的 A 记录把 www.abc.com 绑定到一个公网地址上,所以内网 client 访问的也是公网地址
按照 TCP/IP 的三次握手来说,最后内网服务器直接返回 SYN/ACK 给内网用户是错的,因此需要,也必须“你这条规则等于是做了snat,那么也就是说 client发的任何请求,一到网关,就被变成了外网了”

论坛徽章:
1
白银圣斗士
日期:2015-11-23 08:33:04
19 [报告]
发表于 2006-03-02 11:02 |只看该作者
還是不行。外網可以,內網不行。

是要加SNAT的

论坛徽章:
1
白银圣斗士
日期:2015-11-23 08:33:04
20 [报告]
发表于 2006-03-02 11:03 |只看该作者
原帖由 platinum 于 2006-3-2 11:00 发表

没错,要的就是这个结果
因为楼主的需求是:无论内网用户还是外网用户,访问 http://www.abc.com:8080 都可以访问到内网某台机器
因为 DNS 的 A 记录把 www.abc.com 绑定到一个公网地址 ...


不是的,外網訪問http://abc.con時的是公網IP,但是內網訪問的時候就不是了,變成192.168.0.1了,因為內網也有DNS服務器。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP