Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

我利用DNAT配置的端口映射用不了,请帮我看看?

[复制链接]
jk0wg 发表于 2004-10-26 17:54:57 | 显示全部楼层 |阅读模式
我用:
# cp /etc/rc.d/snat-firewall /etc/rc.d/dnat-firewall
# vi /etc/rc.d/dnat-firewall
复制了SNAT并在dnat里加入以下内容,但是运行dnat的时候,有错误提示,不知道是什么问题.

WWW_IP_RANGE="192.168.0.250"
HTTP="8080"
HELIX="554"
$IPT -A INPUT -p tcp --sport $HTTP -j ACCEPT
$IPT -A INPUT -p tcp --sport $HELIX -j ACCEPT
$IPT -t nat -A PREROUTING -p tcp -d $INET_IP --dport $HTTP -j DNAT --to $WWW_IP_RANGE:$HTTP
$IPT -t nat -A PREROUTING -P tcp -d $INET_IP --dport $HELIX -j DNAT --to $HELIX_IP_RANEG:$HELIX
platinum 发表于 2004-10-26 18:53:57 | 显示全部楼层
你要映射的服务是HTTP和MMS吗?
回复

使用道具 举报

 楼主| jk0wg 发表于 2004-10-26 19:13:08 | 显示全部楼层
HTTP服务,端口是8080  
还有helix流媒体的端口554
回复

使用道具 举报

platinum 发表于 2004-10-26 19:53:43 | 显示全部楼层
helix有多种流媒体服务,运行helix的机器上可以看到开启了很多端口
比如,MMS和RTSP,两个端口就是不同的

就你的情况,我给你写一个脚本好了

我不知道你的具体环境是什么,假设好了

假如你有两个网卡
eth0是WAN,eth1是LAN
WAN的IP是1.2.3.4
LAN的IP是192.168.0.0/24这个C类地址
假设192.168.0.250的两个端口也依然是8080和554,tcp协议


  1. #! /bin/bash
  2. echo 1 > /proc/sys/net/ipv4/ip_forward
  3. IPT = "/sbin/iptables"
  4. $IPT -F -t filter
  5. $IPT -F -t nat
  6. $IPT -P INPUT DROP
  7. $IPT -P OUTPUT ACCEPT
  8. $IPT -P FORWARD ACCEPT
  9. $IPT -t nat -P PREROUTING ACCEPT
  10. $IPT -t nat -P POSTROUTING ACCEPT
  11. $IPT -t nat -P OUTPUT ACCEPT

  12. # ALLOW ALL in PRIVATE NET
  13. $IPT -A INPUT -i lo -j ACCEPT
  14. $IPT -A INPUT -i eth1 -j ACCEPT

  15. # ICMP
  16. $IPT -A INPUT -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT

  17. # KEEP CONNECTIONS
  18. $IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

  19. # NAT
  20. $IPT -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
  21. $IPT -t nat -A PREROUTING -s ! 192.168.0.0/24 -d 1.2.3.4 -p tcp --dport 8080 -j DNAT --to 192.168.0.250
  22. $IPT -t nat -A PREROUTING -s ! 192.168.0.0/24 -d 1.2.3.4 -p tcp --dport 554 -j DNAT --to 192.168.0.250
复制代码


注意echo 1 > /proc/sys/net/ipv4/ip_forward这句
因为系统每次启动后没有设置,所以必须执行这句话
如果去掉这句话,需要修改/etc/sysctl.conf,将net.ipv4.ip_forward = 0的值改为1

另外别忘记把这个文件加上执行权限
回复

使用道具 举报

 楼主| jk0wg 发表于 2004-10-26 21:11:59 | 显示全部楼层
版主,我把我的SNAT发给你看看,要怎样添加进去:
#!/bin/bash
echo "1" > /proc/sys/net/ipv4/ip_forward
INET_IFACE="eth1"
//下面的XXX表示外网IP
INET_IP="xxx.xxx.xxx.xxx"
LAN_IFACE="eth0"
LAN_IP="192.168.0.254"
LAN_IP_RANGE="192.168.0.0/24"
IPT="/sbin/iptables"
/sbin/depmod -a
/sbin/modprobe ip_tables
/sbin/modprobe iptable_nat
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ipt_LOG
$IPT -P INPUT ACCEPT
$IPT -P FORWARD ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -P POSTROUTING ACCEPT
$IPT -t nat -P OUTPUT ACCEPT
for TABLE in filter nat mangle ; do
$IPT -t $TABLE -F
$IPT -t $TABLE -X
done
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
for DNS in $(grep ^n /etc/resolv.conf|awk '{print $2}'); do
$IPT -A INPUT -p udp -s $DNS --sport domain -j ACCEPT
done
$IPT -N LOGDENY
$IPT -A LOGDENY -j LOG --log-prefix "iptables:"
$IPT -A LOGDENY -j DROP
$IPT -A INPUT -i ! lo -m state --state NEW,INVALID -j LOGDENY
if [ "$INET_IFACE" =ppp0 ] ; then
$IPT -t NAT -A POSTROUTING -o $inet_iface -j MASQUERADE
else
$IPT -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --TO $INET_IP
fi
回复

使用道具 举报

platinum 发表于 2004-10-26 21:14:44 | 显示全部楼层
放弃,直接用我的就行了
你的那个有什么新功能吗

我觉得你的那个不好~~,有些功能冗余了
回复

使用道具 举报

 楼主| jk0wg 发表于 2004-10-26 21:16:59 | 显示全部楼层
刚才还掉线了,我的哪个,后来自动又好了~~    不知道是什么问题??
回复

使用道具 举报

platinum 发表于 2004-10-26 21:19:41 | 显示全部楼层
SHELL写的好乱~~
懒的看了:)
回复

使用道具 举报

 楼主| jk0wg 发表于 2004-10-26 21:20:46 | 显示全部楼层
你给的哪个直接就有端口映射功能了吧?
回复

使用道具 举报

 楼主| jk0wg 发表于 2004-10-26 21:26:06 | 显示全部楼层
在问一下,你给的哪个安全上没什么问题吧?  还有,你的这个没指定外网IP和内网IP,不知道行不行,可以的话,我今晚就换了用你这个,换的话,是不是直接修改我原来的哪个呢??  

我的是
echo "/etc/rc.d/snat-firewall" >>/etc/rc.d/rc.local

[ Last edited by jk0wg on 2004-10-26 at 21:48 ]
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-12-23 11:52 , Processed in 0.025530 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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