LinuxSir.cn,穿越时空的Linuxsir!

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

请教kevin老师一个端口映射的问题

[复制链接]
发表于 2006-7-21 11:43:17 | 显示全部楼层 |阅读模式
一台在公网上的linux服务器(无内网连接),外网需要监听一个80端口的应用程序,但由于80端口非root用户无法启动,因此想将应用程序的端口改成任意端口,如:8999,但是在外网监听还是80端口.用iptables语句如何实现?
发表于 2006-7-21 12:34:32 | 显示全部楼层
iptables -t nat -A  PREROUTING  -i $ETHERNET -p tcp  --dport  $S_PORT -j DNAT --to-destination $D_IPD_PORT

$ETHERNET  你用来接收包的设备名
$S_PORT   你用来接收包的源端口
$D_IP    目标IP
$D_PORT 目标端口
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-23 13:24:31 | 显示全部楼层
$D_IP 目标IP
$D_PORT 目标端口

这里的目标ip是指我机器的公网ip(就一个ip一块网卡eth0)还是指监听人的公网ip:80?
回复 支持 反对

使用道具 举报

发表于 2006-7-24 13:47:46 | 显示全部楼层
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination $D_IP:8999

# D_ip 当然是指你机器的IP(即公网的IP);

BTW,另外,问一下kevin老师,上面的规则可不可以这样写呀?

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination eth0:8999

即将$D_IP用eth0代替
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-24 15:36:22 | 显示全部楼层
试过可以了 本以为这种端口映射可以在 netstart -nlp 中看到~~~
多谢两位kevin ^^
回复 支持 反对

使用道具 举报

发表于 2006-7-24 16:20:29 | 显示全部楼层
Post by kevin.tan
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination $D_IP:8999

# D_ip 当然是指你机器的IP(即公网的IP);

BTW,另外,问一下kevin老师,上面的规则可不可以这样写呀?

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination eth0:8999

即将$D_IP用eth0代替


不可以!除非你在/etc/hosts里定义了eth0的ip指向!:-)
iptables 的man里标准策略是 --to-destination ipaddr[-ipaddr][:port-port]
ipaddr是必须的!
回复 支持 反对

使用道具 举报

发表于 2006-7-24 19:43:13 | 显示全部楼层
谢谢kevin老师:)

刚才man了一下,真强,竟然可以指定IP和端口范围:)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-25 12:31:23 | 显示全部楼层
--to-destination 后面是不可以跟网卡地址di^^
不过--dport后面应该跟的是80 好像大家都错了
另外一个同事给了我一条更好的语句以供大家参考,两条语句都测试过,均可实现目标

#-A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 211.***.***.***:15290
#-A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 15290
回复 支持 反对

使用道具 举报

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

本版积分规则

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