QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1101|回复: 7

为什么DNAT只对80端口生效?

[复制链接]
发表于 2005-10-31 13:16:50 | 显示全部楼层 |阅读模式
各位好,我现在使用linux做网关,原来的时候可以在任何端口进行dnat,使互联网可以访问内部的服务。但是不知道突然怎么了,只有在对80端口的转换可以正常。其他转换都失败了。不知道为什么,急需解决啊
      而且internet上的机器也不能远程登陆了,我检查了一下,并没有禁止啊
发表于 2005-10-31 13:58:22 | 显示全部楼层
贴脚本,把能贴的贴出来看下
回复

使用道具 举报

 楼主| 发表于 2005-10-31 14:31:05 | 显示全部楼层
#!/bin/sh
#eth0 192.168.16.1
#eth1 192.168.8.254
#eth4 Inet1
#eth3 192.168.20.254

echo "StartIng FireWall!!!"



/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_conntrack_ftp
#/sbin/insmod /usr/src/ipp2p-0.8.0_rc3/ipt_ipp2p.ko
/sbin/modprobe libipt_connlimit

#/sbin/modprobe /lib/iptables/libipt_iplimit.so

#Refresh all Chains
/sbin/iptables -F
/sbin/iptables -F -t nat
/sbin/iptables -F -t mangle

#*****************************************
#SET default rule
#****************************************
#/sbin/iptables -P INPUT DROP   
/sbin/iptables -P INPUT DROP

/sbin/iptables -P FORWARD DROP

#feng================================================
/sbin/iptables  -I INPUT -m ipp2p --ipp2p -j DROP
/sbin/iptables  -I FORWARD -m ipp2p --ipp2p -j DROP
#=====================================================


#***************************************************




#Accept data that the answer of the local request
/sbin/iptables -A INPUT -i eth4 -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A INPUT -i eth4  -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A FORWARD -i eth+ -m state --state ESTABLISHED,RELATED -j ACCEPT



/sbin/iptables -A INPUT -i eth4  -p tcp --dport 23 -j REJECT
/sbin/iptables -A INPUT  -p tcp --dport 445 -j DROP
/sbin/iptables -A FORWARD  -p tcp --dport 445 -j DROP
/sbin/iptables -A INPUT  -p tcp --dport 137:139 -j DROP
/sbin/iptables -A FORWARD  -p tcp --dport 137:139 -j DROP
/sbin/iptables -A INPUT  -p tcp --dport 5554 -j DROP
/sbin/iptables -A FORWARD  -p tcp --dport 5554 -j DROP
/sbin/iptables -A INPUT  -p tcp --dport 1433:1444 -j DROP
/sbin/iptables -A FORWARD  -p tcp --dport 1433:1444 -j DROP

/sbin/iptables -A FORWARD -d iebar.t2t2.com -j DROP
/sbin/iptables -A FORWARD -d t2t2.com -j DROP


/sbin/iptables -A INPUT -i eth0 -j ACCEPT

#test

echo 1 >> /proc/sys/net/ipv4/ip_forward
/sbin/iptables -P FORWARD ACCEPT
/sbin/iptables -P INPUT ACCEPT

/sbin/iptables -t nat -A POSTROUTING -p udp --dport 53 -o eth4 -j SNAT --to Inet1

#------------------------------------------------------------------------------------------------------

/sbin/iptables -t nat -A POSTROUTING -s 192.168.16.0/24 -o eth4 -j SNAT --to Inet1
  

#Internet Port Relay
/sbin/iptables -t nat -A PREROUTING  -p tcp -d Inet2 -m tcp  --dport 80  -j DNAT --to 192.168.16.100:80
#/sbin/iptables -t nat -A POSTROUTING -d 192.168.16.114 -p tcp --dport 80 -j SNAT --to 192.168.16.1

/sbin/iptables -t nat -A PREROUTING -d Inet2 -p tcp -m tcp --dport 20 -j DNAT --to 192.168.16.100:20
/sbin/iptables -t nat -A PREROUTING -d Inet2 -p tcp -m tcp --dport 21 -j DNAT --to 192.168.16.100:21
/sbin/iptables -t nat -A POSTROUTING -d 192.168.16.114 -p tcp --dport 20 -j SNAT --to 192.168.16.1
/sbin/iptables -t nat -A POSTROUTING -d 192.168.16.114 -p tcp --dport 21 -j SNAT --to 192.168.16.1

/sbin/iptables -t nat -A PREROUTING -d Inet2 -p tcp -m tcp --dport 8081 -j DNAT --to 192.168.16.100:8081
#/sbin/iptables -t nat -A POSTROUTING -d 192.168.16.100 -p tcp --dport 8081 -j SNAT --to 192.168.16.1

/sbin/iptables -t nat -A PREROUTING -d Inet2 -p tcp -m tcp --dport 8082 -j DNAT --to 192.168.16.100:8082
#/sbin/iptables -t nat -A POSTROUTING -d 192.168.16.100 -p tcp --dport 8082 -j SNAT --to 192.168.16.1

/sbin/iptables -t nat -A PREROUTING -d Inet2 -p tcp -m tcp --dport 8085 -j DNAT --to 192.168.16.100:8085
#/sbin/iptables -t nat -A POSTROUTING -d 192.168.16.100 -p tcp --dport 8085 -j SNAT --to 192.168.16.1

