我不知道为什么我的iptable规则阻止访问https://example.com:9700尽pipeaccept规则被添加
我开始清理一切
iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT iptables -t nat -F iptables -t mangle -F iptables -F iptables -X
然后放下所有东西,为ssh和我的9700端口添加exception
iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT DROP iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 9700 -j ACCEPT iptables -A OUTPUT -p tcp --sport 9700 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
第二套规则后,服务工作结束后停止工作。
请注意,SSH的规则工作得很好。 在添加规则后,我可以通过SSH重新连接到我的服务器
DNS问题validation的DNS不是每个答案的工作。 但是,这并不能解释为什么我仍然无法通过IP地址访问它: https://xx.xxx.xx.x:9700
你能解决example.com的名字吗? 如果您阻止访问任何名称服务,您的计算机将无法访问example.com – 您必须将主机example.com和他的IP地址添加到/ etc / hosts中,或为您的DNS添加一个iptables例外。
正如这里发布的,DNS查询的例外是:
iptables -A INPUT -p udp --source-port 53 -j ACCEPT
编辑 :
由于你解决了DNS问题,我深入了解你的规则,并且对于我对iptables的理解,它不能工作。 您允许在目标端口9700上(在您的机器上)允许inputstream量(到您的机器),并从本地端口9700输出stream量(从机器到外部)。
你想要的是完全相反的(或者我错了吗?):你希望你的机器到达9700端口的外部服务器,并且你希望这个服务器能够回答你。
所以你的最后两条规则应该是:
iptables -A OUTPUT -p tcp -m tcp --dport 9700 -j ACCEPT iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
这允许从任何端口开始的stream量(因为您不能控制协议将用于输出stream量的端口)到端口9700上的任何其他机器,并允许来自世界上任何其他机器的stream量到您的计算机IF数据包是已经build立的连接的一部分。
尝试:
iptables -t filter -P INPUT DROP iptables -t filter -P OUTPUT DROP iptables -t filter -P FORWARD DROP iptables -t filter -A INPUT -i lo -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -t filter -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 9700 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -t filter -A OUTPUT -p tcp --sport 9700 -m state --state ESTABLISHED -j ACCEPT
我假设parsingexample.com IP地址的DNS服务器不是同一台机器。
另外,我不认为将OUTPUT链的策略设置为ACCEPT确实是一个问题。 试试看。
这套规则适用于我。 它也应该为你工作。
最好的祝福!