无法连接到 Centos 6.3 上的 Ruby on Rails 开发服务器

san*_*ott 5 iptables centos ruby-on-rails centos6 ruby-on-rails-3

我在连接到我的 Ruby on Rails 开发服务器时遇到问题:

当我在不同的网络浏览器中输入 192.168.0.10:3000 时,连接就会超时。

我怀疑问题出在我的防火墙配置上,但我尝试打开所有内容,但似乎不起作用。

服务器在我的本地网络上,有一个静态 IP 并且配置正确 - 我可以通过 SSH 连接到盒子,它可以连接到互联网进行更新。它运行 CentOS 6.3,我按照以下说明安装了 Rails:http : //itekblog.com/ruby-on-rails-on-centos-6-3-is-easy/

服务器正在运行:我可以使用 wget localhost:3000 下载“Welcome Aboard”页面

我认为它应该监听所有接口:

[sandy@pops testproject4]$ rails server
=> Booting WEBrick
=> Rails 3.2.8 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2012-08-18 18:29:04] INFO  WEBrick 1.3.1
[2012-08-18 18:29:04] INFO  ruby 1.8.7 (2011-06-30) [i386-linux]
[2012-08-18 18:29:04] INFO  WEBrick::HTTPServer#start: pid=9881 port=3000
Run Code Online (Sandbox Code Playgroud)

我想我已经打开了所有端口

[sandy@pops testproject4]$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
ACCEPT     icmp --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh 
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited 
ACCEPT     all  --  anywhere             anywhere            

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination    
Run Code Online (Sandbox Code Playgroud)

任何帮助解决这个问题将不胜感激

use*_*517 8

看起来这个问题是因为当你添加你使用的 open all 行时iptables -A INPUT ...,它在 REJECT all 规则之后尽职尽责地将它添加到 INPUT 链的末尾。

由于 iptables 在第一场比赛中获胜,因此您的接受所有规则永远不会匹配,因此端口 3000 被阻止。

您应该使用iptables -I...将规则插入链中的特定位置或开头,例如

iptables -I INPUT -p tcp --dport 3000 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

应该做你想做的。

如果您想保存规则以便在重新启动后一切正常,请执行以下操作:

service iptables save
Run Code Online (Sandbox Code Playgroud)