Я считаю, что это селектор для имени таблицы. *
Используется вместо опции -t
для варианта командной строки команды, при этом выбирается таблица. Например, обычно таблица выбирается путем указания -t <tablename>
, поэтому в этом случае -t nat
, чтобы выбрать таблицу nat :
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
В качестве примера, который вы предоставили, используется перенаправление ввода из документа here в 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 - преобразование сетевых адресов полезным.