Jenkins를 설치한 후 localhost로는 접속이 되는데, 외부 접속이 되지 않는 경우가 있습니다. 방화벽에서 막고 있기 때문인데요, 해당 PC의 방화벽에서 Jenkins 외부 접속을 허용해 주는 방법을 알아보도록 하겠습니다.
목차
Jenkins 외부 접속이 안되는 현상
제가 윈도우 10에 Jenkins를 설치한 경우에는 방화벽 때문에 Jenkins 외부 접속이 되지 않았습니다. 이럴 때는 Windows Defender 방화벽에서 젠킨스 서비스를 구동하는 java에 대해 인바운드 접근을 허용해 주어야 Jenkins 외부 접속이 가능합니다.
Windows 10 방화벽에서 java 허용
우선 Windows Defender 방화벽을 실행해 주셔야 합니다. 실행은 다음의 두 가지 방식으로 실행이 가능합니다.
그림 1과 같이 제어판에서 Windows Defender 방화벽을 실행해 주시면 됩니다.
또는 그림 2와 같이 윈도우 작업표시줄의 검색창에서 Windows defender를 입력하여 “Windows Defender 방화벽”을 검색하여 실행합니다.
Windows Defender 방화벽 창이 열리면, 좌측 메뉴 상단에 있는 Windows Defender 방화벽을 통해 앱 또는 기능 허용을 눌러줍니다.
허용되는 앱이라는 창이 열립니다. 우측 하단에 있는 다른 앱 허용 버튼을 눌러줍니다.
앱 추가 창이 열리면 찾아보기 버튼을 눌러줍니다.
Jenkins는 기본적으로 JDK가 필요하죠. Jenkins 구동에 사용하는 java.exe를 찾아주세요. 저의 경우에는 C:\Program Files\jdk-11\bin\java.exe가 있었습니다. java.exe 파일을 선택해서 열기 버튼을 눌러줍니다.
앱 추가 화면에 선택한 java.exe에 따라 앱 이름이 나오고 경로를 확인할 수 있습니다. 저의 경우에는 OpenJDK Platform binary가 앱 목록에 추가 됐습니다. 우측 하단의 추가 버튼을 눌러줍니다.
이제 허용되는 앱 및 기능 상자에 OpenJDK Platform binary가 추가되었고 체크상자에 체크가 돼 있습니다. 확인을 눌러서 작업을 마무리하면 됩니다. 이제 외부에서 해당 기기의 Jenkins에 접속할 수 있습니다.
이 방식을 사용하면 OpenJDK Platform binary를 사용하는 경우 모든 포트에 대해서 허용하게 됩니다. 여기까지의 설정에 만족하시는 분은 그냥 사용하시면 됩니다.
방화벽 보안 수준 높이기
하지만 보안 수준을 높이고 싶은 경우에는, Jenkins의 포트인 8080만 열어줘야 합니다. 지금부터 이 부분에 대한 설정 방법을 소개하겠습니다. 우선 Windows Defender 방화벽에서 고급 설정 메뉴로 들어갑니다.
고급 보안이 포함된 Windows Defender 방화벽 창이 열리면 좌측 상단에 있는 인바운드 규칙을 눌러줍니다. 우측 인바운드 규칙에서 아까 추가했던 OpenJDK Platform binary를 찾아서 더블클릭 해 줍니다.
OpenJDK Platform binary 속성 창에서 프로토콜 및 포트 탭을 선택합니다. 로컬 포트의 모든 포트를 특정 포트로 변경해 줍니다. 아래 입력란에 허용할 포트 번호를 직접 입력해 주면 됩니다. 저는 Jenkins의 기본 포트인 8080을 입력해 주겠습니다. 확인을 눌러서 창을 닫아줍니다.
이제 모든 설정을 마쳤습니다. 이와 같은 추가 설정 후에는 java로 실행하는 다른 어플리케이션에 대해 포트를 추가로 열어줘야 할 수 있습니다. 이점 염두에 두셔야 합니다. 이도 저도 귀찮다면 그냥 모든 포트를 열어두시는 것도 방법입니다.
관련 자료
Microsoft의 Windows Defender 방화벽 구성 모범 사례 페이지를 확인하시면 방화벽 설정과 관련된 내용을 확인할 수 있습니다.