У меня публичная подсеть с установленным 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-адрес.
Каков результат netstat -ntlp | grep 50000
?
По умолчанию http_port 50000
опция приведет к привязке кальмара к 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-адреса, значит, его нет. Вы ДОЛЖНЫ настроить его в настройках сети. Squid не может подключиться к IP, который не был настроен на хосте.