우분투 서버 18.04 iptables 서버 재기동으로 초기화 되는 문제

오라클 클라우드는 우분투 서버 방화벽 서비스로 ufw 가 아니라 iptables 를 사용하고 있다.
아마도 다른 리눅스 배포판에서도 공통으로 쓸 수 있는 iptables 로 간단하게 설정하기 위해서 그런것 같은데, 덕분에 이것저것 문제가 생기네.

업데이트 적용으로 우분투 서버를 재기동하고나니 웹서버 접속이 안되서 왜 그러나 했더니, 열어두었던 http, https 포트가 다시 막혀서 그런 것이었다.

iptables 설정 내용 확인

여기 분명히 설정했었던 내용이 사라져 있어서 검색.
이것저것 거친 후에 결론은 /etc/iptables/rules.v4 파일의 내용으로 iptables 설정이 저장/로드 되니 이 파일에 설정 내용을 저장하라는 것.

현재 iptables 설정 내용을 저장하는 방법. (지워진 내용을 다시 추가한 다음에 실행할 것.)
백업하고 하자.

내 경우에는 sudo 를 썼는데도 퍼미션 디나이드가 떠서 루트로 바꾼 후에 저장했다.

이제 서버 재기동해도 저장된 내용이 잘 살아있는걸 볼 수 있다.

혹시 iptables-save 명령이 없으면 iptables-persistent 를 설치.

기타

openvpn-install.sh 로 openvpn을 설치하면 iptables에 이것저것 내용을 추가하는 서비스가 설치된다.

매번 서버 재기동할 때마다 추가되니 현재 iptables 내용을 rules.v4 파일에 저장했으면 서비스는 끄자.

관련 글: 오라클 클라우드 방화벽 설정에 대한 모든 것

윈도우에서 golang 1.14 개발 환경 구축

구글이 개발한 go라는 언어를 알고부터 항상 해 보고 싶었는데 VPS 서버도 생겼겠다 다시 한번 뭔가 만들어 봐야겠다는 생각이 들어서 다시 손을 대봤다.

go 와 vscode 를 포터블판으로 설치해서 개발환경 구축하는 방법에 대해 새로 글을 썼다.
윈도우10 golang vscode 개발환경 구축

go 설치

