我想将属于用户“cromy”的所有 http/s 流量重定向到内部代理:
iptables -t nat -A POSTROUTING -d 127.0.0.1 -p tcp -m multiport -m owner --uid-owner cromy --sports 80,443 -j REDIRECT --to-ports 8080
iptables -t nat -A PREROUTING -s 127.0.0.1 -p tcp -m multiport -m owner --uid-owner cromy --dports 80,443 -j REDIRECT --to-ports 8080
不幸的是,它不起作用,我们分别收到以下错误消息:
[ 1317.240826] x_tables: ip_tables: REDIRECT target: used from hooks POSTROUTING, but only usable from PREROUTING/OUTPUT
[ 1265.161118] x_tables: ip_tables: owner match: used from hooks PREROUTING, but only valid from OUTPUT/POSTROUTING
大家有什么想法吗?谢谢。
答案1
根据关于您要实现的目标的很少的信息,我猜您正在寻找:
iptables -t nat -A OUTPUT -d 127.0.0.1 -p tcp -m multiport -m owner --uid-owner cromy --dports 80,443 -j REDIRECT --to-ports 8080
请注意:
- 这只会将流量重定向到 IPv4 本地主机地址上的 Web 服务器。
- 如果您想将所有流量重定向到端口 80 和 443,只需删除 -d 选项。
- 您只能在主机本身上匹配用户,而不能在路由器上匹配。
- 我不知道您在端口 8080 上监听了什么,因此不能保证它能正常工作,或者可能只对其中一种协议正常工作。