Добрый день!
Ситуация такая:
Ось FreeBSD 7.0
Есть два канала, первый dial-up, второй спутниковый канал поднятый на mpd через dial-up.
По дефолту стоит маршрут dial-up.
В итоге два интерфейса:
tun0 - dialup 192.168.2.155 --> 192.168.2.254
ng0 - тарелка. 172.27.20.44 --> 82.211.176.1
Задача следующая:
Конкретные сайты пускать через спутниковый канал, а всё остальное через дефолтный маршрут.
Squid настроен следующим образом:
acl sky url_regex rambler.ru yandex.ru ... ...
tcp_outgoing_address 82.211.176.1 sky
Те сайты которые не попадают под правило sky, открываются без проблем, стоит обратиться к сайтам из правила sky, выскакивает ошибка:
---------------------------------------------
ERROR
The requested URL could not be retrievedWhile trying to retrieve the URL: http://www.rambler.ru/
The following error was encountered:
Socket Failure
The system returned:
(49) Can't assign requested address
Squid is unable to create a TCP socket, presumably due to excessive load. Please retry your request.
---------------------------------------------
В логах сквида пишется:
commBind: Cannot bind socket FD 26 to 82.211.176.1:0 (49) Can't assign requested address
Перерыл инет пока не нашёл способа обойти это.
Короче сквид может забиндиться только на локальный адрес, который присутствует в системе.
Есть идея, но не знаю пока как её реализовать:
Поднять какойто виртуальный интерфейс и сделать, что то типа диверта на 82.211.176.1 который висит на ng0, а в сквиде указать на виртуальный айпи этого интерфеса.
Или есть какоето другое решение этой проблемы?
Заранее благодарен!!!