내 centOS 서버에서 svnserve를 사용하고 있습니다. 내 서버에 포트 번호 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: 원격 호스트에 연결할 수 없다고 합니다. 포트 3690이 열려 있고 내 svn 서비스가 확실히 포트 3690에서 수신 대기하고 있기 때문에 이것은 혼란스럽습니다. 그 이유는 무엇입니까? svn 서버에 원격으로 접속하려면 어떻게 해야 하나요?
답변1
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