У меня есть kvm VM с Ubuntu 14.04, установленным как межсетевой экран в виртуальной сети (с eth0 и eth1)
Это не курс, а работа. Мне нужно это узнать.
С перерывами eth1 не выйдет.
В /etc/network/interfaces оба eth0 и eth1 задаются вручную.
Когда eth0 должен вверх, есть команда up /etc/interim-fw.sh, которая ничего не позволяет и не переадресуется между портами.
Тогда eth1. Существует предварительная подготовка, когда я отправляю комментарий в файл журнала, который достиг этой точки. Затем добавьте ссылку, а затем вверх до команды /etc/firewall.sh, которая будет загружать iptables со всеми необходимыми правилами.
Случайно это не будет загружаться и только дойдет до eth1. Но как только VM загрузится, если я запустил bash /etc/firewall.sh, он будет загружаться полностью, и все будет хорошо!
Итак, мой вопрос: как я могу это решить? Почему я получаю условие гонки, если это то, что я получаю?
/ etc / network / interfaces:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
up ip a a 5.156.241.126/25 dev eth0
up ip li set up dev eth0
up /etc/interim-fw.sh
down ifconfig eth0 0.0.0.0 down
auto eth1
iface eth1 inet manual
up ip a a 5.156.241.129/27 dev eth1
up ip li set up dev eth1
up ip route add default via 5.156.241.158
post-up /etc/firewall.sh
down ifconfig $IFACE 0.0.0.0 down
/ etc / network / interfaces:
!/bin/bash -e
I_INT=eth0 # Intranet-LAN-Interface
I_DMZ=eth1 # DMZ-LAN-Interface
NAME=5.156.241.130
MASTER=5.156.241.1
UBUNTU=141.30.13.10,141.30.13.20,141.76.1.200,141.76.1.204,141.76.1.208
REACTOS=178.63.204.104,188.40.64.41
MOZILLA=52.222.170.144
PYTHON=151.101.0.223,151.101.64.223,151.101.128.223,151.101.192.223
MAIL=5.156.241.142
WWW=5.156.88.1
STATE_NEW="-m state --state NEW"
STATE_ESTABLISHED="-m state --state ESTABLISHED"
PING="-p icmp --icmp-type 8" #ICMP packet type 8 alias echo request (= ping request )
REM="-m comment --comment"
{
iptables-restore << @@@@@@@@
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A INPUT $STATE_ESTABLISHED -j ACCEPT
-A OUTPUT $STATE_ESTABLISHED -j ACCEPT
-A FORWARD $STATE_ESTABLISHED -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type any $STATE_NEW $REM "traceroute" -j ACCEPT
-A INPUT -p udp --dport 33434:33523 $STATE_NEW $REM "traceroute" -j ACCEPT
-A INPUT -i $I_INT -p tcp --dport 22345 $STATE_NEW $REM "ssh" -j ACCEPT
-A FORWARD -i $I_INT -o $I_DMZ -p tcp --dport 22345 $STATE_NEW $REM "ssh" -j ACCEPT
-A OUTPUT -o $I_DMZ -d $SATURN -p tcp --dport 53 $STATE_NEW $REM "dns" -j ACCEPT
-A OUTPUT -o $I_DMZ -d $SATURN -p udp --dport 53 $STATE_NEW $REM "dns" -j ACCEPT
-A FORWARD -i $I_INT -o $I_DMZ -d $SATURN -p tcp --dport 53 $REM "dns" $STATE_NEW -j ACCEPT
-A FORWARD -i $I_INT -o $I_DMZ -d $SATURN -p udp --dport 53 $REM "dns" $STATE_NEW -j ACCEPT
-A FORWARD -i $I_INT -o $I_DMZ -d $MASTER -p tcp --dport 53 $REM "dns" $STATE_NEW -j ACCEPT
-A FORWARD -i $I_INT -o $I_DMZ -d $MASTER -p udp --dport 53 $REM "dns" $STATE_NEW -j ACCEPT
-A OUTPUT -o $I_DMZ $PING $STATE_NEW $REM "Ping" -j ACCEPT
-A FORWARD -i $I_INT -o $I_DMZ $PING $STATE_NEW $REM "Ping" -j ACCEPT
-A FORWARD -i $I_INT -o $I_DMZ -d $UBUNTU -p tcp --dport 80 $STATE_NEW $REM "Ubuntu" -j ACCEPT
-A FORWARD -i $I_INT -o $I_DMZ -d $REACTOS -p tcp -m multiport --dports 80,443 $STATE_NEW $REM "Reactos" -j ACCEPT
-A FORWARD -i $I_INT -o $I_DMZ -d $MOZILLA -p tcp -m multiport --dports 80,443 $STATE_NEW $REM "Mozilla" -j ACCEPT
-A FORWARD -i $I_INT -o $I_DMZ -d $PYTHON -p tcp -m multiport --dports 80,443 $STATE_NEW $REM "Python" -j ACCEPT
-A OUTPUT -o $I_DMZ -d $UBUNTU -p tcp --dport 80 $STATE_NEW $REM "Ubuntu" -j ACCEPT
-A FORWARD -i $I_INT -o $I_DMZ -d $WWW -p tcp --dport 80 $STATE_NEW $REM "www" -j ACCEPT
-A OUTPUT -o $I_DMZ -d $WWW -p tcp --dport 80 $STATE_NEW $REM "www" -j ACCEPT
COMMIT
@@@@@@@@
} && {
test $(sysctl -n net.ipv4.ip_forward) -eq 0 && sysctl net.ipv4.ip_forward=1 #Forwarding aktivieren
echo "ok"
echo "GOT HERE - ok!" >> /tmp/fw.log
exit 0
} || {
test $(sysctl -n net.ipv4.ip_forward) -ne 0 && sysctl net.ipv4.ip_forward=0 #Forwarding de-aktivieren
/etc/firewall-vorlaeufig.sh
echo "GOT HERE - not ok " >> /tmp/fw.log
Это не дублирует Как сохранить правила iptables? Причина в том, что мой старший администратор настаивает на том, что я использую этот скрипт /etc/firewall.sh. Кроме того, сценарий работает нормально, но случайно не работает.
Спасибо за ваши комментарии. Я бы очень признателен за любую помощь, если попытаюсь выяснить причину этого. Благодарю. Боб
Ваша ситуация сложная, поскольку вы используете виртуальную машину, и вы, кажется, используете какой-то скрипт, и вы пытаетесь вызвать скрипт в своих правилах pre / post up / down.
IMO большинство «скриптов» для генерации правил для iptables являются чрезмерно сложными и совершенно ненужными.
Самый простой способ сохранить / восстановить ваши правила - с помощью iptables-persistent
sudo apt-get install iptables-persistent
После установки пакет будет восстанавливать ваши правила независимо от того, вручную вы их ввели или сгенерировали из какого-то скрипта.
Если вам действительно нужна помощь в вашем скрипте, вам необходимо разместить его, а также ваши файлы конфигурации.
Ваша ситуация сложная, поскольку вы используете виртуальную машину, и вы, кажется, используете какой-то скрипт, и вы пытаетесь вызвать скрипт в своих правилах pre / post up / down.
IMO большинство «скриптов» для генерации правил для iptables являются чрезмерно сложными и совершенно ненужными.
Самый простой способ сохранить / восстановить ваши правила - с помощью iptables-persistent
sudo apt-get install iptables-persistent
После установки пакет будет восстанавливать ваши правила независимо от того, вручную вы их ввели или сгенерировали из какого-то скрипта.
Если вам действительно нужна помощь в вашем скрипте, вам необходимо разместить его, а также ваши файлы конфигурации.