고 자체는 공식 사이트(https://golang.org/)에서 (윈도우의 경우는) MSI 버전으로 설치하면 PATH 설정도 전부 해 주니, 인스톨만 하면 간단.
수동으로 설치할 경우에는 PATH에 go/bin 디렉토리를 넣어주고, GOROOT는 go 디렉토리, GOPATH는 다운받은 팩키지 소스등을 넣어줄 곳이니 마음대로 지정하면 된다.
셋 다 중요하니 처음 고를 설치할 경우에는 그냥 MSI 인스톨러로 설치하자.

IDE 설치

IDE는 이클립스에 goclipse 플러그인을 설치 해 봤는데 현재 고버전(1.14)에서는 자동완성 기능이 더이상 작동하지 않는다.
아래 IDE 투표에서 1위를 자랑하는 비주얼 스튜디오 코드(VSCode) 를 설치하자.

2019 스택오버플로 개발 환경 투표
2019 스택오버플로 개발 환경 투표 결과. 출처:https://insights.stackoverflow.com/survey/2019#technology-_-most-popular-development-environments

https://code.visualstudio.com/
설치 버전이든 포터블 버전이든 아무거나 쓰면 된다.
설치 후 VSCode 디렉토리에 Code.exe 파일을 실행하자.

VSCode go 확장기능 설치

이미 설치 후라 인스톨 버튼 대신 언인스톨 버튼이 보인다.

빨간 박스로 표시한 왼쪽 아이콘을 누르고, 검색에 go 를 넣고, 아래에 go 0.13.1 Rich Go language… 를 선택하면, 오른쪽에 자세한 내용이 보이는데 인스톨 버튼을 누르자.

설치 후에 Ctrl + Shift + P 를 누르고 go install 로 검색하면, 나오는 모든 내용을 체크한 후에 OK 버튼을 누른다.
다 설치하는데 시간이 좀 걸린다…

Language Server

코딩할 때 꼭 필요한 자동완성 기능을 도와주는 것인데, 처음에는 무효화 되어 있다.
File -> Preferences -> Settings 에 들어가서 검색 gopls 을 하면 나오는 Go: Use Language Server 에 체크하면 사용할 수 있는데, 이걸 사용할 경우에 메소드 후보들이 빨리 표시 되는 반면에 그닥 정확히 필요한게 나오지는 않는 것 같다.
끄면 느린 대신에 딱 필요한것만 나오는 것 같고. 끈 경우와 켠 경우 다 써 봐야 할듯.

이상 Go 개발 환경 구축 끝.

DB서버 외부에서 안전하게 접속하는 방법. DBeaver로 SSH 터널링 접속

2022/10/14 Update. 우분투 22.04 LTS 시대 기준 DBeaver 22.2.2버전에서는 암호화 알고리즘 ed25519을 사용할 때 SSH 터널 설정 화면 아래에 Advanced Setting -> Implementation를 SSHJ로 선택해야 한다.
그리고, Putty접속용의 .ppk파일이 아니라 오리지널 개인키를 써도 된다.

보통 유동 IP를 사용하는 집에서는 mysql/mariadb나 Postgresql 서버에 접속하기 위해서 외부 접속 설정을 모든 IP에 대해서 허용해야한다.
SSH 같은 경우는 공개키 접속 방식으로 개인키 파일이 털리지 않는한은 절대로 접속이 불가능하게 되지만, DB 서버의 경우는 아이디/패스워드가 전부이기 떄문에 외부 접속을 열어두기가 아무래도 꺼림칙하다.

그래서 공개키 접속을 사용한 SSH 터널링으로 DB 서버에 접속하면 훨씬 안전하게 접속 할 수 있는데, 이미 공개키 방식으로 SSH 접속을 하고 있다면 설정은 별로 어려울 것도 없다.
DBeaver 등의 SSH 터널링을 지원하는 DB 툴로
DB 접속 호스트는 localhost 를 지정하고
포트, 아이디/패스워드등 나머지는 그대로.

SSH 터널링 설정을 들어가서 DB 서버의 IP 주소, SSH 유저 아이디, SSH 인증 방식을 공개키 방식으로 하고 개인키 파일을 지정하면 끝.

문제 해결

ssh-keygen으로 생성한 파일을 넣으면 이런 에러가…

DBeaver에서는 개인키 파일을 ssh-keygen으로 만든걸 썼더니 에러를 뿜어서 Putty 접속용으로 변환된 .ppk 파일을 등록하니 잘 접속 된다.
접속이 안되서 또 애꿋은 방화벽 탓을 하다가 발견… 메시지가 방화벽과 전혀 관계가 없는데도 방화벽 탓을 하게 된다.

그리고, 마지막으로.
SSH 터널링으로 접속이 잘 될 경우에는 잊지 말고 반드시 DB의 외부 접속 허용 설정을 끌 것.

ssh 공개키/개인키 접속하는 방법 참고 https://storycompiler.tistory.com/112

Postgresql 12 버젼을 우분투 18.04 에 설치 설정

Postgresql 12 설치

참고 : Postgresql의 우분투용 설치 가이드

아래 명령으로 /etc/apt/sources.list.d 디렉토리에 pgdg.list 파일을 만들어 Postgresql 저장소를 추가한다.

우분투 버전이 18.04가 아닐 경우에는 ‘bionic’ 을 해당 우분투 버전이름으로 변경할것.

우분투 버전별 이름 (Postgresql 저장소에 존재하는 것만)
12.04 LTS precise
14.04 LTS trusty
16.04 LTS xenial
18.04 bionic
18.10 cosmic
19.04 disco
19.10 eoan

저장소 인증키를 추가

apt update / Postgres-12를 인스톨

유저 추가

아래 커맨드 중 elmitash 부분을 사용하고 싶은 아이디로 바꿀것.
postgres 유저로 바꾼 후, 새로운 유저를 추가
패스워드를 두번 입력

y를 입력해 관리자 권한을 준다

접속 테스트

외부 접속

postgresql.conf 파일을 수정

아래 부분을 찾아 주석 해제하고 localhost 를 * 로 바꾼다. 특정 IP에서만 접속할 경우엔 IP 주소를 쓰면 된다.

pg_hba.conf 파일을 수정

접속 인증을 할 IP 범위를 설정하기 위해서 아래 내용을 추가한다. 내부 네트웍일 경우 아래 내용에서 아이피 정도만 바꾸면 될듯.

설정을 마쳤으면 Postgresql 서비스 재시작

문제 해결

이놈의 방화벽… 진짜…
iptables 의 경우 숫자 6은 sudo iptables -L 로 확인해서 수정할 것.

ufw 의 경우는 간단.

오라클 클라우드는 인스턴스의 보안 목록에 수신 규칙을 추가해야한다. TCP의 5432번 포트를 개방.

관련 글: DB서버 외부에서 안전하게 접속하는 방법. DBeaver로 SSH 터널링 접속

오라클 클라우드 무료 유료 인스턴스 속도 테스트

프리티어는 무료니까 그렇다치고 그럼 유료는 얼마나 빠를까하는 궁금증이 생겼다.
체험 30일동안 3.3만엔의 크레딧을 주는데 거의 쓰지도 못해서 잔뜩 남았고 해서 만들 수 있는 제일 비싼 인스턴스로 만들어 봤다.

VM.Standard.E2.2는 16기가 메모리에 최고 속도는 초당 메가바이트로 환산하면 175MB/s 의 놀라운 속도!

인스턴스 생성 후에 콘솔 접속해서 버릇처럼 apt update, apt upgrade… 속도가 다르구만.
speedtest-cli 설치해서 실행!

결과는…

쿠궁…
다운로드는 초당 15MB/s 에 업로드는… 똑같잖아? 초당 500KB/s 수준.
업로드 속도는 프리티어에서 무료로 쓸수 있는 VM.Standard.E2.1.Micro 와 같은 속도다.

뭐 상용으로 쓰는데 이런 속도일리는 없고 결론은 그냥 무료체험에서 사용할 수 있는 인스턴스들은 다 속도 제한을 걸어뒀다…가 맞겠지.
아무리 그래도 500KB/s 는 너무한것 같은데… ㅠㅠ

그래도 공짜니까… 그냥 쓰는거다.

번외로 한달에 4.5만원쯤 내는 우리집 VDSL 속도…
윈도우10에 설치한 우분투에서 해 봤다.

다운로드 7.25MB/s, 업로드 476KB/s
그냥 다 비슷비슷한거 같다. 업로드 속도는 다 같은 수준이고.

관련글: 오라클 클라우드 프리티어 사용기
오라클 클라우드 프리티어로 이사