设置透明代理时遇到问题

设置透明代理时遇到问题

我一直试图在类似路由​​器的计算机上设置透明代理,但没有成功。我发现的大多数示例都没有在同一台计算机上设置网关和代理,所以我可能看错了示例。以下是我的“路由器”计算机的设置方式:

  • 它充当无线 AP,具有两个 LAN 端口(目前仅使用一个 LAN 端口)
  • 它已设置 DHCP 和 DNS 服务器
  • Dansguardian 和 squid 已完全设置(我已经使用 telnet 和 squidclient 进行了测试)
  • 通过 iptables 进行的 NAT 已全部设置完毕并且运行正常。

我当前的 iptables 设置脚本(是的,它非常简单并且允许太多。在透明代理工作后,我会更好地锁定它):

LAN="wlp4s0"
WAN="enp3s0"

PROXY_PORT="8080"

iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X

#handle unmatched traffic
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

iptables -A INPUT -m state --state INVALID -j DROP

### Allow Loopback
iptables -A INPUT  -i lo -s 127.0.0.0/8 -d 127.0.0.0/8 -j ACCEPT
iptables -A OUTPUT -o lo -s 127.0.0.0/8 -d 127.0.0.0/8 -j ACCEPT

#rules for NAT
iptables -A FORWARD -o $WAN -i $LAN -s 192.168.0.0/24 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o $WAN -j MASQUERADE

以下是我尝试过的不同规则:

#I quickly get a 'website unavailable' message with this one
iptables -t nat -A PREROUTING -i $LAN -p tcp --dport 80 -j REDIRECT --to-port $PROXY_PORT

#Requests timeout with this one
iptables -t nat -A PREROUTING -i $LAN -s 192.168.0.0/24 -p tcp --dport 80 -j REDIRECT --to-port $PROXY_PORT 

#Requests timeout with this one also
iptables -t nat -A PREROUTING -i $LAN -p tcp --dport 80 -j DNAT --to 192.168.0.0:$PROXY_PORT

有人知道我做错了什么吗?我是否遗漏了其他规则,或者现有规则是否搞乱了一切?

答案1

我明白了。iptables -t nat -A PREROUTING -i $LAN -p tcp --dport 80 -j REDIRECT --to-port $PROXY_PORT关键在于第一条规则没有超时,但立即返回错误。

Dansguardian 设置为监听 127.0.0.1,而不是 192.168.0.1(服务器的 IP 地址)。我之前进行 telnet 测试时使用的是 127.0.0.1。一旦我尝试使用 telnet 测试 192.168.0.1,我很快就找出了问题所在。

相关内容