nixp.ru v3.0

28 мая 2017,
воскресенье,
07:50:48 MSK

DevOps с компанией «Флант»
poiuytrewqaz написал 7 декабря 2007 года в 14:48 (669 просмотров) Ведет себя неопределенно; открыл 2 темы в форуме, оставил 12 комментариев на сайте.

Есть два модема ADSL и два шлюза под Linux.

1 модем подключен к 1 шлюзу

2 модем к 2 шлюзу

ip 1 модема внешний 85.55.X.1 (INET_1)

ip 2 модема внешний 85.55.Y.2 (INET_2)

сетевая 1 шлюза смотрящая на модем 192.168.1.33 (MOD_1)

сетевая 1 шлюза смотрящая в локальную сеть 192.168.0.1 (LAN_1)

сетевая 2 шлюза смотрящая на модем 192.168.2.33 (MOD_2)

сетевая 2 шлюза смотрящая в локальную сеть 192.168.0.2 (LAN_2)

сервер в локльной сети 192.168.0.60 (HTTP)

шлюз по умолчанию не указывается на сервере (HTTP)

Вопрос как организовать доступ из Интернета к внутреннему серверу (HTTP) через два шлюза?

Я указал на 1 шлюзе

$IPTABLES -t nat -A PREROUTING -p tcp -j DNAT --to-destination $HTTP:80

$IPTABLES -t nat -A POSTROUTING -p tcp --dport 80 -j SNAT --to-source $LAN_1

Но не работает?

Если указать шлюз по умолчанию на сервере (HTTP) то будет работать через тот шлюз который выбран. Но у меня работало без указания шлюза по умолчанию и лог был такой (Но это на Windows). А мне хотелось настроить на Linux

Source NAT Translate 192.168.0.1

Destinatio NAT 192.168.0.60 port 80

Лог к первому шлюзу:

From MOD_1

194.218.15.4:1051-> 192.168.1.33:80

to LAN_1

194.218.15.4:1051-> 192.168.0.60:80

from LAN_1

192.168.0.60:80 -> 192.168.0.1:49165

to MOD_1

192.168.0.60:80 -> 194.218.15.4:1051

Curu3MyHg

Правила в обратную сторону тоже не помешают.

poiuytrewqaz

А можно на примере

poiuytrewqaz

Очень надо настроить доступ с двух шлюзов к одному серверу

Curu3MyHg

Судя по твоим логам, должно хватить чего-то подобного:

$IPTABLES -t nat -A POSTROUTING -o $IF_MOD_1 -s $HTTP -p tcp --sport 80 -j SNAT --to-source $MOD_1
poiuytrewqaz

Тоесть добавить к тем двум правилам третье

Curu3MyHg

Кстати, ЕМНИП, ту же задачу можно решить через xinetd.

poiuytrewqaz

Каким образом?

poiuytrewqaz

IF_MOD_1=«eth1»

IF_LAN_1=«eth0»

Добавил правило

$IPTABLES -t nat -A POSTROUTING -o eth1 -s 192.168.0.60 -p tcp --sport 80 -j SNAT --to-source 192.168.1.33

Не пускает! Что делать?

Curu3MyHg
poiuytrewqaz
Каким образом?

Что-то там на тему опции redirect или как-то так. Не помню. Гугли.

ЗЫ Смеха ради только что проверил вариант с таблесами — на указанных трёх правилах работает (только для телнета, а не для http).

# iptables -t nat -I PREROUTING -i bond0 -d <внешний IP шлюза> -p tcp --dport 23 -j DNAT --to-destination 
# iptables -t nat -I POSTROUTING -o bond1 -d  -p tcp --dport 23 -j SNAT --to-source <внутренний IP шлюза>
# iptables -t nat -I POSTROUTING -o bond0 -s  -p tcp --sport 23 -j SNAT --to-source <внешний IP шлюза>
poiuytrewqaz

$IPTABLES -t nat -A PREROUTING -i eth0 -d $MOD_1 -p TCP --dport 80 -j DNAT --to-destination 192.168.0.60

$IPTABLES -t nat -A POSTROUTING -o eth1 -d 192.168.0.60 -p tcp --dport 80 -j SNAT --to-source $LAN_1

$IPTABLES -t nat -A POSTROUTING -o eth0 -s 192.168.0.60 -p tcp --sport 80 -j SNAT --to-source $MOD_1

Не пускает.

poiuytrewqaz

внешний IP шлюза это IP сетевой которая смотрит в модем или это шнешний Интернет IP

poiuytrewqaz

Вопрос! А шлюз на сервере у тебя указан или нет?

Curu3MyHg
poiuytrewqaz
$IPTABLES -t nat -A PREROUTING -i eth0 -d $MOD_1 -p TCP --dport 80 -j DNAT --to-destination 192.168.0.60

$IPTABLES -t nat -A POSTROUTING -o eth1 -d 192.168.0.60 -p tcp --dport 80 -j SNAT --to-source $LAN_1

$IPTABLES -t nat -A POSTROUTING -o eth0 -s 192.168.0.60 -p tcp --sport 80 -j SNAT --to-source $MOD_1

Не пускает.

Дык у тебя ж eth1 вовне смотрит вроде бы..

Интерфейсы местами поменяй в правилах.

Если не взлетит, покажи свой лог уже с учётом этих правил.

Curu3MyHg
poiuytrewqaz
внешний IP шлюза это IP сетевой которая смотрит в модем или это шнешний Интернет IP

В твоём случае, сетевой, которая смотрит в модем.

Модем же у тебя роутером выступает? Тоже натит, так?

Curu3MyHg
poiuytrewqaz
Вопрос! А шлюз на сервере у тебя указан или нет?

Указан, но совсем в другую сторону. )

poiuytrewqaz

ip 1 модема внешний 85.55.X.1 (INET_1)

сетевая смотрящая на модем (eth0)192.168.1.33 ($MOD_1). Шлюз по умолчанию на ней настроен 192.168.1.1

сетевая смотрящая в локальную сеть (eth0) 192.168.0.1 ($LAN_1).Шлюз по умолчанию 192.168.0.1

сервер в локльной сети 192.168.0.60 (HTTP)

Шлюз по умолчанию на сервере не указан.

poiuytrewqaz

Вопрос! Шлюз по умолчанию надо указывать на сетевой (eth0) смотрящей в локальную сеть?

poiuytrewqaz

Ребята простите за мою тупость. Проблема оказалась в том что на модеме нателось на 192.168.1.34 вместо 192.168.1.33.Изменив на 192.168.1.33 все заработало. Спасибо за помощь!