1

На моем сервере используется простое перенаправление с правилами iptables:

$ iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT - к месту назначения 13.37.42.1:80

$ iptables -t nat -A POSTROUTING -j MASQUERADE

Я не понимаю полезности второй линии (маскарад). Почему /WhatFor это полезно в этом примере?

РЕДАКТИРОВАТЬ: Почему - не теоретически, а IRL - вы бы использовали его в таком примере?

Спасибо

1 ответ1

2

MASQUERADE делает то, что подсказывает название: он скрывает все «позади» хоста. Вы сделали бы это, чтобы предоставить Интернет нескольким хостам, когда у вас есть только один IP-адрес восходящей линии связи. Эта технология используется на большинстве потребительских интернет-маршрутизаторов, называемых «NAT».

Когда узел A связывается с сервером S через маршрутизатор R MASQUERADE , сервер не сможет увидеть, что соединение установлено с хоста A. Вместо этого сервер выглядит так, как будто он обменивается данными с маршрутизатором R. Однако маршрутизатор R знает, что это соединение было изначально с хоста A и будет пересылать сообщения соответственно. Хост A знает, что он подключен к серверу S, и что сервер S отправил ответ.

В IPTables вы обычно используете это только в интерфейсе с выходом в Интернет. Что-то вроде того:

-t nat -A POSTROUTING -i eth0 -j MASQUERADE

Это означает, что каждый IP-пакет, который был маршрутизирован и проходит через eth0 , получит обработку.

При использовании в вашем примере 13.37.42.1 (хост S) выглядит так, как будто ваша машина (далее хост Y) инициировала соединение. Это означает, что ответ достигнет хоста Y, который перенаправит его в реальный пункт назначения (хост A). Для хоста A это будет выглядеть так, как будто сообщение пришло с хоста Y. Он не может увидеть или узнать, что хост S фактически отправил его, потому что MASQUERADE работает в обоих направлениях.

Если вы не используете это правило, узел S увидит сообщение, отправленное с узла A. Таким образом, он отправит ответ непосредственно на узел A. Однако узел A не знает узел S. Он подключен к узлу Y и ожидает ответ оттуда. Таким образом, ответ от хоста S рассматривается как незапрошенный трафик и отбрасывается. Время соединения истечет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .