Наконец-то я разобрался.
Я попытался убить natd просто для того, чтобы перезапустить его с некоторыми тестовыми параметрами, и был совершенно ошеломлен тем фактом, что компьютеры в локальной сети после этого не теряли подключение к Интернету. Я начал расследование и обнаружил, что у меня работает еще один отдельный NAT! Это была установка ppp nat
в /etc/ppp/ppp.conf
. Значит, это была первопричина. Однако мне пришлось изменить некоторые настройки natd/ipfw , чтобы все работало как надо.
Во-первых, я изменил natd_interface="igb0"
наnatd_interface="tun0"
(с моего внешнего сетевого адаптера на интерфейс pppoe, вызываемый при подключении ). И я добавил правило ipfw divert
, выглядящее так:
ipfw add divert natd from any to any via tun0
После этого все работает нормально, и сейчас я занимаюсь настройкой брандмауэра.
Ваша первая команда:
mkdir Public/1 2 3
BASH интерпретирует mkdir Public/1
как создание каталога с именем 1
внутри общего каталога. Другие, 2
и 3
, не имеют перед собой каталога, поэтому BASH интерпретирует это как создание их в текущем рабочем каталоге.
Ваша вторая команда такова:
mkdir Public/{1..3}
Как и у вас Public/{1..3}
, BASH интерпретирует это как использование раскрытия скобок для создания каталогов 1
, 2
и 3
внутри каталога Public
вместо текущего рабочего каталога, как в первой команде..
То же самое произошло бы, если бы вы использовали то же самое с rmdir
или touch
вместо mkdir
.
В mkdir Public/1 2 3
есть три аргумента :Public/1
, 2
и 3
. Команда эквивалентна
mkdir Public/1
mkdir 2
mkdir 3
В mkdir Public/{1..3}
оболочка расширяется {1..3}
перед запуском mkdir
. Но оболочка не расширяется{1..3}
одна . Здесь {1..3}
является частью большего «слова» . Public/{1..3}
расширяется до Public/1 Public/2 Public/3
. Вы можете увидеть это с помощьюecho
:
echo Public/{1..3}
Настоящая команда, запускаемая оболочкой, была mkdir Public/1 Public/2 Public/3
, что эквивалентно
mkdir Public/1
mkdir Public/2
mkdir Public/3