我正在尝试弄清楚我的网络发生了什么,并希望对这个问题有所了解。
因此,我的系统目前通过 TCP 端口 443 与 https 服务器通信。因此,我要求我的网络团队关闭除以下端口之外的所有其他端口上的所有入站和出站流量:
- 端口 443 上的 TCP IN 和 OUT
- UDP 端口 80
- ICMP
但一旦我这样做,我的系统就完全停止了通信。
我仍然可以执行 ping。但我的简单 curl 请求(如下所示)不起作用
curl -X GET "https://www.google.com"
我收到的错误是
curl: (7) Failed to connect to www.google.com port 443: Connection refused
我不明白的是,如果我的网络团队在端口 443 上打开了入站和出站流量。我的数据包难道不应该直接通过吗?我在这里遗漏了什么?我该如何调试这种特殊情况。
我运行了这两个命令来允许通过 https 进行所有通信:
iptables -A INPUT -p tcp --dport 443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 443 -m conntrack --ctstate ESTABLISHED -j ACCEPT
这是 netstat 结果
netstat -tan
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:5355 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN
tcp 0 1 192.168.1.45:58272 13.32.81.90:443 SYN_SENT
tcp 0 0 :::5355 :::* LISTEN
tcp 0 0 :::22 :::* LISTEN
tcp 0 624 ::ffff:192.168.1.45:22 ::ffff:192.168.1.31:52468 ESTABLISHED
值得注意的是,我在 netstat 中没有看到任何 443 端口?我真的不适应这种情况。任何有关此问题的帮助都将不胜感激。现在,我不清楚这里发生了什么。我的以太网是 DHCP 上的 ipv4,DNS 设置为 8.8.8.8
编辑 1:根据建议。我添加了以下规则
iptables -A OUTPUT -p udp -d 8.8.8.8 --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp -s 8.8.8.8 --sport 53 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -d 8.8.8.8 --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -s 8.8.8.8 --sport 53 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dports 21,80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --sports 21,80,443 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p icmp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p udp --dport 123 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp --sport 123 -m state --state ESTABLISHED -j ACCEPT
但我仍然无法执行我的 curl 命令
答案1
您的 FW 规则仅允许应答端口 443 上已建立的入站请求您需要另一条规则,允许将流量输出到 DST 端口 443(您还应允许出站 DNS 流量进行名称解析)