Squid 代理无法正常工作,使用 Ubuntu Server 10.04 和两个 NIC。一个连接到 WAN,另一个连接到 LAN

Squid 代理无法正常工作,使用 Ubuntu Server 10.04 和两个 NIC。一个连接到 WAN,另一个连接到 LAN

我正在尝试设置代理服务器,但无法完成。以下是我的设置详情

我有一台服务器(IBM X3800 系列)和一台台式电脑。服务器有网卡与其连接。eth0 和 eth1。eth0 通过 202 系列的全局 IP 连接到 WAN,并且互联网在服务器上运行良好,我可以连接到互联网。eth1 连接到交换机,以下是 eth1 中的配置

IP: 192.168.2.2
Netmask: 255.255.255.0
Gateway: 192.168.2.1
Network: 192.1968.2.0
Broadcast: 192.168.2.255

我只是使用安装了 squid 代理apt-get install squid。我更改了文件

/etc/squid/squid.conf

并添加了以下详细信息

httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
acl lan src 192.168.2.0/24
http_access allow lan

最后添加了这些 iptable 规则

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to globalip:3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

其中 globalip 是 eth0 的 IP。

现在台式电脑通过交换机连接到服务器,台式电脑的 IP 配置如下

IP: 192.168.2.4
Netmaskapt-get install squid: 255.255.255.0
Gateway: 192.168.2.1
Network: 192.1968.2.0
Broadcast: 192.168.2.255

我可以轻松地从桌面 ping 到服务器,从服务器 ping 到桌面。但我的桌面系统无法访问互联网。所以我猜问题出在 squid 上。请帮我解决这个问题。如果您需要任何其他信息,请告诉我。

谢谢

答案1

看起来您正在设置透明代理,但您的配置似乎不适合此任务。httpd_accel_*我认为指令用于反向代理(又称 http 加速)。您应该将它们注释掉。改用http_port 3128 transparent

答案2

您的计算机上有一个代理,但没有任何配置可以让其他计算机使用该代理。这些iptables设置试图修改永远不会到达该计算机的数据包,因为网络上其他任何地方都没有配置将这些数据包引导到该计算机。

代理仅代理 HTTP,但您仍然希望它能够ping正常工作。

听起来你想要的是 NAT,而不是代理。并且应该在作为 LAN 机器的默认网关的机器上设置 NAT。

相关内容