我的 iptables 规则是:
-P INPUT DROP
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -s 192.168.2.0/24 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 192.168.2.0/24 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s 192.168.2.0/24 -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i tun0 -j ACCEPT
-A INPUT -s 192.168.2.0/24 -p tcp -m tcp --dport 139 -j ACCEPT
-A INPUT -s 192.168.2.0/24 -p tcp -m tcp --dport 445 -j ACCEPT
-A INPUT -p udp -m udp --dport 4567 -j ACCEPT
-A FORWARD -s 10.8.0.0/24 -i tun0 -o eth0 -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
我想使用 Let's Encrypt 更新 TLS 证书,为此我需要打开端口 80,因此我在路由器中转发了它。
然而,当检查日志时(我临时j LOG
为INPUT
链添加了一条规则),我可以看到端口 80 被远程地址作为源 IP(当然,它在我的本地网络之外)访问,并且根据我的iptables
规则,192.168.2.0/24
只能访问我的网络服务器。
我该怎么做?每次我想更新 TLS 证书时,是否都需要更改防火墙规则?
我也有点惊讶,因为我认为使用 NAT,源 IP 应该是我的路由器的 IP,而不是发出请求的实际远程 IP……