我希望有人能帮助我——我为此一直苦恼不已!
我已经设置了 pptpd 和 squid。我想让这些用户访问互联网,但想通过 squid 代理发送 http 流量。
希望这个粗略的图表能让您了解我想要实现的目标:
VPN users connect to pptpd (via eth0)
\ | /
|
|
/ \
http everything else
| |
| |
| |
squid |
| |
\ /
\ /
|
NAT
|
internet (via eth0)
如果我设置以下 iptables 规则,用户就可以连接到互联网:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
我还可以直接连接到 squid,并且它可以按预期工作。
现在,我希望另一条简单的规则能够通过 squid 重定向所有 http 流量:
iptables -t nat -A PREROUTING -i ppp+ -p tcp --dport 80 -j REDIRECT --to-port 3128
但这似乎不起作用(我也希望 ppp+ 是通配符的正确格式)。Http 流量永远不会被重定向并绕过代理。
有人能建议如何让它工作吗?
恐怕我对这些东西真的不太了解。我也希望得到一些关于如何调试系统的建议,例如查看哪些日志文件、tcpdump 命令等。我发现 iptables 文档非常令人困惑!
谢谢!
答案1
您的规则是正确的,您需要检查它是否确实匹配。
iptables -t nat -vnL