论坛风格切换切换到宽版
  • 864阅读
  • 7回复

[问题求助]有关于iptables设置DNAT跨网段的一个疑问,请各位大侠不吝赐教 [复制链接]

上一主题 下一主题
 
发帖
2019
C币
-505456
威望
366
贡献值
4
银元
-2
铜钱
4381
人人网人气币
0
只看楼主 倒序阅读 使用道具 楼主  发表于: 2009-05-01
内网为192.168.0.0/24网段,服务器地址为137.0.6.2,其中,linu.x服务器两块网卡,eth.0为公网地址,eth1为内网192地址但非网关,192网段网关192.168.0.1与137网段之间有n跳路由相通,n多少我也不知道.,是个很大的内网,现在想.从linux服务器上做一个DNAT,从公网能够直接访问到137网段的服.务器,不知道理论上能否实现,请赐教,谢谢..服务器

评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
离线stonys.
发帖
2088
C币
-193243
威望
404
贡献值
1
银元
-2
铜钱
4686
人人网人气币
0
只看该作者 沙发  发表于: 2010-04-13
137.0.6.2也是一个公网地址呀?

离线kyabcd.
发帖
2041
C币
-235287
威望
375
贡献值
1
银元
-1
铜钱
4573
人人网人气币
0
只看该作者 板凳  发表于: 2010-04-13
137网段有访问控制规则,只有192的地址能够访问

离线billliy.
发帖
2043
C币
-60738
威望
390
贡献值
1
银元
-2
铜钱
4592
人人网人气币
0
只看该作者 地板  发表于: 2010-04-13


QUOTE:原帖由 一舸秋雨 于 2006-8-1 19:13 发表
内网为192.168.0.0/24网段,服务器地址为137.0.6.2,其中,linux服务器两块网卡,eth0为公网地址,eth1为内网192地址但非网关,192网段网关192.168.0.1与137网段之间有n跳路由相通,n多少我也不知道,是个很大的内网,现在 ...

iptables -t nat -A PREROUTING -i eth0 -j DNAT --to-destination 137.0.6.2
iptables -t nat -A POSTROUTING -d 137.0.6.2 -j SNAT --to-source $linux服务器内网络192的IP
请试验一下上面的两条命令,我的理解是您有一台只能通过内网访问的服务器137.0.6.2,现在您想通过一台接入公网的Linux来访问137.0.6.2这台服务器,是吗?
注意第一条命令,因为您没有说明您想要访问的是那种服务(www、mail、ssh等),所以我把所有通过公网接口进入的连接都重定向到137.0.6.2服务器上。这是很有问题的,请自行修改加上一些限制。
现在能不能访问的关键是您的路由表的设置,如果上面的指令不能达到您要的效果,请详细说明您要访问137.0.6.2上面的服务,Linux上面的路由表。

离线yahaba88.
发帖
2115
C币
-235507
威望
411
贡献值
1
银元
-2
铜钱
4751
人人网人气币
0
只看该作者 4楼 发表于: 2010-04-13


QUOTE:原帖由 一舸秋雨 于 2006-8-2 14:04 发表
137网段有访问控制规则,只有192的地址能够访问



那么在你的linux机器上必须设置路由,使用访问137网段通过192的那个接口

然后在linux机器上做地址转换

iptables -t nat -A PREROUTING -i 本机外网接口 -d 本机外网IP -p tcp --dport 需要提供服务的端口号 -j DNAT --to 服务器IP

然后在linux机器上

iptables -t nat -A POSTROUTING -o 192的接口 -j MASQUERADE
必须这么做,因为你的linux机器不是137访问外网的路由节点


这样,外网访问137的服务器时,就使用你的linux机器的IP作为目的IP

[ 本帖最后由 springwind426 于 2006-8-2 16:20 编辑 ]

发帖
2099
C币
-235665
威望
403
贡献值
1
银元
-1
铜钱
4673
人人网人气币
0
只看该作者 5楼 发表于: 2010-04-13
感谢各位的解答,非常感谢

按照各位的解答我试验了一下

在iptables中添加两条规则

iptables -t nat -A PREROUTING -i eth0 -d 222.150.241.2 -p tcp --dport 5000 -j DNAT --to-destination 137.0.6.2

iptables -t nat -A POSTROUTING -d 137.0.6.2 -j SNAT --to-source 192.168.0.248

同时在linux的route表中添加

route add -net 137.0.0.0 netmask 255.0.0.0 gw 192.168.0.1 dev eth1

这样仍然无法访问服务器

不好意思,上次没有说明白,这个服务器是提供给整个局域网的OA系统,目前只能在局域网内访问,我的目的是在家中也可以处理一些事情,于是想直接DNAT到服务器的80端口

整个网络的结构如下:

局域网网段为192.168.0.1/24,网关为192.168.0.1,服务器所在网段137.0.0.0/8,与网关之间三层路由相通。现在192.168.0.248设立一linux服务器,两块网卡,eth0配置公网地址222.150.241.2,eth1配置内网地址192.168.0.248

还请各位大侠帮忙,谢谢~

[ 本帖最后由 一舸秋雨 于 2006-8-3 01:06 编辑 ]

离线hrq456.
发帖
1935
C币
-61048
威望
359
贡献值
1
银元
-2
铜钱
4327
人人网人气币
0
只看该作者 6楼 发表于: 2010-04-13


QUOTE:原帖由 springwind426 于 2006-8-2 16:18 发表



那么在你的linux机器上必须设置路由,使用访问137网段通过192的那个接口

然后在linux机器上做地址转换

iptables -t nat -A PREROUTING -i 本机外网接口 -d 本机外网IP -p tcp --dport 需要提供服务的 ...



试着配置了一下,也不可以啊

离线aaer.
发帖
2090
C币
-152446
威望
394
贡献值
1
银元
-6
铜钱
4772
人人网人气币
0
只看该作者 7楼 发表于: 2010-04-13
你画个详细拓扑图出来吧,把 IP 和 routing 配置也贴出来,感觉现在就像是瞎猫在捉死耗子

快速回复
限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
上一个 下一个