免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 一舸秋雨
打印 上一主题 下一主题

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

论坛徽章:
0
11 [报告]
发表于 2006-08-03 09:22 |只看该作者
你的OA是80端口

如果你想用linux的5000端口来访问的话:

eth0是外网接口 IP1 GW1
eth1是内网接口 IP2 GW2

ip route add 137.0.0.0/8 via GW2 dev eth1 src IP2 #访问OA服务器从eth1连接,只是你作用8作为子网掩码,这个似乎太大了吧。

echo "1" > /proc/sys/net/ipv4/ip_forward #打开IP转发
iptables -t nat -A PREROUTING -i eth0 -d IP1 -p tcp --dport 5000 -j DNAT --to 137.0.6.2:80
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

如果你的linux有防火墙,必须打开对本机的5000端口的访问,还要打开对 OA服务器的80端口的访问

论坛徽章:
0
12 [报告]
发表于 2006-08-03 09:24 |只看该作者
iptables配置如下
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  anywhere             222.150.241.2      tcp dpt:5000 to:137.0.6.2
Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
\SNAT       all  --  192.168.0.0/24       anywhere           to:222.150.241.2
SNAT       all  --  anywhere             137.0.6.2        to:192.168.0.248

为了调试,防火墙所有端口暂时处于开放状态

route 配置如下
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
1.0.0.0         222.150.241.2   255.255.255.248 UG    0      0        0 eth0
222.150.241.0   *               255.255.255.248 U     0      0        0 eth0
192.168.11.0     192.168.0.1     255.255.255.0   UG    0      0        0 eth1
192.168.0.0     *               255.255.255.0   U     0      0        0 eth1
127.0.0.0       *               255.0.0.0       U     0      0        0 lo
137.0.0.0       192.168.0.1     255.0.0.0       UG    0      0        0 eth1
default         222.150.241.1   0.0.0.0         UG    0      0        0 eth0

其中192.168.11.0/24是和192.168.0.0/24平行的网段,通过192.168.0.1路由

论坛徽章:
0
13 [报告]
发表于 2006-08-03 09:27 |只看该作者
原帖由 springwind426 于 2006-8-3 09:22 发表
你的OA是80端口

如果你想用linux的5000端口来访问的话:

eth0是外网接口 IP1 GW1
eth1是内网接口 IP2 GW2

ip route add 137.0.0.0/8 via GW2 dev eth1 src IP2 #访问OA服务器从eth1连接,只是你作用8作 ...



谢谢,呵呵,137.0.0.0/8包含n个网段,平时很多办公系统分布在不同的网段,综合了一下,只有这个8位掩码可以囊括全部了,我试试先

论坛徽章:
0
14 [报告]
发表于 2006-08-03 10:01 |只看该作者
-        192.168.0.0/24网段
                               -
                       ---------
                       -                   -华为NE40路由器 gw:192.168.0.1
                       -                  -                 指向137.0.0.0/8 网段
                       ---------
                               -
                               -
                               -137.0.0.0/8网段
                               -
                               -
                       ---------
                       -                  -服务器137.0.6.2
                       -                  -
                       ---------

这部分没看懂

论坛徽章:
0
15 [报告]
发表于 2006-08-03 10:31 |只看该作者
原帖由 platinum 于 2006-8-3 10:01 发表
-        192.168.0.0/24网段
                               -
                       ---------
                       -                   -华为NE40路由器 gw:192.168.0.1
            ...



是这个样子的:192.168.0.0/24网关192.168.0.1配置在华为NE40路由器上,在没有linux服务器以前,所有的流量都是走网关NE40的,同时NE40上有路由策略将通过192.168.0.1访问其他网段的数据包转发到其他网段的网关,然后再到达目的地。

我推测的包路径为
anywhere--222.150.241.2:5000--192.168.0.248(端口不定)--192.168.0.1--137.0.6.1--137.0.6.2

查看了许多NAT的资料,如果源地址为222.150.239.5的话,那么
1。经过DNAT,其目的地址应该为137.0.6.2,源地址还是222.150.239.5
2。经过SNAT,将其源地址伪装为192.168.0.248,目的地址为137.0.6.2
3。路由,将包转发到192.168.0.1上
4。二次路由,通过路由策略将包转发到137.0.6.1上

但是我对上述第二步还有疑问,再做DNAT时,iptables规则设置为目标地址转换为137.0.6.2:80 ,但是经过转换,我用tcpdump抓包检查,从eth1上发出的包,就是192.168.0.248发出的包,目的地为137.0.
28.6:3824,这个是怎么回事啊,中间转换的时候80端口会转换的吗?而且收不到目的地为192.168.0.248的包,貌似包回不来,可能被192.168.0.1丢弃了,这是为什么啊

论坛徽章:
1
2015元宵节徽章
日期:2015-03-06 15:50:39
16 [报告]
发表于 2006-08-03 10:41 |只看该作者
我没看懂那个图,我觉得是不是这样的图?
如果想从Internet上访问a.b.c.d到137,走的是linux-router-router.....137.0.6.2,但是访问列表限制了源地址,肯定无法访问;
如果是访问a.b.c.d-internet-137.0.6.2,那就需要更改137.0.6.2的路由甚至默认网关吧,那192.168.0.0/24里面的电脑正常访问OA的时候,是不是会有问题?

[ 本帖最后由 dbsrv 于 2006-8-3 11:12 编辑 ]

net1.jpg (20.98 KB, 下载次数: 15)

net1.jpg

论坛徽章:
0
17 [报告]
发表于 2006-08-03 10:55 |只看该作者
正常情况下,通过DNAT转换后是可以设置目的IP和端口的

--to-destination 137.0.6.2:80 就应该是正确的。

你可以试试在linux主机上做路由跟踪,看看本机访问 OA服务器 是怎么走的。

然后在本机上访问OA服务器,用tcpdump抓包看看。

还有,你把一些信息贴出来:
cat /proc/sys/net/ipv4/ip_forward
route -n
traceroute OA服务器IP
iptables -t nat -L -n
iptables -L -n

大家帮你分析分析

论坛徽章:
0
18 [报告]
发表于 2006-08-03 11:10 |只看该作者
汗...............不会贴图................
贴个附件吧,是网络拓扑

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

net.JPG (20.33 KB, 下载次数: 18)

网络拓扑

网络拓扑

论坛徽章:
1
2015元宵节徽章
日期:2015-03-06 15:50:39
19 [报告]
发表于 2006-08-03 11:28 |只看该作者
HOHO,图我猜对了.顶一下!
137的地址只允许192地址来访问,那么从222.150-internet-137.0.6.2肯定不行了;
从222.150.241.2-192.168.0.248-192.168.0.1-......137.0.6.2倒是应该可以,但是楼主在家里访问137,得做双向NAT了吧?先把222.150的80端口指向137,再把楼主家里的地址穿过linux时变换为192.168.0.248

还有,如果楼主家是动态IP,137.0.6.2的路由或者网关咋写?乱了.

[ 本帖最后由 dbsrv 于 2006-8-3 11:32 编辑 ]

论坛徽章:
1
2015元宵节徽章
日期:2015-03-06 15:50:39
20 [报告]
发表于 2006-08-03 11:45 |只看该作者
如果楼主的IP是动态IP的话,楼主的linux再小做修改是不是就成了Internet上一个代理服务器了?至少应该可以进入你的内网吧....hoho,好可怕.楼主要是只想在家访问OA,出个歪招,DNAT到内网的一个主机的3389上,在家访问内网计算机,再用OA.
好像有点跑题...............hoho
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP