访问不到云服务器中的项目
Published:
可能的原因
- 项目未部署成功
- 防火墙端口没开放 三种解决方案:关闭防火墙,防火墙开放访问的指定端口,配置iptables
- 安全组端口没添加
1. 确定本地是否可以访问
curl http://127.0.0.1:3000
output:
hello<网页的内容>
说明是正常的
2. 检查是否开启3000端口
netstat -an | grep 3000
output
tcp 0 0 0.0.0.0:8890 0.0.0.0:* LISTEN
3. 检查防火墙是否关闭
ubuntu:
sudo ufw status
output:
Status: inactive //关闭
Status: active//开启
centos:
$firewall-cmd --state
not running
防火墙相关的操作(ubuntu)
关闭防火墙
sudo ufw disable
开启防火墙
sudo ufw enable
打开3000端口
sudo ufw allow 3000
防火墙重启
sudo ufw reload
启动ufw防火墙
ufw enable
启动默认防御(阻止外部联接,放行对外联接)
ufw default deny
允许其它主机访问本机53端口,协议包含tcp和udp
ufw allow 53
允许其它主机使用tcp协议访问本机25端口
ufw allow 25/tcp
ufw也可以检查 /etc/services文件,明白服务的名字及对应的端口和协议
ufw allow smtp
ufw同时支持出入口过滤。用户可以使用in或out来指定向内还是向外。如果未指定,默认是inufw allow in http # 许可访问本机http端口
禁止访问外部smtp端口,不告知“被防火墙阻止”
ufw reject out smtp
禁止本机192.168.1.1对外访问,告知“被防火墙阻止”
ufw deny out to 192.168.1.1
要删除规则,只要在命令中加入delete就行了
ufw delete deny 80/tcp
实例
设置允许访问 SSH
sudo ufw allow 22/tcp
设置允许访问 http
sudo ufw allow 80/tcp
设置允许访问 https
sudo ufw allow 443/tcp
设置允许访问 pptp
sudo ufw allow 1723/tcp
4. 检查iptables规则
查看所有规则
iptables -L
清楚所有规则
iptables -F
如果开启的防火墙,那就把添加的端口加到iptables规则里面
关闭所有的 INPUT FORWARD OUTPUT 只对某些端口开放。
下面是命令实现:
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
再用命令
iptables -L -n
查看 是否设置好, 好看到全部 DROP 了
这样的设置好了,我们只是临时的, 重启服务器还是会恢复原来没有设置的状态 还要使用 service iptables save 进行保存
service iptables save 看到信息 firewall rules 防火墙的规则 其实就是保存在 /etc/sysconfig/iptables
可以打开文件查看 vi /etc/sysconfig/iptables
下面我只打开3000端口,看我是如何操作的,就是下面2个语句
iptables -A INPUT -p tcp --dport 3000 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 3000 -j ACCEPT
再查看下 iptables -L -n
是否添加上去, 看到添加了
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:22
现在Linux服务器只打开了22端口,用putty.exe测试一下是否可以链接上去。 可以链接上去了,说明没有问题。
最后别忘记了保存 对防火墙的设置 通过命令:service iptables save
进行保存
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
针对这2条命令进行一些讲解吧
-A 参数就看成是添加一条 INPUT 的规则
-p 指定是什么协议 我们常用的tcp 协议,当然也有udp 例如53端口的DNS
到时我们要配置DNS用到53端口,大家就会发现使用udp协议的,而 –dport 就是目标端口,当数据从外部进入服务器为目标端口,反之,数据从服务器出去,则为数据源端口 使用 –sport,-j 就是指定是 ACCEPT 接收 或者 DROP 不接收
删除iptables规则
iptables -L INPUT --line-numbers 列出INPUT 链所有的规则
num target prot opt source destination
1 REJECT tcp -- anywhere anywhere tcp dpt:microsoft-ds reject-with icmp-port-unreachable
2 REJECT tcp -- anywhere anywhere tcp dpt:135 reject-with icmp-port-unreachable
...
...
删除指定的第2行规则:
iptables -D INPUT 2