免费注册 查看新帖 |

Chinaunix

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

[网络管理] linux下作端口转发问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-03-08 12:46 |只看该作者 |倒序浏览
2可用积分

服务器 192。168。0。1:1111
中介linux 192。168。0。2:2222
客户机  192。168。0。3             192。168。0。4           192。168。0。5 等。


客户机想连接服务器  192。168。0。1:1111端口,使用其中的服务,但是现在不想让他直接连接,想让他连接 192。169。0。2:2222由这个端口转发,怎么做?

也就是说 我想在中介linux上配置, 到达192。168。0。2:2222的数据都转发给 192。168。0。1:1111,从192。168。0。1:1111 回来的数据都转发给客户机怎么做?

我用iptable
1 要用 filer 表还是nat表?我认为只有不同网段转发才用nat。但不用nat , 到达192。168。0。2:2222的数据都转发给 192。168。0。1:1111好像难实现。

2 iptable语句如何写?



[ 本帖最后由 aleng 于 2007-3-14 16:41 编辑 ]

最佳答案

查看完整内容

端口转发(两行XNAT iptables命令)可以将所有到A的连接转到B。但是有时候有需求,就是这样转发的B看到的包来源IP是A。如果B机器上是IP敏感的服务(比如邮件系统smtpd 25中的反垃圾功能)就不行。我是问,有办法实现类似转发的功能又保持IP? 目前我是在应用层完成的,效率显然低呀

论坛徽章:
0
2 [报告]
发表于 2007-03-08 12:46 |只看该作者
端口转发(两行XNAT iptables命令)可以将所有到A的连接转到B。

但是有时候有需求,就是这样转发的B看到的包来源IP是A。如果B机器上是IP敏感的服务(比如邮件系统smtpd 25中的反垃圾功能)就不行。

我是问,有办法实现类似转发的功能又保持IP? 目前我是在应用层完成的,效率显然低呀

论坛徽章:
0
3 [报告]
发表于 2007-03-13 16:09 |只看该作者
顶+悬赏    0000

论坛徽章:
0
4 [报告]
发表于 2007-03-13 16:46 |只看该作者
linux上

1.开启转发
echo 1 > /proc/sys/net/ipv4/ip_forward

2.打开网卡的shared_media功能,(通常已经打开)
echo 1 >/proc/sys/net/ipv4/conf/all/shared_media

3.关闭网卡的send_redirects功能
echo 0 >/proc/sys/net/ipv4/conf/all/send_redirects

4.DNAT
iptables -t nat -A PREROUTING -d 192.168.0.2 -p tcp -m tcp --dport 2222 -j SNAT --to-destination 192.168.0.1:1111

应该就可以了

[ 本帖最后由 qtdszws 于 2007-3-13 17:33 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2007-03-13 20:08 |只看该作者
你Linux上的IP是 192.168.0.2吧?

这样试试看(这里不考滤你默认防火墙的设置,假设为关闭的):

在Linux上 192.168.0.2

  1. echo 1 > /proc/sys/net/ipv4/ip_forward
  2. /sbin/iptbales -t nat -A POSTROUTING -s 192.168.0.3 -d 192.168.0.1 -j SNAT --to 192.168.0.2
  3. /sbin/iptables -t nat -A PREROUTING -p tcp --dport 2222 -s 192.168.0.3 -d 192.168.0.2 -j DNAT  --to 192.168.0.1:22
复制代码

在服务器上 192.168.0.1,不让 192.168.0.3 直接访问 port:22,只能通过192.168.0.2:2222 来访问.

  1. /sbin/iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j DROP
复制代码


在客户机上 192.168.0.3....访问.

  1. ssh -p 2222 user@192.168.0.2 (Linux os)
复制代码

如果连接上了,可以在服务器上 (192.168.0.1)  用 tcpdum 查看一下数据的转发~~~

[ 本帖最后由 aib 于 2007-3-13 20:13 编辑 ]

论坛徽章:
4
技术图书徽章
日期:2013-09-23 10:22:37狮子座
日期:2013-10-15 23:31:54卯兔
日期:2013-11-11 17:33:15金牛座
日期:2013-11-15 17:25:28
6 [报告]
发表于 2007-03-13 21:03 |只看该作者

论坛徽章:
0
7 [报告]
发表于 2007-03-13 22:24 |只看该作者
/sbin/iptbales -t nat -A PREROUTING -s 192.168.0.3 -d 192.168.0.1 -j SNAT --to 192.168.0.2
/sbin/iptables -t nat -A POSTROUTING -p tcp --dport 2222 -s 192.168.0.3 -d 192.168.0.2 -j DNAT  --to 192.168.0.1:22

论坛徽章:
0
8 [报告]
发表于 2007-03-14 16:43 |只看该作者
你Linux上的IP是 192.168.0.2吧?---是 的,手误,改正了,3q
iptables -t nat -A PREROUTING -d 192.168.0.2 -p tcp -m tcp --dport 2222 -j SNAT --to-destination 192.168.0.1:1111
----提示没有这个选项  --to-destination   

--to 好像也不行,你们可以试验试验,我也正努力钻研中。

[ 本帖最后由 aleng 于 2007-3-14 17:21 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2007-03-15 13:17 |只看该作者
send_redirects 是干嘛用的?

论坛徽章:
0
10 [报告]
发表于 2007-03-15 14:46 |只看该作者
1.echo 1 > /proc/sys/net/ipv4/ip_forward
2.DNAT
iptables -t nat -A PREROUTING -d 192.168.0.2 -p tcp -m tcp --dport 2222 -j DNAT --to-destination 192.168.0.1:1111
3.SNAT
iptables -t nat -A POSTROUTING -d 192.168.0.1 -p tcp -m tcp --dport 1111 -j SNAT --to-destination 192.168.0.2

[ 本帖最后由 qtdszws 于 2007-3-15 15:09 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP