Я упустил важную деталь -, которую вы хотите перенаправить на ту же машину . SuSEFirewall2 на самом деле не поддерживает это .
Таким образом, вы либо создаете псевдоним интерфейса, либо перенаправляете с вашего реального интерфейса на псевдоним; или вы помещаете свои существующие iptables
правила в соответствующий скрипт.
Это может быть /etc/sysconfig/network/scripts/firewall
в разделе «net -reconfig -done»:
net-reconfig-done)
[ "$FIREWALL" = 'yes' ] || exit 2
sfw2_active || exit 3
/sbin/SuSEfirewall2 --bootunlock start
/usr/sbin/iptables...YOUR_RULES...
, но вы рискуете перезаписать его при следующем обновлении. Или вы подготавливаете собственный исполняемый скрипт запуска в init.d (, который вы можете скопировать из одного из существующих ), предполагая, что вы находитесь на уровне выполнения 5
# runlevel
5
тогда вы будете использовать rc5.d и создадите скрипт в
/etc/init.d/rc5.d/S55Redirector
Ключевой частью сценария будет:
case "$1" in
start)
echo -n "Applying redirect rules"
/usr/sbin/iptables...YOUR_RULES...
/usr/sbin/iptables...YOUR_RULES...
/usr/sbin/iptables...YOUR_RULES...
rc_status -v
;;
Самый быстрый способ убедиться в том, что это работает, — установить его из yast
.
Из корневой оболочки:
yast
в меню слева выберите «Безопасность»; от того, что справа, «Брандмауэр».
В «разрешенных услугах» добавьте услуги, которые вам нужны, чтобы они были приняты.
В зависимости от конкретной версии SuSE перейдите к пункту «Маскарад». Там вы должны указать хост назначения, а также порт назначения.
Как назло, мой единственный компьютер LEAP мой единственный другой компьютер LEAP находится дома, в настоящее время не работает, а другой не является брандмауэром, поэтому я не могу подтвердить или предоставить третий снимок экрана..
Я подозреваю, что вы правильно поняли пользовательские правила, но забыли разрешить входящие пакеты в файле конфигурации (он должен идти в/etc/sysconfig/SuSEfirewall2.d/services
). Если это не сработает,вы можете вернуться ко мне (lserni@gmail.com )после четверга, когда я вернусь домой.
Как указал муру, это вызвано использованием обратной косой черты здесь:
-i) inc="$2"
#echo 'inc: ' $inc
include="--include=\*.${inc}" # file type to include
Подстановочный знак *
не раскрывается внутри двойных кавычек, что означает, что он уже экранирован (кавычками ), это означает, что экранирование обратной косой черты также будет рассматриваться буквально.
Вы можете изменить его на:
-i) include="--include=*.${2}";;
Здесь вы можете увидеть, как экранирование обратной косой черты обрабатывается в различных сценариях:
$ echo \*
*
$ echo "\*"
\*
$ echo "\$"
$
В первом примере он удаляется после побега*
Во втором примере экранировать *
не нужно, поэтому он остается буквально
В третьем примере необходимо экранировать $
(, который может раскрываться внутри одинарных кавычек ), поэтому он удаляется.