Я должен установить правила iptables, которые будут изменять все исходные адреса исходящих пакетов на общедоступный IP-адрес маршрутизатора и перенаправлять все входящие пакеты с портом назначения 80 на одну из машин, где находится веб-сервер. Это задание из университета, и у меня уже есть ответы на это, но они несколько противоречивы. Один набор ответов берется из книги, откуда взялась эта задача (поэтому она действительно должна быть правильной), а другая - от учителя. Итак, в книге говорится, что это должно быть сделано таким образом (eth0 - это общедоступный интерфейс с общедоступным IP-адресом, а eth1 - это интерфейс, подключенный к локальной сети - картинка для лучшего восприятия):
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source IPX
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-
destination IP1:80
и мой учитель считает, что это правильные ответы:
iptables -t nat -A POSTROUTING -i eth1 -j SNAT --to-source IPX
iptables -t nat -A PREROUTING -p -o eth1 tcp --dport 80 -j DNAT --to-\
destination IP1:80
Как видите, разница в выбранных интерфейсах. Из того, что я понимаю, параметры -i
и -o
позволяют различать исходящие и входящие "подынтерфейсы" в одном интерфейсе.
Итак, первое правило в ответе моей книги гласит, что для всех пакетов, предназначенных для отправки через интерфейс eth0, должен быть изменен исходный IP-адрес на публичный IP-адрес маршрутизатора. Мой учитель говорит, что для всех пакетов, которые поступают на локальный интерфейс маршрутизатора, адрес источника должен быть изменен на публичный IP-адрес маршрутизатора.
Во втором правиле книга говорит, что все пакеты, поступающие на входной "подинтерфейс" eth0, предназначенные для порта 80, должны изменить свой адрес назначения, и мой учитель говорит, что у всех пакетов, выходящих из eth1, должен быть изменен их адрес.
Какой набор ответов является правильным? Для меня они оба выглядят правильно, они просто подходят к проблеме с разных сторон, но после некоторого исследования я обнаружил, что большинство руководств в Интернете придерживаются подхода книги, и вполне возможно, что мой учитель мог ошибиться, поэтому я не знаю, какие именно один действительно правильно. Я был бы очень благодарен за быстрый ответ, потому что у меня есть тест по этому предмету через два дня.