Я считаю, что это селектор для имени таблицы. * Используется вместо опции -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 - преобразование сетевых адресов полезным.