访问不到云服务器中的项目

1 minute read

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  

5. 查看阿里云的安全网组的设置,将需要开放的端口加到安全组

阿里云安全组规则.json