免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4127 | 回复: 17
打印 上一主题 下一主题

[网络管理] 请教一个端口映射问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-01-04 15:12 |只看该作者 |倒序浏览
一台linux主机,公网IP固定,假设是219.133.44.55,
主机提供一TCP服务,假设服务端口是100,

一台普通客户端主机,假设拨号IP为58.59.60.61,
客户端访问服务端时,源端口是随机产生的,假设是1025,

即客户端访问服务器时,连接时这样的
58.59.60.61:1025 -> 219.133.44.55:100

因某些原因,这个服务器的提供的服务可能有IP限制,
所以我想做个端口映射避开源IP限制的问题。

让连接结果变成这样
58.59.60.61:1025 -> 219.133.44.55:200
219.133.44.55:200 -> 219.133.44.55:100

即将liunx本机的TCP200端口映射到TCP100端口,并替换源IP为本机IP

这个功能在windows上用porttunnel很容易就实现了,但是linux下真的没搞清楚要怎么设置

现在只设了第一步
iptables -t nat -A PREROUTING -p tcp --dport 200 -d 219.133.44.55 -j DNAT --to 219.133.44.55:100
第二步就不知道该怎么做了...

请教各位高手,应该怎么做可以达到我要的目的?谢谢~

论坛徽章:
0
2 [报告]
发表于 2008-01-04 15:32 |只看该作者
第一步:iptables -t nat -A PREROUTING -p tcp --dport 200 -d 219.133.44.55 -j REDIRECT --to-ports 100
第二步:iptables -t nat -A POSTROUTING -o eth0 -d 219.133.44.55 -j SNAT --to 本机IP

论坛徽章:
0
3 [报告]
发表于 2008-01-04 15:37 |只看该作者
原帖由 songpure520 于 2008-1-4 15:32 发表
第二步:iptables -t nat -A POSTROUTING -o eth0 -d 219.133.44.55 -j SNAT --to 本机IP

谢谢高手,本机IP就是219.133.44.55,
那么这条 iptables -t nat -A POSTROUTING -o eth0 -d 219.133.44.55 -j SNAT --to 219.133.44.55 应该会出错吧?

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-11-12 06:20:00
4 [报告]
发表于 2008-01-04 16:20 |只看该作者
用-j redirect来做

论坛徽章:
0
5 [报告]
发表于 2008-01-04 16:20 |只看该作者
试了一下,第二条 iptables -t nat -A POSTROUTING -o eth0 -d 219.133.44.55 -j SNAT --to 219.133.44.55 没有报错

但是也不起作用,用netstat -n |grep 00后看到依然是 219.133.44.55:100 <- 58.59.60.61:1025

请问是不是漏了什么?

论坛徽章:
0
6 [报告]
发表于 2008-01-04 16:21 |只看该作者
原帖由 ssffzz1 于 2008-1-4 16:20 发表
用-j redirect来做


请问具体命令行怎么写?谢谢~

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-11-12 06:20:00
7 [报告]
发表于 2008-01-04 16:25 |只看该作者
只需要这一条即可
iptables -t nat -A PREROUTING -p tcp --dport 200 -d 219.133.44.55 -j REDIRECT --to-ports 100

然后你帖出IPTABLES-SAVE的结果看看.

论坛徽章:
0
8 [报告]
发表于 2008-01-04 16:32 |只看该作者
原帖由 ssffzz1 于 2008-1-4 16:25 发表
只需要这一条即可
iptables -t nat -A PREROUTING -p tcp --dport 200 -d 219.133.44.55 -j REDIRECT --to-ports 100

然后你帖出IPTABLES-SAVE的结果看看.

不太理解,如果一条就可以的话,返回的包该如何寻路呢?

论坛徽章:
0
9 [报告]
发表于 2008-01-04 16:36 |只看该作者
原帖由 ssffzz1 于 2008-1-4 16:25 发表
只需要这一条即可
iptables -t nat -A PREROUTING -p tcp --dport 200 -d 219.133.44.55 -j REDIRECT --to-ports 100

然后你帖出IPTABLES-SAVE的结果看看.


这样端口映射是成功了,通过 219.133.44.55 的 TCP 200 端口可以访问原 TCP 100 端口的服务,

但是源IP没有替换过来,限制IP的问题依然存在...

我的目的除了端口映射完可以正常访问服务外,访问这个服务的源IP替换成自己的IP,即源IP 58.59.60.61 替换成 219.133.44.55

最后造成是 219.133.44.55 自己访问自己 219.133.44.55 的TCP 100端口的“假象”
219.133.44.55:xxxx -> 219.133.44.55:100
这样的效果能实现吗?

如果只有一条,用netstat -n|grep 100依然是
tcp 0 0 219.133.44.55:100  58.59.60.61:1025 ESTABLISHED

要做到这样的效果可以吗?
netstat -n|grep 100
tcp 0 0 219.133.44.55:100  219.133.44.55:xxxx ESTABLISHED
tcp 0 0 219.133.44.55:xxxx  219.133.44.55:100 ESTABLISHED

netstat -n|grep 00
tcp 0 0 219.133.44.55:100  219.133.44.55:xxxx ESTABLISHED
tcp 0 0 219.133.44.55:200  58.59.60.61:1025 ESTABLISHED
tcp 0 0 219.133.44.55:xxxx  219.133.44.55:100 ESTABLISHED

[ 本帖最后由 PhilCF 于 2008-1-4 16:42 编辑 ]

论坛徽章:
0
10 [报告]
发表于 2008-01-04 16:39 |只看该作者
原帖由 iamshiyu 于 2008-1-4 16:32 发表

不太理解,如果一条就可以的话,返回的包该如何寻路呢?


因为只是映射本机IP,寻路和原来是一样的,这点没有问题,只是要替换源IP的目的没有达到
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP