ubuntu cockpit 외부 접속 문제
올해 초만 해도 잘 사용했습니다.
그러나 6월 이후 생성한 인스턴스부터는 안되더군요.
그래서 오라클 리눅스 사용하고 있었습니다.
그러나 여러가지 문제로 다시 우분투를 사용하려고 합니다.
하지만 안타깝게도 여전히 cockpit이 안됩니다.
증상
curl 127.0.0.1:9090, curl A1:9090, curl 10.10.10.10:9090 으로만 접속이 가능합니다.
(A1은 오라클 클라우드 우분투의 hostname입니다. 10.10.10.10은 인스턴스의 로컬 ip입니다.)
cockpit이 설치된 인스턴스에서 curl [public ip]:9090으로도 안되고 당연히 외부에서도 안됩니다.
(No Route to host에러가 나타납니다.)
하지만 오라클 클라우드 인프라 문제는 아닙니다
이 오라클 클라우드의 security list 문제였으면 no route to host가 아니라 time out이 나올겁니다.
게다가 nginx docker를 9090포트로 생성하면 접속 됩니다.
(curl IP:9090으로도 시도했고, 브라우저로도 테스트 했습니다.)
9090포트가 오라클 클라우드 측에서 막힌 것은 아니라는 것이지요.
ubuntu나 cockpit에서 막고 있는 것 같습니다.
cockpit은 이 명령으로 설치했습니다.
. /etc/os-release
sudo apt install -t ${VERSION_CODENAME}-backports cockpit
ubuntu minimal로 설치해서인지 ufw 도 없습니다.
(ufw allow 9090 입력시 ufw: command not found라고 나옵니다)
우분투 2004와 2204 모두 외부에서 접속이 안되는 문제가 발생하고 있습니다.
우분투에 cockpit 사용하시는 분들은 어떤 세팅을 건드려서 접속이 가능하게 되었나요?
여기서 무엇을 더 건드려봐야 할까요.ㅠㅠ
희한하네요..안될 이유가 없는거같은데.. iptables도 별도로 없을까요?
docker가 iptables에는 영향을 안받으니까 고 부분도 해봤습니다.
sudo iptables -A INPUT -p tcp --dport 9090 -j ACCEPT
로 했는데 안되더군요..
오라클 클라우드에서 우분투 인스턴스에 콕핏 쓰는 사람이 저만 있을리가 없는데, 구글링을 해봐도 답이 안나오네요.
4번 정도 다시 만들어도 문제가 발생하는데..
왜 저만 안될까요..
한국 오라클만 안되나..?
tcpdump로 패킷 들어오는지 체크해봐야겠는데요
iptables같은 서버내 방화벽으로 막혀있어도 패킷은 체크되야해요
안되면 no route라 하니 공용ip랑 인스턴스가 연결이 되있나 확인해봐야 할거같아요
감사합니다! 해보겠습니다!
해봤는데 신호가 들어오는 것 까지는 보이네요.
ACK부터 안나갑니다...
일단 공용 ip로는 들어오는게 확인이 되요. cockpit만 아니면 연결 가능하거든요.
도움을 주셨는데, 안타깝게 해결이 안되었습니다.ㅠㅠ
클라이언트로부터 syn은 들어오고 ack는 안나간다는거죠? 아웃바운드 룰셋 걸려잇는걸수도 있으니 방화벽 한번 설치해보고 룰셋 확인해보세요
ufw가 없어도 룰셋이 걸릴수가 있나요?
ufw 설치하고 allow 하였으나 안되네요..ㅠㅠ
아웃바운드가 막힌거니 allow가 아니라 룰셋을 flush 해보세요
그 후에 allow 해보세요
ufw flush 후에 다시 allow 넣어보았지만 안되네요..
애초에 ufw는 disabled 상태일 때도 안되었으니..
ARM 버전인가요?
그렇습니다.
올 초에 1월인가 2월만 해도
처음 콕핏을 알게되었을 때만해도 arm에서 잘 되었습니다.
올 초에 사용할 때는 아마 19년 쯤에 만든 인스턴스에다가 적용했을건데,
안되기 시작한건 올해 5월에 만든 인스턴스부터는 콕핏이 안되더라구요..ㅠㅠ
ubuntu가 업데이트 되서 그런가보다.. 하고 있었는데 한달이 지나도 안되네요..
일단 로컬에서는 접속이 가능하니까 리버스 프록시 npm을 두개를 둬야겠네요..
호스트 네트워크 사용하는 npm이랑
독커 브릿지 네트워크 사용하는 npm이랑
해결책 나오기 전에는 이렇게 둬야겠네요.
npm environment 옵션으로 port를 바꿀수가 없어보이네요.. 흑. 이것도 안되나..
host network로 만든 npm도 127.0.0.1:81로는 접속이 되나 다른 곳에서 접속하면 차단이 되네요.
ip tables에 추가해주었으나 역시나 안됩니다.
cockpit이 아니라 ubuntu가 문제인가봅니다.
어떻게 하면 외부 접속을 혀용할 수 있으려나요..
ufw, firewall-cmd, iptables 말고 무엇이 차단할까요?
아니면 하나의 컨테이너에 host network와 bridge 네트워크를 모두 추가할 방법은 없을까요?
해결 했습니다
sudo iptables -I INPUT -p tcp --dport 9090 -j RETURN
sudo iptables -I INPUT -p tcp --dport 9090 -j ACCEPT
두개를 순서대로 입력하여 해결했습니다.
아하 .오라클 iptable이.좀 괴랄하죠.
저는 처음 설치시 iptable 초기화 시킨 후 도커 설치합니다 ㅎ
문제가 완전히 없어집니다
확실히 오라클의 오라클리눅스나 라즈베리파이의 우분투는 문제가 없었는데...
오라클 클라우드의 ubuntu iptable가 좀 이상한 것 같습니다.
iptable을 초기화할걸 그랬습니다.ㅠㅠ
지난 달에도 고생하다가 포기했는데, 문득 iptables에 통과시키는게 accept 말고 하나가 더 있다는게 떠올라서 그거 적용해보고, 순서도 중요하니 순서도 바꿔보고 했더니 어찌저찌 되네요.
accept랑 return 에 대해서 자세히 알아보고 예시까지 보고 오니까.
이해가 안갑니다.
여전히 안되요.
왜 되는지 모르겠어요.ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
한가지 확실한건, 이것 저것 해본다고 쓰레기 파일도 생겼고, iptables 가 문제가 아닐지도 몰라서
인스턴스를 종료하고 새로 생성해봤습니다.
콕핏만 설치하고 위 댓글의 iptables를 순서대로 입력하니 바로 되네요.
컨테이너들의 네트워크 설정은 Ip 주소 제외하고 전부 같습니다.
그런데 한 컨테이너만 외부로 연결을 못합니다. 이건 무슨 문제일까요.후..
duplicati로 백업한거 그대로 복원해서 켠건데 안되네요..
cmt alert