Я уже ранее писал, но так и не решил проблему...
Попробую снова..Есть сервер под Linux Fedora Core 3.
На нем такие интерфейсы:
eth0 - внешний канал на провайдера (IP: x.x.x.x)
eth1 - локалка (IP: 10.0.0.1)
tun0 - тунель на другой сервер (IP: 10.0.5.1)Проблема в чем, я хочу сегмент сети UA-IX пустить через провайдера, а все остальное через тунель...
У меня все получается, но...
Мне сервер "Х" анонсит через bgp - украинский сегмент - я прописываю в него гейт прова, а дефолтный оставляю 10.0.5.1 (тунель)
В iptables настраиваю POSTROUTING по интерфейсам - все клево пашет.
Но выходит маленькая трабла: почта ходит только по украинскому сегменту сети и из мира конечно же меня не пингуют и т.д. :(
Как я понимаю мне посылают запросы на IP: x.x.x.x, а я отвечаю с 10.0.5.1 из-за прописаного дефолтного гейтвея..Как решить эту проблему?
А ты проверял, что ответ идет с 10.0.5.1? ИМХО он будет отвечать с x.x.x.x, но пакет уйдет в tun0. Что конкретно ты делаешь в POSTROUTING?
>А ты проверял, что ответ идет с 10.0.5.1? ИМХО он будет отвечать
>с x.x.x.x, но пакет уйдет в tun0. Что конкретно ты делаешь
>в POSTROUTING?Во-во, а tcpdump'ом посмотреть слабо?
>>А ты проверял, что ответ идет с 10.0.5.1? ИМХО он будет отвечать
>>с x.x.x.x, но пакет уйдет в tun0. Что конкретно ты делаешь
>>в POSTROUTING?
>
>Во-во, а tcpdump'ом посмотреть слабо?
Смотрел...Меня пингуют:
Пакеты приходят на интерфейс eth0,
а я отвечаю из интерфейся tun0 с ip: 10.0.5.1вот.
>А ты проверял, что ответ идет с 10.0.5.1? ИМХО он будет отвечать
>с x.x.x.x, но пакет уйдет в tun0. Что конкретно ты делаешь
>в POSTROUTING?
Да проверял # tetheral -i tun0
видно что ответы идут с 10.0.5.1А с построутингом у меня следующее...
на моем сервере:
-A POSTROUTING -s 10.0.0.0/255.255.255.0 -d ! 10.0.0.0/255.255.255.0 -o tun0 -j SNAT --to-source 10.0.5.1
-A POSTROUTING -s 10.0.0.0/255.255.255.0 -d ! 10.0.0.0/255.255.255.0 -o eth0 -j SNAT --to-source x.x.x.xна сервере куда делаю тунель:
-A POSTROUTING -s 10.0.5.1 -j SNAT --to-source y.y.y.yy.y.y.y - внешний IP второго сервера
Согласись, что если кто-то соединяется с твоим x.x.x.x, а ответ приходит от y.y.y.y, ничего работать не будет.
Ответы твой сервер будет посылать с src ip x.x.x.x. Но ты делаешь SNAT.
>>А ты проверял, что ответ идет с 10.0.5.1? ИМХО он будет отвечать
>>с x.x.x.x, но пакет уйдет в tun0. Что конкретно ты делаешь
>>в POSTROUTING?
>
>
>Да проверял # tetheral -i tun0
>видно что ответы идут с 10.0.5.1
>
>А с построутингом у меня следующее...
>на моем сервере:
>-A POSTROUTING -s 10.0.0.0/255.255.255.0 -d ! 10.0.0.0/255.255.255.0 -o tun0 -j SNAT --to-source
>10.0.5.1
>-A POSTROUTING -s 10.0.0.0/255.255.255.0 -d ! 10.0.0.0/255.255.255.0 -o eth0 -j SNAT --to-source
>x.x.x.x
>
>на сервере куда делаю тунель:
>-A POSTROUTING -s 10.0.5.1 -j SNAT --to-source y.y.y.y
>
>y.y.y.y - внешний IP второго сервераЕсли у тебя 1 сервер и выпускать его надо именно из-под х.х.х.х, то можно сделать просто.
ip rule add from 10.z.z.z/32 table 10
ip route add default via (адрес на другой стороне линка х.х.х.х) table 10Есть и другие варианты. Только надо четко представлять что хочешь