Как camh упомянутый, -
просто соглашение о присвоении имен, используемое некоторыми программами. Если Вы захотите обратиться к этим потокам с дескриптором файла, то оболочка распознает, jiliagre был корректен в наличии, Вы используете имя /dev/stdin
или /dev/stdout
вместо этого. Те имена файлов должны работать любое место, нормальное имя файла работало бы.
Однако Ваш первый пример довольно глуп. Любой вывод, который был бы пойман оператором перенаправления для записи в файл, уже находится НА стандартном выводе, таким образом перенаправляя его и обратной записи его туда, где он прибыл из, бесполезно. Поведение, которое Вы используете, существует канал, не перенаправление:
echo hello |
В Вашем втором примере просто необходимо дать, может некоторый признак, что Вы хотите прибрежный файл того имени, не внутренний псевдоним, который это имеет. Можно сделать это самое легкое путем определения пути к файлу как это:
cat ./-
SNAT
цель требует, чтобы Вы дали ему IP-адрес для применения ко всем исходящим пакетам. MASQUERADE
цель позволяет Вам дать ему интерфейс, и независимо от того, что адрес находится в том интерфейсе, адрес, который применяется ко всем исходящим пакетам. Кроме того, с SNAT
, отслеживание соединения ядра отслеживает все соединения, когда интерфейс удален и возвращен; то же не верно для MASQUERADE
цель.
Хорошие документы включают ПРАКТИЧЕСКИЕ РУКОВОДСТВА в сайт Netfilter и iptables
страница справочника.
В основном SNAT
и MASQUERADE
делают один и тот же NAT источника в таблице nat в цепочке POSTROUTING.
Различия
MASQUERADE
не требует --to-source
, так как он был создан для работы с динамически назначаемыми IP
SNAT
работает только со статическими IP, поэтому он имеет --to-source
MASQUERADE
имеет дополнительные накладные расходы и медленнее, чем SNAT
, потому что каждый раз, когда цель MASQUERADE
получает пакет, он должен проверить IP-адрес для использования.
NOTE: Типичный случай использования MASQUERADE
: Экземпляр AWS EC2 в VPC, у него есть частный IP в пределах VPC CIDR (например, 10.10.1.0/24) - 10.10.1.100, например, у него также есть публичный IP для связи с Интернетом (предположим, он находится в публичной подсети), через который частный IP 1:1 NAT. Публичный IP может измениться после перезагрузки экземпляра (если это НЕ EIP), MASQUERADE
является лучшим вариантом в этом случае.
Важно: все еще можно использовать MASQUERADE
со статическим IP, просто помните о дополнительных накладных расходах.
Ссылки
Краткий ответ :используйте SNAT
Объяснение :Я только что попытался удалить правило маскарада на моем маршрутизаторе raspbian (, который взаимодействует с другим маршрутизатором, через eth0, где IP-адрес интерфейса 192.168.8.2 и является статическим ), и общий доступ к Интернету продолжался. работай. Команды, которые я пробовал, были:-
iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.8.2
-j SNAT
(в противоположность отслеживанию переработки с-j MASQUERADE
) когда новое исходящее соединение от узла LAN использует тот же номер исходного порта в качестве разъединенного исходящего соединения от того же узла LAN. В этом случае я могу вообразить входящие пакеты от старого исходящего соединения отправленными в узел, путая его стек TCP. Что касается преимущества-j SNAT, что, если поле NAT настроено с тем же внешним IP-адресом и ядром, продолжает передавать пакеты от старых соединений вместо того, чтобы ответить с RST? – eel ghEEz 18.03.2018, 16:50