Вы должны использовать sysctl -w net.ipv4.conf.XXX.route_localnet = 1
, как и вы, но, вероятно, на виртуальном интерфейсе Ethernet.
Это позволяет ядру сохранять пакеты martin.
Также имейте в виду, что локально сгенерированные пакеты не проходят в цепочку PREROUTING. Итак, вам нужно использовать цепочку OUTPUT.
И, наконец, не пытайтесь использовать NAT в этом особом случае. Используйте - вместо этого прыгайте TPROXY
.
Я не могу дать вам рабочий пример по памяти, вам нужно найти точную настройку. Затем заполните ответ для использования в будущем.
Требуется небольшая настройка решения sed
, размещенного в OP
sed -r 's/([^.] )(SP\. )/\1\n\2/g'
Проблема с s / ([^ \.]) (SP \.) / \ nSP \. / g
означает, что он отбрасывает ([^ \.])
. Также .
не нужно экранировать внутри []
, а также в разделе замены
Я бы сделал это
sed -r '
# for lines without "ASSERT.", add a newline before "SP."
# unless it is only preceded by whitespace
/ASSERT\./! s/^(.*[^[:blank:]].*)(SP\.)/\1\n\2/
# for lines containing "ASSERT.", add a newline before the last "SP."
s/^(.*ASSERT\..*SP\..*)(SP\..*)/\1\n\2/
' file
Обычно те же задачи могут быть решены путем замены неизмененной части редким символом и последующим возвратом ее обратно
sed '
s/\(^\s*\|ASSERT\. \)SP\./\1\a/g
s/SP\./\n&/g
s/\a/SP./g
'