Я пытаюсь понять смысл правил iptables
вОфициальное руководство по настройке маршрутизатора Ubuntu. Например, *nat
. Я не могу найти нигде в интернете, где *nat
есть iptables
.
*nat
-A POSTROUTING -o "$EXTIF" -j MASQUERADE
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A FORWARD -i "$EXTIF" -o "$INTIF" -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i "$INTIF" -o "$EXTIF" -j ACCEPT
-A FORWARD -j LOG
COMMIT
решение1
Я полагаю, что это селектор для имени таблицы. Используется *
вместо -t
опции для варианта командной строки команды, с выбирает таблицу. Например, обычно таблица выбирается указанием -t <tablename>
, поэтому в этом случае -t nat
, чтобы выбратьнатстол:
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
В приведенном вами примере используется перенаправление ввода изздесь документto iptables-restore
- обратите внимание на <<EOF ... EOF
и поэтому вместо параметра командной строки ( -t
) используются отдельные строки, например:
iptables-restore <<-EOF
*nat
-A POSTROUTING -o "$EXTIF" -j MASQUERADE
COMMIT
EOF
Можно утверждать, что раз -A
все еще есть в документе, то почему -t
нет? Я не знаю ответа на этот вопрос, надеюсь, кто-то другой знает.
Аналогично после того, как *nat
таблица отредактирована COMMIT
, ее *filter
выбирают, обрабатывают и затем COMMIT
редактируют.
iptables-restore <<-EOF
*filter
:INPUT ACCEPT [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A FORWARD -i "$EXTIF" -o "$INTIF" -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i "$INTIF" -o "$EXTIF" -j ACCEPT
-A FORWARD -j LOG
COMMIT
EOF
Если вы ищете руководство, вы можете найти этоNAT — трансляция сетевых адресовурок полезен.