>Про обещаный tcpdump - так и есть - есть приходящие пакеты на
>внешнем интерфейсе второго шлюза, они же уходят с внутреннего внутрь сети,
>и вот оно! ответные пакеты идут через первый шлюз... который по
>умолчанию....
>Если для веб-сервера установить шлюзом по умолчанию второй шлюз, работает... А хочется
>работать через любой... У меня похожая ситуация: есть 2 сети у 2 провайдеров, у обих одинаковые адреса в сетях 10.х.х.х
Я так и не придумал, как на одной машине управиться ( мне нужно было, чтоб мой скрипт лазил по обоим сетям, а сервер с результатами был один ).
Сейчас так: на одной машине сервер, он смотрит на одного провайдера. Вторая машина смотрит на второго провайдера и соединена с первой по внутренней сети. Для второй машины в нейм сервере прописал адрес сайта как адрес первой машины во внутренней сети.
На второй пробывал поставить web сервер и чтоб он запросы перенаправлял на первый. Пробывал так:
Создал .htaccess такого содержания:
RewriteEngine on
Options +FollowSymlinks
RewriteRule (.*) http://adress_1_servera/$1 [P]
Все работало, за исключением одной штуки: когда в адресе появлялись адреса вида %DD%DA , то на сервре запрос приходил в виде что-то типа \xdd\xda (точно не помню). Побороть не мог.
Потом сделал так:
%cat /usr/local/etc/rc.d/ipf.sh
#!/bin/sh
if [ "x$1" = "x" -o "x$1" = "xstart" ]; then
echo " ipfilter start "
/sbin/kldload ipl
/sbin/ipnat -F -C -f /etc/ipnat.rules
/sbin/ipnat -l -v
elif [ "x$1" = "xstop" ]; then
/sbin/kldunload ipl
fi
%cat /etc/ipnat.rules
# rl0 - external
# rl1 - internal
map rl1 from 0/0 to internal_ip_1_mashiny/32 -> internal_ip_2_mashiny/32
rdr rl0 external_ip_2_mashiny/32 port 80 -> internal_ip_1_mashiny port 80
Все работет, только проблема - запросы на сервер приходят уже от второй машины, поэтому определить реальный ip пользователя не могу :(
На всякий случай - у меня FreeBSD