IPTables блокирует FTP для виртуальных машин
У меня установлена и работает CentOS 5 SolusVM Node. Блоки VPS работают нормально, и все, кажется, работает. До вчерашнего дня, когда я обнаружил, что ни один VPS не может быть доступен через FTP. Я проверил и дважды проверил конфиги VPS-модуля на FTP. Все хорошо.
Я даже могу подключиться к каждому отдельному узлу VPS FTP с основного узла, выполнив это:
ftp IP
User:
Pass:
Он подключается и делает список каталогов просто отлично. Но если с любой другой машины за пределами узла я пытаюсь подключиться к FTP внутри узла, это просто не работает. Время ожидания в списке каталогов:
425 Unable to build data connection: No route to host
Теперь я попытался отключить IPTables внутри каждого VPS, ничего не исправить. И поскольку Node может подключаться очень хорошо, этого не может быть.
Поэтому я проверил IPTables на узле, чтобы увидеть, что там происходит. Если я отключу IPTables узла узла, FTP работает из любого места на любой VPS!
service iptables stop
Итак, я проверил набор правил IPTables, и это самая странная часть. IPTables имеет два набора правил!
Если я бегу:
iptables -L
Я получаю один набор правил:
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
SOLUSVM_TRAFFIC_IN all -- anywhere anywhere
SOLUSVM_TRAFFIC_OUT all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain SOLUSVM_TRAFFIC_IN (1 references)
target prot opt source destination
all -- anywhere worldopportunitiesunlimited.com
all -- anywhere worldopportunitiesunlimited.com
Chain SOLUSVM_TRAFFIC_OUT (1 references)
target prot opt source destination
all -- worldopportunitiesunlimited.com anywhere
all -- worldopportunitiesunlimited.com anywhere
Этот домен, который появляется, я понятия не имею, что это за домен, я никогда не видел его раньше. Так что я запустил grep для этого домена внутри /etc/sysconfig
и не нашел ничего с этим доменом.
Итак, я побежал:
service iptables status
Эта команда дала мне стандартный набор правил IPTables для SolusVM:
Table: nat
Chain PREROUTING (policy ACCEPT)
num target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
num target prot opt source destination
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
Table: mangle
Chain PREROUTING (policy ACCEPT)
num target prot opt source destination
Chain INPUT (policy ACCEPT)
num target prot opt source destination
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
num target prot opt source destination
Table: filter
Chain INPUT (policy ACCEPT)
num target prot opt source destination
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 SOLUSVM_TRAFFIC_IN all -- 0.0.0.0/0 0.0.0.0/0
2 SOLUSVM_TRAFFIC_OUT all -- 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
Chain SOLUSVM_TRAFFIC_IN (1 references)
num target prot opt source destination
1 all -- 0.0.0.0/0 IP1
2 all -- 0.0.0.0/0 IP2
Chain SOLUSVM_TRAFFIC_OUT (1 references)
num target prot opt source destination
1 all -- IP1 0.0.0.0/0
2 all -- IP2 0.0.0.0/0
Если я бегу iptables -F
он хорошо мигает. Но FTP не работает до сих пор. FTP доступен только при запуске service iptables stop
,
Теперь, когда я перезапускаю IPTables, вот список модулей, которые отображаются:
Loading additional iptables modules: ipt_REJECT ipt_tos ipt_TOS ipt_LOG ip_conntrack ipt_limit ipt_multiport iptable_filter iptable_mangle ipt_TCPMSS ipt_tcpmss ipt_ttl ipt_length ipt_state iptable_nat ip_nat_ftp ipt_ow
Когда я перезапускаю IPTables, первый набор правил возвращается даже после очистки.
Я проверил файл /etc/sysconfig/iptables
и в нем есть второй набор правил. Я также пытался iptables-restore < /etc/sysconfig/iptables
но это не заменяет первый странный набор правил.
Все это, как говорится, эта машина была доступна только мне. Это новая установка два дня назад.
РЕДАКТИРОВАТЬ
# Generated by iptables-save v1.3.5 on Tue Feb 11 07:21:08 2014
*filter
:INPUT ACCEPT [17254:1825032]
:FORWARD ACCEPT [735270:692897288]
:OUTPUT ACCEPT [19783:3216097]
:SOLUSVM_TRAFFIC_IN - [0:0]
:SOLUSVM_TRAFFIC_OUT - [0:0]
-A FORWARD -j SOLUSVM_TRAFFIC_IN
-A FORWARD -j SOLUSVM_TRAFFIC_OUT
-A SOLUSVM_TRAFFIC_IN -d IP1
-A SOLUSVM_TRAFFIC_IN -d IP2
-A SOLUSVM_TRAFFIC_OUT -s IP1
-A SOLUSVM_TRAFFIC_OUT -s IP2
COMMIT
# Completed on Tue Feb 11 07:21:08 2014
# Generated by iptables-save v1.3.5 on Tue Feb 11 07:21:08 2014
*mangle
:PREROUTING ACCEPT [751388:694616048]
:INPUT ACCEPT [17254:1825032]
:FORWARD ACCEPT [735270:692897288]
:OUTPUT ACCEPT [19785:3216361]
:POSTROUTING ACCEPT [755055:696113649]
COMMIT
# Completed on Tue Feb 11 07:21:08 2014
# Generated by iptables-save v1.3.5 on Tue Feb 11 07:21:08 2014
*nat
:PREROUTING ACCEPT [21350:1445366]
:POSTROUTING ACCEPT [21818:1488532]
:OUTPUT ACCEPT [1876:127401]
COMMIT
# Completed on Tue Feb 11 07:21:08 2014
1 ответ
SolusVM загружает множество модулей, которые нужны только OpenVZ, но блоки Xen не нужны. Чтобы исправить это, отредактируйте файл `/etc/sysconfig/iptables-config'и удалите эту строку:
IPTABLES_MODULES="ipt_REJECT ipt_tos ipt_TOS ipt_LOG ip_conntrack ipt_limit ipt_multiport iptable_filter iptable_mangle ipt_TCPMSS ipt_tcpmss ipt_ttl ipt_length ipt_state iptable_nat ip_nat_ftp ipt_owner ipt_REDIRECT"
И заменил его на эту строку:
IPTABLES_MODULES="ip_conntrack_netbios_ns"
После этого перезапустите IPTables:
service iptables restart
Это решило проблему.
Кредиты: пассивный FTP и SolusVM