我正在尝试使用 IPtables 设置透明代理,但运气不佳。
我希望将所有传出流量转发到端口 9040,并阻止其他所有流量。有什么想法吗?
iptables -t nat -A OUTPUT ! -o lo -p tcp -m owner --uid-owner Mark -m tcp -j REDIRECT --to-ports 9040
iptables -A OUTPUT -m --uid-owner Mark -j DROP
我收到以下错误 -
(警告):UDP 写入 68.32.239.182:21755 失败:操作不允许
谢谢
答案1
问题在于你的规则太严格了。
iptables -t nat -A OUTPUT ! -o lo -p tcp -m owner --uid-owner Mark -m tcp -j REDIRECT --to-ports 9040
iptables -A OUTPUT -m --uid-owner Mark -j DROP
第一条规则重定向全部 TCP流量到端口 9040,而不试图辨别它是可代理的(例如 HTTP)还是不可代理的(例如 SSH)。
第二条规则被取消全部流量、TCP、UDP、随便什么。
您应该删除第二条规则,并将OUTPUT
链的策略设置为ACCEPT
。这将允许所有流量通过。(尽管它不会解决非代理流量被重定向到代理的问题)。