我正在尝试构建一个 iptables 过滤器来阻止除 UID 1000 之外的所有人访问互联网。这是我到目前为止所拥有的:
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -m owner --uid-owner 1000 -j ACCEPT
-A OUTPUT -j REJECT --reject-with icmp-net-unreachable
-A OUTPUT -j DROP
-A INPUT -i lo -j ACCEPT
-A INPUT -j DROP
-A FORWARD -j DROP
COMMIT
当我尝试以 root (UID 0) 身份运行以下命令时:
curl http://ipecho.net/plain
curl: (7) Failed to connect to ipecho.net port 80: Network is unreachable
iptables 根据需要阻止它。但是当我以root身份尝试这个时:
curl --proxy socks5h://localhost:7777 http://ipecho.net/plain
_ip_address_
一切顺利。我需要更改什么才能阻止其他用户的所有互联网访问,即使他们使用代理?
答案1
如果您使用本地代理,则传出网络流量将由代理而非最终用户拥有 uid。我假设代理以 uid 1000 运行。您使用什么作为代理?
您需要使用可以配置为仅允许指定本地用户使用的代理。