Я использовал svnserve на моем сервере CentOS. И у меня на сервере есть открытый порт 3690. Как вы можете видеть, результат выполнения команды iptables -L показан следующим образом:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:webcache
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:mysql
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:5901
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ddi-tcp-1
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
ACCEPT tcp -- anywhere anywhere tcp dpt:svn
ACCEPT tcp -- anywhere anywhere tcp dpt:search-agent
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:svn
И я запустил svnserve на моем сервере, так как я могу успешно выполнить проверку на моем сервере с помощью команды svn co svn: // IP-адрес / имя .
Тем не менее, когда я пытаюсь проверить с ноутбука. Говорят, что в соединении отказано. Кроме того, я проверил соединение через ip-порт telnet , там сказано: telnet: невозможно подключиться к удаленному хосту. Это довольно сбивает с толку, так как у меня открыт порт 3690, а моя служба svn определенно прослушивает порт 3690. Что может быть причиной этого? И что мне делать, чтобы получить доступ к svn-серверу удаленно?
IPtables обрабатывают правила сверху вниз. Вот проблема:
Обратите внимание на следующие правила:
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
ACCEPT tcp -- anywhere anywhere tcp dpt:svn
После правила Reject all
все пакеты отбрасываются, включая ваше правило svn
. Вот почему вы не можете подключиться.
Решение:
Поместите следующее правило как последнее в цепочку INPUT, если вы действительно хотите отбросить все остальные пакеты:
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited