Функция daemon ()
в glibc
выполняет только одну вилку, как показано в ] его исходный код .
То, что вы изначально видели, находится в исходном коде ядра и не упоминается извне напрямую.
Использование двойной вилки зависит от реализации, используемой для фактического вызова программы-демона, и не требуется в большинстве проектов, поскольку демоны не запускаются из обычного сеанса.
Двойное форкование, как вы видели в исходном коде ядра, полностью отделит процесс от его родителя, поскольку родитель наследуется в первом fork ()
. Вызов второго fork ()
и завершение родительского процесса приводит к тому, что процессу назначается 1
в качестве его PPID
(идентификатор родительского процесса), что также полностью удаляет все назначенные TTY. .
iptables
работает по принципу первого совпадения. Давайте разберем ваш пример:
iptables -A INPUT -s 172.217.23.206 -j ACCEPT
iptables -A OUTPUT -d 172.217.23.206 -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP
Первая строка указывает iptables
разрешить весь трафик с IP-адреса 172.217.23.206
на машину, где применяются эти правила. А весь трафик — это буквально весь трафик . Таким образом, независимо от протокола, порта, параметров и т. д.; пока источник соответствует 172.217.23.206
, он проходит.
Вторая строка разрешает весь трафик с вашей машины на 172.217.23.206
. Опять же, не имеет значения, какой протокол, порт и т. д.; пока пункт назначения соответствует 172.217.23.206
, это разрешено.
Третья строка указывает iptables
на отбрасывать любой входящий трафик, который не соответствует первым двум правилам, тогда как четвертая и последняя строка указывает iptables
на отбрасывать любой исходящий трафик, не соответствующий трем предыдущим строкам.
Я предполагаю, что вы хотите создать сценарий, разрешающий трафик только на пару веб-сайтов. Набор правил, который вы написали, не будет работать для этого сценария;
172.217.23.206
. Обычно он может получить эту информацию, запросив DNS-сервер или локальные записи /etc/hosts
. iptables
достаточно умен, чтобы отслеживать ваши подключения и разрешать ответы. Этот процесс вызывает состояние сохранения. 172.217.23.206
только для того, чтобы получить веб-сайт, не имеет никакого смысла.ping
), является особым видом. Вам нужно заблокировать его специально. Этот набор правил соответствует этому сценарию:
iptables -I INPUT 1 -i lo -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp -d unix.stackexchange.com --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp -d unix.stackexchange.com --dport 443 -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP
Этот набор правил позволяет вашему компьютеру запрашивать DNS-серверы, используя порт 53/udp. Затем он разрешает TCP-трафик на unix.stackexchange.com, на порт 80 (http )и 443 (https ). Он отслеживает соединения и отбрасывает весь остальной трафик.
Вы можете отказаться от правила, разрешающего DNS-запросы, если вы настроили соответствующие записи в /etc/resolv.conf
.