В чем преимущество / недостаток между двумя нижеуказанными командами:
iptables -t nat -A POSTROUTING -o eth0 -s 10.0.0.0/16 -j MASQUERADE
И
iptables -t nat -A POSTROUTING -j MASQUERADE
Некоторая предыстория, почему возник этот вопрос:
Я поднял вопрос AWS VPC + IPtables + NAT: переадресация портов не работает и у меня это работает только внесение этого изменения.
Отсюда и этот вопрос.
ОБНОВИТЬ:
После того, как я увидел голоса против (сильные отрицательные избиратели были слишком заняты, чтобы прокомментировать, почему они проголосовали против), я немного отредактировал вопрос. Я вижу, что люди просто принимают буквальное значение английского слова и не утруждают себя пониманием его сути. Следовательно, мне пришлось отредактировать вопрос.
Кроме того, это постыдный поступок, если вы не объясните, почему вы голосуете против. Таким образом, OP никогда не получит шанс улучшить свой пост ИЛИ узнать, что с ним не так.
Эта команда
iptables -t nat -A POSTROUTING -j MASQUERADE
Это очень широко, потому что он будет выполнять NAT для каждого соединения, маршрутизируемого через этот ящик, независимо от источника / назначения. Вы почти никогда не должны использовать это правило без некоторых других правил, ограничивающих его в определенном направлении. Это слишком широкое правило почти никогда не является правильным ответом.
Относительно того, почему он обратился к симптомам вашей предыдущей проблемы. Используя NAT для всего, вы скроете неверную конфигурацию вашей маршрутизации. Поскольку машины по обе стороны от устройства с этим слишком широким правилом будут думать, что они обмениваются данными с межсетевым экраном.
Поскольку ваша проблема связана с входящим соединением, вы также должны понимать, что использование такого правила будет скрывать исходный адрес входящих пакетов. Это означает, что любые журналы, которые вы храните, будут бесполезны, поскольку все, что они будут делать, - это регистрировать IP-адрес вашего брандмауэра в качестве адреса источника.
iptables -t nat -A POSTROUTING -o eth0 -s 10.0.0.0/16 -j MASQUERADE
Сопоставлять только пакеты, исходящие через eth0 и с адресом источника 10.0.0.0/16. NAT их с IP по умолчанию интерфейса eth0.
iptables -t nat -A РАЗМЕЩЕНИЕ -j МАСКЕРАД
сопоставлять пакеты, исходящие через любой интерфейс, с любым адресом, преобразовывать их через IP-адрес исходящего интерфейса по умолчанию.