我有一个安装了 squid 的公共子网。
假设我的子网是从 1.2.3.2 到 1.2.4.254。
当我设置以下内容时:
http_port 50000
http_port 1.2.3.2:50000
这是工作。
但是当我设置:
http_port 1.2.4.37:50000
它不工作。
它仅适用于我的子网中的第一个公共 IP。
当它不工作时我收到的错误如下:
commBind: Cannot bind socket FD 10 to 1.2.4.37:50000: (99) Cannot assign requested address
我的配置有什么问题?
@Zoredache
我有一台专用服务器,整个子网被定义为 IP 范围。当我仅使用端口或第一个 IP 并执行
netstat -ntlp | grep 46555
我得到以下信息:
tcp 0 0 0.0.0.0:50000 0.0.0.0:* LISTEN 25532/(squid )
当我使用我的特定 IP 时,netstat 查询将不显示任何内容,因为服务器未启动。我不希望 squid 监听所有 IP 或第一个 IP,它只是应该监听的特定 IP。
答案1
的输出是什么netstat -ntlp | grep 50000
?
默认情况下,该http_port 50000
选项将导致 squid 绑定,0.0.0.0:50000
这意味着它将接受系统上任何地址的请求。
您不需要列出1.2.3.2
、 或1.2.4.37
。只需确保这些地址已分配给主机即可。
如果您的主机没有1.2.4.37
本地分配的地址,那么我猜您正在尝试进行拦截缓存之类的操作。您可能需要使用防火墙规则拦截该地址。在 Linux 系统上,您可以使用 REDIR 执行此操作。
ip addr - 我得到:inet 1.2.3.2/22 brd 1.2.5.255 scope global eth0。
如果主机没有配置1.2.4.37
IP 地址,则它没有 IP 地址。您必须在网络设置中配置它。Squid 无法绑定到主机上未配置的 IP。