Назад | Перейти на главную страницу

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, ничего не исправил. А так как узел может нормально подключаться, этого не может быть.

Поэтому я проверил 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

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