Назад | Перейти на главную страницу

squid не будет слушать на определенном IP

У меня публичная подсеть с установленным 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, который не был настроен на хосте.