LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1272|回复: 7

adsl端口映射问题

[复制链接]
发表于 2005-7-28 09:41:08 | 显示全部楼层 |阅读模式
我在处理adsl端口映射问题,无法通过。
我用一台主机,双网卡,eth0自动获取ip,接adsl modem,eth1内网固定ip,接交换机。现在欲通过端口映射从外网访问内网,就是过不了,我的做法如下:
/sbin/iptables -A FORWARD -i ppp0 -o eth1 -d 192.168.134.16 -p tcp --dport 80 -m state --state NEW -j ACCEPT
/sbin/iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to-destination 192.168.134.16:80
/sbin/iptables -t nat -A POSTROUTING -s 192.168.134.0/24 -d 192.168.134.16 -p tcp --dport 80 -j MASQUERADE

就是过不了,甚至所有上网都访问到16这台了。搞不太清楚,大家帮我看看什么原因?
发表于 2005-7-28 21:01:28 | 显示全部楼层
iptables -t nat -A PREROUTING -i eth0 -p tcp -s 你的ppp0ip地址 --dport 80 -j REDIRECT to 192.168.134.16:80

试试看吧 我觉得应该是这样

去掉下面这条
/sbin/iptables -t nat -A POSTROUTING -s 192.168.134.0/24 -d 192.168.134.16 -p tcp --dport 80 -j MASQUERADE
这条成了所有192.168.134。0/24 网段的全都从你16这个ip伪装出去了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-7-31 15:37:16 | 显示全部楼层
有个问题,我的pppip是动态获取的,如果设置成固定的,那不是每次都得改一次。
回复 支持 反对

使用道具 举报

发表于 2005-7-31 21:46:39 | 显示全部楼层
那没有办法啊。。。。。 动态的只能如此
回复 支持 反对

使用道具 举报

发表于 2005-8-2 16:14:23 | 显示全部楼层
可能应该是 --state NEW,ESTABLISHED 吧,否则回复的报文可能会被阻止。
回复 支持 反对

使用道具 举报

发表于 2005-8-6 23:09:25 | 显示全部楼层
正在学习iptables,看了楼主的问题,我想不知道这样行不行,没试过,高手给看看:
/sbin/iptables -t nat -A PREROUTING -d ppp0地址 -j DNAT --to-destination 192.168.134.16:80
/sbin/iptables -A FORWARD -p tcp -i eth0 -d 192.168.134.16  --dport 80  -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -t nat -A POSTROUTING -s 192.168.134.16:80 -j SNAT --to-source ppp0地址
(这三句的顺序对不对,我觉得应该是先DNAT,再过滤)

看上面楼主兄弟的第三句,是不是不想让内网访问?那就不要用POSTROUTING,这个链子只能做网址转译。

ppp0地址是比较麻烦,不过如果用个脚本可能会好些,下面是我设想的,不知对不对,
比如每次拨号后执行一下:
[php]
#!/bin/sh
ifconfig ppp0 | grep inet > /tmp/ppp0.tmp
cut  -c 21-36 /tmp/ppp0.tmp > /tmp/ppp_0
[/php]

把上面iptables里第二句改成:
for ppp0 in 'cat /tmp/ppp_0'
do
/sbin/iptables -t nat -A PREROUTING -d $ppp0 -j DNAT --to-destination 192.168.134.16:80
done
拨号后重启防火墙。

自己对iptables还觉得很生疏,请大家指点。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-8-7 21:49:42 | 显示全部楼层
/sbin/iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 22222 -j DNAT --to-destination 192.168.134.108:22222
/sbin/iptables -A FORWARD -p tcp -d 192.168.134.108 --dport 22222 -j ACCEPT
/sbin/iptables -t nat -A POSTROUTING -d 192.168.134.108 -p tcp --dport 22222 -j SNAT --to 192.168.134.1:22222
好象这样可以
回复 支持 反对

使用道具 举报

发表于 2005-8-8 08:32:17 | 显示全部楼层
Post by hhl00
/sbin/iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 22222 -j DNAT --to-destination 192.168.134.108:22222
/sbin/iptables -A FORWARD -p tcp -d 192.168.134.108 --dport 22222 -j ACCEPT
/sbin/iptables -t nat -A POSTROUTING -d 192.168.134.108 -p tcp --dport 22222 -j SNAT --to 192.168.134.1:22222
好象这样可以

前两句我能看懂,第三句的作用是什么?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表