我无法连接到我的 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 下载“欢迎登机”页面
我认为它应该监听所有接口:
[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
我认为我已经打开了所有端口
[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
任何帮助解决这个问题都会非常感激
沙
答案1
看起来问题是由于您在添加 open all 行时iptables -A INPUT ...
将其添加到了 REJECT all 规则之后的 INPUT 链末尾而引起的。
由于 iptables 在第一次匹配时就起作用,因此您的所有接受规则永远不会匹配,因此端口 3000 被阻止。
您应该使用iptables -I...
将规则插入到链中的特定位置或开头,例如
iptables -I INPUT -p tcp --dport 3000 -j ACCEPT
应该做你想做的事。
如果您希望保存规则,以便重启后一切正常,请执行以下操作:
service iptables save