Команда ответвления фильтра мерзавца мощна, но это является ужасно громоздким для использования для чего-либо нетривиального, как, например, если у Вас есть больше чем один автор для исправления.
Вот альтернатива, которую я нашел полезным, который использует .mailmap функцию, описанную в странице справочника мерзавца-shortlog. Это предоставляет автору, отображающему механизм, который мы можем использовать со средством форматирования журнала мерзавца. Мы можем использовать его для генерации команд, чтобы выбрать и исправить, исправляют именованную последовательность фиксаций.
Например, предположите, что Вы хотите исправить авторство на $BRANCH ответвления, запускающемся на уровне $START фиксации.
Необходимо создать .mailmap файл в главном каталоге репозитория, который отображает существующие имена автора на, он исправляет. Можно получить список существующих имен автора с:
git shortlog -se
Необходимо закончить с .mailmap файлом как это, (скажите):
You <you@somewhere.org> cowens@localmachine
You <you@somewhere.org> root@localmachine
Теперь можно использовать функцию форматирования журнала мерзавца для генерации команд для перезаписи $BRANCH как $BRANCH2.
git checkout -b $BRANCH2 $START
git log --reverse --pretty=format:"cherry-pick %H; commit --amend --author='%aN <%aE>' -C %H" $START..$BRANCH | sh -
Первая команда создает новое пустое ответвление, вырастающее из $START фиксации. Для каждой фиксации между $START и затем концом $BRANCH, вторая команда избирательно подходит к выбору исходной фиксации на в конец текущего $BRANCH2 ответвления и исправляет его для установки автора правильно.
Это также обычно применимо - помещает это в Ваш ~/.gitconfig:
[alias]
# git reauthor $START..$END
reauthor = !sh -c 'eval `git log --reverse --topo-order --pretty=format:\"git cherry-pick %H && git commit --amend -C %H --author=\\\"%aN <%aE>\\\" && \" $0 ` "echo success" '
Таким образом, когда необходимо исправить авторов, теперь именно тогда необходимо генерировать .mapfile и сделать:
git checkout -b $BRANCH2 $START
git reauthor $START..$BRANCH
Исходное ответвление касательно может быть повторно присвоено новому и новому удаленному:
git checkout $BRANCH
git reset --hard $BRANCH2 # be careful with this command
git branch -d $BRANCH2
Если вы хотите ПЕРЕДАТЬ трафик, используйте цепочку FORWARD
, а не цепочку INPUT
.
INPUT
] будет применять только к пакетам, фактически предназначенным для брандмауэра (например, имеющим адрес назначения одного из адресов брандмауэра).
Во-вторых, помните, что пересылка трафика означает, что никакие манипуляции не будут выполняться с сам пакет. Таким образом, конечный сервер должен иметь открытый порт 12345.
(Если вы хотите управлять адресом источника / назначения и / или портом, используйте SNAT / DNAT)
Я не знаю этого наверняка, но подозреваю, что проблема в том, что ваш -A INPUT ...
добавляет ваше разрешение после некоторого общего ранее существовавшего правила DROP
. Нам нужно будет увидеть вывод iptables -L -n -v
после того, как вы добавите свое правило, чтобы быть уверенным; если вы хотите вставить это в свой вопрос выше, это будет полезно.
Обработка правил iptables - выигрывает первое совпадение; то есть он выполняет правила по порядку, и последний, который соответствует вашему пакету и избавляется от него, будет иметь последнее слово за этот пакет.
Таким образом, в кратком метакоде нет никакого смысла в есть набор правил вроде
permit any any port 80
deny any any
permit any any port 12345
Строка 2 будет соответствовать пакету, предназначенному для порта 12345 - так же, как он соответствует любому пакету, не предназначенному для порта 80 - и отклоняет его. Плохой пакет никогда не дойдет до разрешения строки 3.
Приношу извинения, если вы уже все это знаете, и проблема не в этом. По-прежнему было бы полезно увидеть вывод iptables
для дальнейшего изучения.
Изменить : Хорошо, похоже, проблема не в упорядочивании правил. Что заставляет вас думать, что это не работает? Что происходит на этом сервере, когда вы используете telnet localhost 12345
?