Я пытаюсь выяснить, что происходит с моей сетью, и, надеюсь, разобрался в этом вопросе.
Итак, моя система в настоящее время обменивается данными с https-сервером через TCP-порт 443. Поэтому я попросил свою сетевую команду закрыть весь входящий и исходящий трафик на всех других портах, кроме
- TCP IN и OUT на порт 443
- UDP-порт 80
- ICMP
Но как только я это сделаю. Теперь моя система вообще перестала общаться.
Я все еще могу выполнить пинг. Но мой простой запрос на завиток, как показано ниже. Не работает
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
Интересно отметить, что я не вижу порта 443 в моем netstat? Я действительно не в своей тарелке. Любая помощь по этому поводу очень ценится. Прямо сейчас у меня нет четкого понимания того, что здесь происходит. Мой Ethernet - это ipv4 на DHCP с DNS, установленным на 8.8.8.8
Edit1: Итак, на основе предложений. Я добавил следующие правила
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
Ваши правила FW разрешают отвечать только на установленные входящие запросы на порт 443. Вам нужно другое правило, в котором вы разрешаете выходной трафик на порт DST 443 (вы также должны разрешить исходящий трафик DNS для разрешения имен)