[이석]님이 남기신 글:
>5줄을 맨위에 추가했더니 이제 됩니다. 오래 고민했던
문제였는데 감사합니다. 그런데 연관된 문제인지는 모르겠지만
mysql의 user, db 테이블에 호스트가 localhost로 설정되어있는데
호스트를 127.0.0.1로 해서 같은 내용을 한줄 더 추가했더니
됩니다. 아파치에서는 localhost설정만으로
mysql연결이 잘 됐었는데요, 이 어플(8686 사용)에서 mysql을
쓰려면 mysql의 user, db 테이블에 127.0.0.1에 대한 설정을 해줘야
됩니다. 뭔가 비슷한 문제인것 같은데 제가 기초가 부족해서
자꾸 질문을 드리게 되네요..
>
8686 어플리케이션에서
mysql 으로 접속할 때 TCP 인지 아니면 도메인소켓인지에
따라서 iptables 정책이 바뀌어 질 수 있습니다.
위의 경우라면 아마도 도메인 소켓이 아닌 TCP/127.0.0.1 로 접속한
것 같습니다.
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
이 설정이 없다면 localhost == 127.0.0.1 이라할지라고 패킷이
모두 drop 됩니다. 때문에 반드시 이 rule 을 넣어줘야 합니다.
그외 전에 안되었던 원인은 mysql error 로그에서 혹시 그 해답을
찾을 수 있을지 모르니 확인해 보세요.
그럼
>
>[산이]님이 남기신 글:
>
>>
>>[이석]님이 남기신 글:
>>
>>>답변 감사합니다. 말씀하신대로 수정했구요, 8686포트는
연결이 되는것 같습니다. 그런데 이 어플리케이션(8686을
사용하는)에서 mysql(3306포트)쪽으로
연결이 되지않는것 같습니다. 둘다 같은 서버에
설치되어있구요,
mysql은 아파치등에서는
접속이 가능합니다. 다만 8686포트를 사용하는 이 프로그램에서
연결이 않되네요. 물론 맨아래 drop설정을 해제하면 잘 되니까
분명 iptables 룰 때문인것 같은데요..
>>>
>>>
>>>
>>>[산이]님이 남기신 글:
>>>
>>>>
>>>>[이석]님이 남기신 글:
>>>>
>>>>>-----------------------------------------
>>>>>답변자가 기본적으로 참고할 내용입니다.
>>>>>- 배포판(옵션) :
>>>>>- 커널버전(옵션)
:
>>>>>- 데몬버전(예:apache
1.3.27) :
>>>>>- 데몬설치유형(RPM/컴파일/기타)
:
>>>>>-----------------------------------------
>>>>>안녕하세요?
오랜만에 질문드립니다.
>>>>>어떤 프로그램때문에
8686포트를 사용하려고 합니다. 현재 iptables의 rule이 아래처럼
되어있구요 8686포트관련 부분은 직접 설정했습니다만
포트가 사용가능하지가
않습니다. 물론 맨아래 drop부분을 삭제하면 연결이 잘
됩니다만.. drop부분보다 앞쪽에 8686에대한 accept설정을 해줬는데
왜 포트연결이 안되는지 모르겠습니다.
>>>>>
>>>>># iptables -L
>>>>>Chain INPUT (policy ACCEPT)
>>>>>target prot opt source destination
>>>>>DROP all -- anywhere anywhere state
INVALID
>>
>>
>>## loopback allow
>>##
>>iptables -A INPUT -i lo -j ACCEPT
>>iptables -A OUTPUT -o lo -j ACCEPT
>>
>>## system allow inbound(if established) TCP/UDP 0:65535
>>##
>>iptables -A INPUT -m state --state ESTABLISHED -j
ACCEPT
>>iptables -A INPUT -m state --state ESTABLISHED,RELATED -j
ACCEPT
>>
>>## system allow OUTPUT and outbound packets(if state related)
>>##
>>iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j
ACCEPT
>>
>>위의 5개의 rule 을 이 위치에 추가해 보세요. 아무래도 outbound
패킷
>>문제 인것 같네요.
>>
>>>>>ACCEPT tcp -- anywhere anywhere tcp spt:ftp-data state
RELATED,ESTABLISHED
>>>>>ACCEPT tcp -- anywhere anywhere tcp dpts:ftp-data:ssh
state NEW,ESTABLISHED
>>>>
>>>>>ACCEPT tcp -- anywhere anywhere tcp spt:8686 dpt:8686
state NEW,ESTABLISHED
>>>>
>>>>이 설정에서 소스 포트를 지정하지 않고 수정해
보세요.
>>>>
>>>>ex)
>>>>iptables -A INPUT -p tcp --dport 8686 -m state NEW,ESTABLISHED -j
ACCEPT
>>>>
>>>>이런식으로
>>>>
>>>>>ACCEPT tcp -- anywhere anywhere tcp spts:1024:65535
dpts:1024:65535 state RELATED,ESTABLISHED
>>>>>ACCEPT tcp -- anywhere anywhere tcp dpt:smtp state
NEW,ESTABLISHED
>>>>>ACCEPT tcp -- anywhere anywhere tcp dpt:domain state
NEW,ESTABLISHED
>>>>>ACCEPT tcp -- anywhere anywhere tcp dpt:http state
NEW,ESTABLISHED
>>>>>ACCEPT tcp -- anywhere anywhere tcp dpt:pop3 state
NEW,ESTABLISHED
>>>>>ACCEPT tcp -- anywhere anywhere tcp dpt:imap state
NEW,ESTABLISHED
>>>>>ACCEPT tcp -- anywhere anywhere tcp dpt:https state
NEW,ESTABLISHED
>>>>>ACCEPT tcp -- anywhere anywhere tcp dpt:rndc state
NEW,ESTABLISHED
>>>>>ACCEPT tcp -- anywhere anywhere tcp dpt:mysql state
NEW,ESTABLISHED
>>>>>ACCEPT tcp -- anywhere anywhere tcp spt:ftp state
NEW,ESTABLISHED
>>>>>ACCEPT tcp -- anywhere anywhere tcp spt:ssh state
NEW,ESTABLISHED
>>>>>ACCEPT tcp -- anywhere anywhere tcp spt:smtp state
NEW,ESTABLISHED
>>>>>ACCEPT tcp -- anywhere anywhere tcp spt:time state
NEW,ESTABLISHED
>>>>>ACCEPT tcp -- anywhere anywhere tcp spt:nicname state
NEW,ESTABLISHED
>>>>>ACCEPT tcp -- anywhere anywhere tcp spt:http state
NEW,ESTABLISHED
>>>>>DROP tcp -- anywhere anywhere
>>>>>
>>>>>Chain FORWARD (policy ACCEPT)
>>>>>target prot opt source destination
>>>>>
>>>>>Chain OUTPUT (policy ACCEPT)
>>>>>target prot opt source destination
>>>>>DROP all -- anywhere anywhere state INVALID
>>>>
>>>>========================================
>>>
>>>========================================
>>
>>========================================
>
>========================================
========================================
|