/sbin/iptables -t nat -A PREROUTING -d Inet2 -p tcp -m tcp --dport 8083 -j DNAT --to 192.168.16.100:8083
#/sbin/iptables -t nat -A POSTROUTING -d 192.168.16.100 -p tcp --dport 8083 -j SNAT --to 192.168.16.1

/sbin/iptables -t nat -A PREROUTING -d Inet2 -p tcp  --dport 80 -j DNAT --to 192.168.16.100:8087
/sbin/iptables -t nat -A POSTROUTING -d 192.168.16.100 -p tcp  --dport 8087 -j SNAT --to 192.168.16.1

Inet1,Inet2 是公网地址. 省略的部分是流量控制部分的,因为很长所以省略了
回复

使用道具 举报

发表于 2005-10-31 15:06:40 | 显示全部楼层
.............你能做流量控制,说明你比我还强
不要告诉我你用-m limit 做的,我会晕掉的
但是DNAT那部分代码实在是乱.
sbin/iptables -t nat -A PREROUTING -p tcp -d Inet2 -m tcp --dport 80 -j DNAT --to 192.168.16.100:80
sbin/iptables -t nat -A PREROUTING -d Inet2 -p tcp --dport 80 -j DNAT --to 192.168.16.100:8087
不知道,你为什么写重复的。写了后句,前句就没效果,还增加系统负担

/sbin/iptables -t nat -A POSTROUTING -d 192.168.16.114 -p tcp --dport 20 -j SNAT --to 192.168.16.1
/sbin/iptables -t nat -A POSTROUTING -d 192.168.16.114 -p tcp --dport 21 -j SNAT --to 192.168.16.1
这2句我还真没看明白,你做什么用的?FTP映射么也不像,做回路?IP地址也不对

iptables -save 保存到一个文件中。可以看到你系统中实际起作用的代码。
回复

使用道具 举报

发表于 2005-10-31 15:24:53 | 显示全部楼层
防火墙那部分自己检查,看看有没把数据包 DROP掉的
要测试也很容易,cp script script_cp
把script_cp里的防火墙部分去掉,
/sbin/iptables -F
/sbin/iptables -F -t nat
/sbin/iptables -F -t mangle

然后sh script_cp
回复

使用道具 举报

 楼主| 发表于 2005-10-31 16:11:58 | 显示全部楼层
说不上比你强,也是看着介绍把流量控制做起来的,是tc+cbq
我贴的是有点问题。做了两个80是因为在做测试的结果,没有删除掉:(,还有,是做回路,呵呵写错了。
测试的结果是
sbin/iptables -t nat -A PREROUTING -d Inet2 -p tcp --dport 80 -j DNAT --to 192.168.16.100:8087  可以
sbin/iptables -t nat -A PREROUTING -d Inet2 -p tcp --dport 8087 -j DNAT --to 192.168.16.100:8087  不可以。我晕。

仔细查了,没有DROP包的了,我还写了个最简单的,什么都是ACCEPT,但还是不行,只能把80端口的转发。

更奇怪的是,如果用sbin/iptables -t nat -A PREROUTING -d Inet2 -p tcp --dport 8087 -j DNAT --to 192.168.16.100:8087规则时,我在内网访问 http://inet2:8087 可以,但是到公网上访问http://Inet2:8087就不可以了。这就是我更晕的事情了
回复

使用道具 举报

发表于 2005-10-31 16:35:41 | 显示全部楼层
看了你的回复,我觉得问题不出在你的脚本
因为很偶然会触发系统自带的防火墙,只接受80端口数据包似乎是一种防火墙策略
如果你是非图形界面。你可以试下,把IPTABLES这个文件内容清空,当然你可事先做个备份。
然后再重新启动系统试试

另外,我用的FC2,映射端口不用做回路的,一个DNAT就够了,不用SNAT的
回复

使用道具 举报

 楼主| 发表于 2005-10-31 16:43:26 | 显示全部楼层
[quote:06d276430d="yaojiongcn"]看了你的回复,我觉得问题不出在你的脚本
因为很偶然会触发系统自带的防火墙,只接受80端口数据包似乎是一种防火墙策略
如果你是非图形界面。你可以试下,把IPTABLES这个文件内容清空,当然你可事先做个备份。
然后再重新启动系统试试

另外,我用的FC2,映射端口不用做回路的,一个DNAT就够了,不用SNAT的[/quote]
谢谢拉。做回路是因为要让内网通过外网地址访问服务器(哎,某些人的要求啊。)做了回路后,在LAN内就可以使用外网地址访问了,可是就无法知道是什么地址访问的了,因为最后所有对外网地址的访问都成了该机器的内网的地址了,结果就是日志中全部是192.168.16.1访问的:)


[quote:06d276430d="yaojiongcn"]看了你的回复,我觉得问题不出在你的脚本
因为很偶然会触发系统自带的防火墙,只接受80端口数据包似乎是一种防火墙策略
如果你是非图形界面。你可以试下,把IPTABLES这个文件内容清空,当然你可事先做个备份。
[/quote]
你是说可能出发了系统自带的防火墙吗?有这种可能吗,可我进行了晴空的操作,这也不行吗?
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-3 04:31 , Processed in 0.047361 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

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