Iptables работает странно

У меня на ноутбуке установлена ​​Ubuntu 12.04 x64.

Я довольно новичок в Linux, и я хотел указать определенные правила для брандмауэра iptables.

Это сохраненная конфигурация моих iptables:


*mangle

:PREROUTING ACCEPT [0:0]

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

:POSTROUTING ACCEPT [0:0]

COMMIT


*nat

:PREROUTING ACCEPT [0:0]

:INPUT ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

:POSTROUTING ACCEPT [0:0]

-A PREROUTING -p tcp -m tcp --dport 3306 -j DNAT --to-destination 192.168.1.100:3306

-A PREROUTING -p tcp -m tcp --dport 11002 -j DNAT --to-destination 192.168.1.100:11002

-A PREROUTING -p tcp -m tcp --dport 13000 -j DNAT --to-destination 192.168.1.100:13000

-A PREROUTING -p tcp -m tcp --dport 13001 -j DNAT --to-destination 192.168.1.100:13001

-A PREROUTING -p tcp -m tcp --dport 13002 -j DNAT --to-destination 192.168.1.100:13002

-A PREROUTING -p tcp -m tcp --dport 13003 -j DNAT --to-destination 192.168.1.100:13003

-A PREROUTING -p tcp -m tcp --dport 13004 -j DNAT --to-destination 192.168.1.100:13004

-A PREROUTING -p tcp -m tcp --dport 13061 -j DNAT --to-destination 192.168.1.100:13061

-A PREROUTING -p tcp -m tcp --dport 13099 -j DNAT --to-destination 192.168.1.100:13099

-A POSTROUTING -j MASQUERADE

COMMIT


*filter

:INPUT DROP [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

-A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT


-A INPUT -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT
COMMIT

Теоретически это означает, что нужно отбрасывать все соединения во всех портах, кроме http, mysql и нескольких других портов. .

Кроме того, он перенаправляет все подключения портов mysql и 13000-13004 и т. Д. К определенному локальному IP-адресу в том же порту, который равен 192.168.1.100.

Но что я нахожу странным, так это то, что когда мой брандмауэр активен, он блокирует абсолютно все входные соединения, даже те, которые не должны блокировать (http, mysql). На самом деле, я буквально заблокирован и не могу установить внешнее соединение.

Что я делаю не так?

PS: я протестировал брандмауэр без этих перенаправлений, и он по-прежнему блокирует все входы, поэтому я полагаю, что это не проблема.

0
задан 30 August 2013 в 04:18

1 ответ

Сначала

и прежде всего вам необходимо проверить, разрешена ли пересылка пакетов в вашей системе:

cat /proc/sys/net/ipv4/ip_forward

или

sysctl ipv4_forward

Это должно иметь значение «1». если нет (sudo или root):

echo '1' > /proc/sys/net/ipv4/ip_forward

и сделать изменение постоянным, вы можете раскомментировать net.ipv4.ip_forward=1 в /etc/sysctl.conf. После того, как это будет сделано, вы можете дополнительно протестировать свои настройки iptables (я предполагаю, что после этого незначительного изменения это сработает ;-)). Так как вы сказали, что вы новичок в этом, я поместил описание правила под каждым правилом, надеясь, что все это имеет смысл для вас.

iptables -P INPUT DROP
iptables -A OUTPUT ACCEPT
iptables -A FORWARD ACCEPT

Это отбросит весь трафик, кроме трафика, который соответствует определенным правилам. -P INPUT DROP можно указать как первое правило, тогда как -A INPUT DROP должно быть последним. Следующие 2 правила позволят исходящие соединения и переадресацию.

iptables -A INPUT -i lo -j ACCEPT

Разрешить петлевой (127.0.0.1) трафик

iptables -A INPUT -m state --state RELEATED,ESTABLISHED -j ACCEPT

Это позволит всем пакетам иметь состояние RELATED (новое вторичное соединение, например FTP) или ESTABLISHED (пакеты для этого соединения были замечены в обоих направлениях (например, HTTP-трафик).

iptables -t nat -A POSTROUTING -o ethx -j MASQUERADE

nat, потому что вы, вероятно, натуете, маскируете пакет, выходящий из интерфейса ethx. F.e .: WAN находится на eth1, а lan на eth0, поэтому ethx будет eth0. Это на POSTROUTING.

iptables -t nat -A PREROUTING -p tcp --dport 3306 -j DNAT --to-destination 192.168.1.100:3306

это фактическая пересылка.

Итак, в основном ваши правила iptables, где все в порядке, вы, вероятно, просто забыли настройку ip_forward.

0
ответ дан 30 August 2013 в 04:18

Другие вопросы по тегам:

Похожие вопросы: