한국에서 일본 SIM(QTmobile) 개통하기 (下)

아마 신청이 정상적으로 접수되었다면, 배대지 등을 거쳐 유심이 왔을 것입니다. 이 글에서는 개통 과정을 다룹니다.

우측의 포장물을 열면 사진 왼쪽에 있는 내용물이 나옵니다.

편지봉투같이 생긴 것을 열어보면 안에 이렇게 유심 카드가 나옵니다. 미니~나노까지 모두 지원합니다. 본인 폰에 맞는 거로 분리하시기 바랍니다.

그래서 유심을 끼웠더니, 로밍이 안 잡힌다는 이야기가 있습니다. APN 설정을 안 한 것으로 추정되는데, 안드로이드의 경우 모바일 네트워크 설정에서 엑세스 포인트를 지정해주어야 합니다. 도코모망이면 사진에서 위의 표, AU망이면 아래의 표를 참고하면 됩니다.

아이폰의 경우 QR코드를 스캔해 프로파일을 설치하도록 설명서에서 안내하고 있습니다.

굴러다니는 아이폰 하나에 끼우고 설정해봤습니다. KT로 잡히고 일본 외무성에서 해외 안전 문자가 온 모습입니다.

통신사에서도 별도로 안내 문자가 옵니다.

일본 번호로 MIXI M, LINE Pay카드 등을 발급받은 모습입니다.

여기까지입니다. 마치겠습니다.

한국에서 일본 SIM(QTmobile) 개통하기 (上)

[2022년 5월 기준 발급 성공하였습니다.]
현재 결제 수단으로 하나 아멕스 체크카드와 오리지널 JCB 등 한국 카드 일부가 막혔다고 합니다.
그러나 일부 JCB 카드, 삼성 아멕스 등에서 결제 성공이 확인되고 있습니다.

주의: 일본 외 국가에서 SMS 이용 시(수신 포함) 국제 로밍 SMS 이용료 1100엔이 추가 청구됩니다. 개통 전 확인하시어 이용에 착오 없으시기 바랍니다.

이플러스 등 일본 거주자에게만 제공되는 서비스의 경우 전화번호를 통한 인증을 요구하는 경우가 많은데요, 그래서 국내 일부 유저들이 일본 전화번호를 직접 개통하는 방식으로 이를 우회한 사례가 있었습니다.

그런데 가장 괜찮은 곳으로 평가받던 iijmio 등 여러 통신사들이 피싱 문자가 늘어나는 사회 문제로 인해 전화번호 개통에서도 본인 확인을 요구하는 경우가 늘어, 현지 거주자가 아니면 전화번호를 개통하기가 상당히 어려워졌습니다.

마침 전화번호가 필요했던 저는 위키피디아에서 일본 MVNO 목록을 뒤졌고, 그렇게 찾아낸 아직 막히지 않은 통신사, QTmobile을 소개하려고 합니다.

거의 유일하게 남은 곳이므로 통신요금이 좀 많이 나가는 건 감수하셔야겠습니다… https://qtmobile.jp

 

格安スマホ・格安SIMはQTモバイル(QTmobile)

格安スマホ・格安SIMはおトクに安心してはじめられるQTmobile(QTモバイル)。QTmobileは、九州電力グループ「QTnet」のブランドです。ドコモ・ au・ソフトバンクに対応。お手持ちの端末そのままで

www.qtmobile.jp

여기로 들어가줍시다.

사이트 메인입니다. 오른쪽 위 빨간 버튼을 눌러줍시다.

대부분 처음 신청할 것이므로 왼쪽의 초록 버튼을 누릅니다.

엔트리 코드가 대부분 없을 것 같으니 왼쪽 항목을 선택하고, 아래 입력 칸은 비워둔 채 맨 아래 초록 버튼을 누릅니다.

그러면 이렇게 요금제 선택이 뜹니다.
한국에서 문자를 받으려면 해외 로밍이 되어야 하기에, 첫 번째 메뉴에서 도코모(D타입, 맨 왼쪽) 또는 au(A타입, 가운데)회선을 선택해야 합니다. 저는 au를 사용합니다.

그 다음은 데이터+SMS는 필수인 듯한데 통화의 유무를 선택하게 되어 있습니다. 일본 법률 상 통화가 포함된 요금제는 본인확인을 실시하도록 강제되어 있어, 거주자 아니면 못 만듭니다. 따라서 전화가 회색으로 표시된 오른쪽 항목을 고릅시다.

그 다음은 데이터 용량인데.. 저는 문자만 오면 되므로 가장 적은 걸로 골랐습니다.
그 밑은 단말 구입 여부인데, 대부분 SIM 카드만 살 것이므로 왼쪽 항목을 선택합니다.

맨 아래로 내려와 초록 버튼을 눌러 넘어갑니다.

SIM 카드를 선택하라고 나오는데, AU 기준 저거 하나만 떴습니다. 그래서 그냥 밑의 초록 버튼을 눌러 넘어갑니다.

본인이 쓸거냐고 묻습니다. 전 제가 쓸거라서 왼쪽 버튼을 눌렀습니다.

옵션(부가서비스)을 선택하라는데 전 필요 없어서 아무것도 체크 안 하고 넘어갔습니다.

이메일을 주니까 고르라는건데, 알아서 선택하시면 됩니다.
위 선택 항목은 고객이 지정 / 자동으로 생성 여부입니다.

이제 유심 받을 주소를 적어야 합니다.
맨 위는 순서대로 개인 / 기업•단체 여부입니다.
그 다음은 성명인데, 두 칸에 순서대로 성과 이름을 적으면 됩니다. 위의 두 칸은 한자, 밑의 두 칸은 히라가나인데, 윗칸은 한자로 적든 가타가나로 적든 상관없습니다.
그 다음은 성별입니다. (남 / 여)
그 다음은 생년월일인데, 미성년자는 보호자 동의를 받도록 되어 있습니다. 순서대로 연,월,일입니다.
그 다음은 주택의 종류를 고르라는데, 왜 필수정보인지는 모르겠습니다. 적당히 잘 고르시기 바랍니다..

그 다음 주소를 적습니다. 위부터 우편번호, 현/시/구/정•초메, 번지인데, 당연히 일본 국내로만 배송되므로 배송대행지 등의 주소를 적으셔야 합니다. 실제 유심이 발송되는 주소이므로 번지, 층/사서함까지 정확히 적으시기 바랍니다. 대부분 주소가 (일본어) 1-2-3 형식으로 제공될텐데, 이 경우 2-3만 적으시면 됩니다.

그 다음 연락받을 전화번호입니다. 배송업체에 제공되므로 일본어에 자신이 없으시면 배대지 번호로 하시는 게 좋습니다.
그 다음은 이메일입니다. 아까 신청한 것이 아닌 계약 관련 알림을 받을 이메일로 입력하시기 바랍니다. 그 아래 칸에 한번 더 입력합니다.

(이 이후는 스크린샷을 못 찍었습니다)

그 다음은 결제 수단(카드)을 입력해야 합니다.
정확히는 모르겠지만 국내 카드를 거부하는 것 같습니다.
약관에 ‘신용카드‘만 가능(데빗카드 불가)으로 적혀 있었는데, 하나 글로벌페이 체크(아멕스)로 성공했습니다. 이렇게 입력하고 아래 신청 버튼을 눌러 제출(아마 신청 내용이 맞는지 확인하는 페이지가 한 번 뜰 것입니다)하면 신청이 완료됩니다.

주의: 아멕스 카드 사용 시 뒷면의 3자리가 아닌 앞면의 4자리 보안코드를 입력합니다.

신청 완료, 신청 승인, 유심 발송 시 메일이 도착하므로 착오 없으시기 바랍니다.

이후 과정은 하편에서 다루겠습니다.

Dukascopy 카드 발급받기

참고: 본 게시글의 카드는 Swiss Bankers 카드로 교체되기 이전에 발급 받은 카드입니다.
 
<8/30 추가>
Swiss Bankers쪽으로 카드가 나오기는 했으나, 발급해서 배송받는 비용(25유로인가로 기억합니다), 매 결제 시 1달러/1유로/1프랑 (카드 통화에 따라 상이)의 수수료 등 실사용에 어려움이 있습니다.

Apple Pay를 쓰기 위해 해외 카드를 발급받았다.

YooMoney 카드를 쓰려다가, 러시아의 우크라이나 침공으로 인해 온갖 경제 제재가 생기면서 갈아탈 은행이 필요했다.

만 18세가 안 되는 사람에게는 좋은 은행인 것 같다. 굳이 배대지를 적을 필요도 없고, 대한민국 국적자로서 당당하게 인증받을 수 있다.
<필요 사항>
– 만 14세 이상의 나이
– 휴대전화 번호
– 본인 여권
– 영어 대화 능력
– 40유로의 예치금(카드발급 수수료 9프랑 포함)

https://www.dukascopy.bank/open-account/?lang=en

 

MCA Account Opening Application

EnglishРусскийFrançaisItalianoDeutsche中文HungarianPortugueseEspañolعربى

www.dukascopy.bank

여기서 계좌 발급을 신청하자.

신청 양식을 작성하면 된다.
주소에는 한국 주소로 써도 된다.

이 뒤에 예치금 입금 절차가 있는데, 해외결제 되는 카드를 통해 40유로를 결제하면 된다. 이후 듀카스 계좌로 입금해준다.

무슨 카드를 발급받을지도 같이 선택하는데, 애플페이로만 쓸거면 Virtual Card만 해도 된다. 발급 수수료는 9Fr로 좀 많이 센 편이다.

양식을 다 작성하면 이런 화면이 보인다. 영상통화로 인증하라는거다.

앱스토어나 플레이스토어에서 ‘Dukascopy Connect 911’을 찾아 설치한다.

휴대전화 번호로 로그인하자.

Chat with bank를 누르자.

처음 대화방에 들어가면 하단에 빨간 색으로 VERIFICATION 어쩌구가 적혀있을 것이다. 그걸 누르면 저런 질문이 뜨는데, Passport를 고르자.

좀 있으면 영상 통화가 오는데, 받으면 된다. 필자는 못 받아서 다시 요청했더니 여권부터 찍어 올리란다.

저렇게 찍어 올리면 아까 통화를 못 받아서인지 물어본다. 그럴땐 그냥 예스라고 해주면 곧 통화가 온다.

통화를 받는 순간 카메라가 켜진다. 그리고 직원의 목소리가 들리는데, 이름을 물어본다. 한글자씩이 아니라 한번에 불러주면 된다. (성/이름 따로)

그 다음 생년월일을 물어보는데, date of birth라고 물어보니 잘 듣도록 하자. (못들어서 당황함)

그 외에 무슨 일 하냐 등을 질문하는데, 직장이 없으면 I’m not working now 등으로 대답해주면 된다.

그러면 특별한 이상이 없는 경우 확인되었다고 할 것이다.

그리고 좀 기다리면 개설이 완료된다.

이런 문자가 온다.

저걸 누르면 메일과 SMS로 임시 비밀번호를 보내준다는데, 받는데 엄청 오래걸렸다. 그걸 받아야 전화번호로 로그인할 수 있다.

이제 Dukascopy 앱을 이용하자.

그러면 이런 식으로 내 계좌가 보인다.

밑의 Card 메뉴로 가면 내 카드도 볼 수 있다.

애플페이에 등록도 잘 된다.

그런데 이 상태로는 카드를 쓸 수 없다.
쓰려고 해도 승인거부가 뜰 것이다.
‘탑업’이 되지 않았기 때문이다.

필자는 처음에 보고 당황스러웠다.. 듀카스 앱에 요청 기록이 남은 걸 보면, GS25 전산에는 이상이 없을 터였다.

저 33 $ 자리에 있는 숫자를 보자. 그게 당신 카드의 잔액이다.

듀카스 계좌에 있다고 해서 카드로 바로 쓸 수 있는 게 아니다.
카드로 잔액을 넣어주는 과정이 필요한데, 그걸 ‘탑업’이라고 한다.

Top up을 눌러 듀카스 계좌에서 돈을 가져다 넣어주면 저렇게 돈이 들어온다.

그리고 잘 결제되는 것을 볼 수 있다.

결제 수수료는 3%정도가 뜯기는 것 같다.

[iOS] 아이폰에서 VPNGate 이용하기

VPNGate란, 츠쿠바대학에서 만든 공개 VPN 플랫폼으로 자신의 컴퓨터를 VPN으로 사용할 수 있도록 해 주는 곳입니다. 개인이 가벼운 사설 VPN 서버를 운영하는 데에 있어서 WireGuard와 함께 최적의 수단이 아닐까 싶습니다. 특히나 업체보다는 개인 소유의 서버가 대부분이라 VPN IP를 감지하여 차단하는 서비스를 우회하는 방법으로도 활용이 가능한 것이 장점입니다. 단점으로는, 직접 살아 있는 서버를 찾아서 연결해야 하는 것입니다.

이번엔 VPNGate로 VPN을 이용하는 방법에 대해 작성해 보겠습니다.

https://www.vpngate.net/en/
일단 여기서 살아 있는 서버를 찾아봅시다. 컴퓨터라면 SoftEther라는 프로그램을 쓸 수 있지만, 아이폰이라면 L2TP/IPsec, OpenVPN 등을 이용해야 합니다.

두 체크박스에만 체크를 한 상태로 우측의 Refresh 어쩌구를 눌러줍시다.

여기서부터 두 가지 방법이 있습니다.

1. OpenVPN

저 부분을 눌러 다운로드 페이지로 이동합니다.

저 OpenVPN 버튼을 눌러 설정 파일을 내려받습니다.

https://apps.apple.com/kr/app/openvpn-connect/id590379981?l=en

App Store에서 OpenVPN 앱을 내려받습니다.

 

파일 목록에서 해당 파일을 선택 후 OpenVPN으로 엽니다.

 

이런 창이 뜨면 ADD를 누르시면 됩니다.
그 다음 창에서 한번 더 눌러주시고요.

연결이 잘 되었다면 이런 화면이 뜹니다.
연결이 안 된다면 다른 서버로 시도해 보셔야 합니다.

2. L2TP/IPsec

서버 주소만 잘 보시면 됩니다. 저 IP를 확인합시다.

설정에서 VPN 항목으로 들어갑니다.

Add VPN Configuration…을 누릅니다.

Type 항목을 터치해서 ‘IPsec’나 ‘L2TP’로 바꿔줍니다.
Description에는 원하는 이름을 넣으시면 됩니다.
Server에는 아까 확인한 IP 주소를 입력하시면 됩니다.
Account, Password, Secret에는 모두 ‘vpn’을 입력해 주시면 됩니다.
나머지 항목은 그냥 두시고 상단의 Done을 누릅니다.

그다음 이렇게 연결을 시도해 주시면 됩니다.
정상 연결된 경우 위의 문구가 Connected로 바뀝니다.

[SQL] CIDR 목록 검색 예제(IPv4)

위키 엔진을 만들던 중 CIDR 차단 기능을 구현해야 하는데, 이걸 어찌할지 몰라 한참 고민하고 있었다. PHP 상에서 처리를 해야 하나 고민했지만 해답은 SQL에서 찾을 수 있었다.

문제 상황

나는 MariaDB를 운용하고 있었고, 테이블의 각 행에는 차단 대상으로 지정된 CIDR들이 등록되어 있었다.
| id | target_ip |
|—-|——————|
| 1 | 1.2.3.4/32 |
| 2 | 123.45.67.0/24 |
| 3 | 123.45.0.0/16 |
| 4 | 0.0.0.0/1 |

그리고 쿼리를 통해 접속한 IP가 차단 대상에 해당하는지 확인해야 한다. 그래서 특정 IP 주소를 포함하는 CIDR이 테이블 안에 있는지를 살펴야 한다.

검색 끝에 아래와 같은 쿼리를 찾았다. 원래는 CIDR로부터 범위를 추출하는 쿼리였지만 잘 개조해서 아래처럼 ‘대상 IP’를 포함하는 CIDR들을 추출할 수 있는 쿼리를 만들었다.

대상 IP를 123.45.67.8로 지정한 쿼리 결과:
| id |
| 2 |
| 3 |
| 4 |

대상 IP를 123.45.6.7로 지정한 쿼리 결과:
| id |
| 3 |
| 4 |

복붙해다 쓸거면 그냥 바로 아래 있는 걸 건져가서 적절히 수정하면 된다.

SELECT id FROM 테이블이름 WHERE INET_NTOA(INET_ATON( SUBSTRING_INDEX(target_ip, ‘/’, 1)) & 0xffffffff ^ ((0x1 << ( 32 – SUBSTRING_INDEX(target_ip, ‘/’, -1)) ) -1 )) <= ‘대상 IP’ AND INET_NTOA(INET_ATON( SUBSTRING_INDEX(target_ip, ‘/’, 1)) | ((0x100000000 >> SUBSTRING_INDEX(target_ip, ‘/’, -1) ) -1 )) >= ‘대상 IP’;

수정하기 편하라고 하이라이팅해뒀다.
SELECT id FROM 테이블이름 WHERE INET_NTOA(INET_ATON( SUBSTRING_INDEX(target_ip, ‘/’, 1)) & 0xffffffff ^ ((0x1 << ( 32SUBSTRING_INDEX(target_ip, ‘/’, -1)) ) -1 )) <= ‘대상 IP’ AND INET_NTOA(INET_ATON( SUBSTRING_INDEX(target_ip, ‘/’, 1)) | ((0x100000000 >> SUBSTRING_INDEX(target_ip, ‘/’, -1) ) -1 )) >= ‘대상 IP’;

참고 사이트: https://stackoverflow.com/questions/35562416/mysql-query-to-convert-cidr-into-ip-range

n n

n

n

n

MySQL query to convert CIDR into IP range

n

I have a table which contains a column as CIDR values like 1.0.85.128/25, I have 2 other columns (start_ip_range and end_ip_range), I want to populate those 2 column FROM CIDR column Java code might

n

stackoverflow.com

n

[iOS] PDF 병합 단축어

이번에 어쩌다 만들게 된 단축어 하나를 소개한다.

 

사용법:

일단 파일 앱 등을 켜서 저렇게 병합하려는 여러 PDF 파일을 선택한다.

 

그 상태로 저 버튼을 누른다.

 

그러면 맨 밑에 ‘PDF 합치기’라는 옵션이 있을 것이다. 그것을 누른다.

 

그러면 변환이 진행되고…

파일 이름은 가렸다.

파일 이름은 뭘로 하고 어디에 저장할지 물어보는 창이 뜬다.

폴더를 지정하고 저장 버튼을 누르면 위에서 또 다시 로딩 배너가 내려온다.

그 후 체크 표시가 뜨면 저장이 완료된 것이다.

 

 

링크:

https://www.icloud.com/shortcuts/915f2c8b8fed4a0bb93bc905bc1b5c27

 

PDF 합치기

 

www.icloud.com

 

[PHP] mbstring 없이 한글 문자열 다루기

보통 PHP에서 한글 글자수를 센다던가, substr을 통해 자른다던가, 한글자씩 분리한다던가 할 때 php-mbstring 확장을 사용한다.

 

만약 자신이 만들고 있는 PHP 앱이 빠른 속도를 요구한다면, mbstring 확장을 떨쳐 내는 것은 이를 위한 좋은 방법이 될 수 있다. 실제로 해외의 여러 커뮤니티에서도 mb_strlen() 등은 매우 느리다고 이야기하고 있고, 그래서 구글링 끝에 얻은 대안 두 개를 소개한다.

 

1. iconv_

php-iconv 모듈에 속해 있는데 대부분 내장이라 뭘 따로 설치할 필요는 없다.

<?phpn$str = '가나다';necho microtime();nfor($i=0; $i<1000; ++$i){n    mb_strlen($str);n}necho microtime();nnecho microtime();nfor($i=0; $i<1000; ++$i){n    iconv_strlen($str);n}necho microtime();nnecho microtime();nfor($i=0; $i<1000; ++$i){n    count(preg_split('//u', $str));n}necho microtime();

속도를 측정해 보고 싶어서 다음과 같이 코드를 작성 후 실행하였다.

strlen을 측정하는 세 가지 방법을 사용하였다. 각 방법으로 1000회씩 실시해 그 소요시간의 차를 구해보겠다.

 

출력

0.15499200 1620953054

0.15879300 1620953054

0.15879800 1620953054

0.15966200 1620953054

0.15966400 1620953054

0.16053900 1620953054

 

분석해 보면, mb_strlen()은 0.003801초

iconv_strlen()은 0.000864초

count(preg_split(…))은 0.000875초가 걸렸다.

물론 하단에 서술하겠지만 count(preg_split()) 은 함수를 하나 더 써야해서 속도가 더 느릴 것이다.

이렇게 해 보면 mb_strlen이 얼마나 느린 함수인지 알 수 있다.

2. preg_split

출처:

stackoverflow.com/questions/3666306/how-to-iterate-utf-8-string-in-php

 

How to iterate UTF-8 string in PHP?

How to iterate a UTF-8 string character by character using indexing? When you access a UTF-8 string with the bracket operator $str[0] the utf-encoded character consists of 2 or more elements. For

stackoverflow.com

<?phpnfunction u_strlen($text){n    $result = array_slice(preg_split('//u', $text), 1, -2);n    return count($result);n}nnfunction u_substr($text, $offset, $len=null){n	$result = preg_split('//u', $text,-1,PREG_SPLIT_NO_EMPTY);n    return array_slice($result, $offset, $len);n}nnfunction u_strpos($haystatck, $needle, $offset=0){n	$split = preg_split('//u', $haystack,-1,PREG_SPLIT_NO_EMPTY);n    $result = array_slice($result, $offset);n    return array_search($needle, $result);n}nn$sample = '다람쥐 헌 쳇바퀴에 타고파';necho u_strlen($sample); // 14necho u_substr($sample, 1); // 람쥐 헌 쳇바퀴에 타고파necho u_strpos($sample, '쳇바퀴'); // 6n

 

 

 

정규식 함수를 쓰기 때문에 얼핏 보면 느려보일 수 있다. 그러나 메모리를 더 많이 먹을지언정 속도는 더 빨라졌다는 것이 해당 stackoverflow 페이지의 주 내용이다.

 

여기서 주의할 점은, PREG_SPLIT_NO_EMPTY 옵션을 주지 않으면 맨 앞과 맨 뒤에 공백이 생긴다.

[PHP 8] 시작과 끝 문자열 확인하기 – str_starts_with(), str_ends_with()

javascript에는 .startsWith()와 .endsWith() 라는 함수가 각각 시작과 끝 문자열을 반환해주는 기능을 한다.
그런데 PHP에는 이게 없어서 직접 기능을 구현해야 했다.

이 함수는 PHP 8에서 새롭게 추가된 기능인데, 문자열이 특정 문자로 시작하거나 끝나는지의 여부를 bool 형태로 반환한다.

str_starts_with( string $haystack, string $needle )nstr_ends_with( string $haystack, string $needle )nn// 예제n$a = 'abcdefghi';nif(str_starts_with($a, 'a')){n	echo 'Starts with a.';n}else{n	echo 'NOT Starts with a.';n}nnif(str_starts_with($a, 'b')){n	echo 'Starts with b.';n}else{n	echo 'NOT Starts with b.';n}n// Starts with a. NOT Starts with b. 가 출력된다.nn// 예제n$a = 'abcdefghi';nif(str_ends_with($a, 'i')){n	echo 'Ends with i.';n}else{n	echo 'NOT Ends with i.';n}nnif(str_ends_with($a, 'h')){n	echo 'Ends with h.';n}else{n	echo 'NOT Ends with h.';n}n// Ends with i. NOT Ends with h. 가 출력된다.

무료 DNS(네임서버) 소개 – DNSZi, LuaDNS

처음 웹 개발을 시작한 이후, 도메인 관리를 위해 오랫동안 무료 서비스인 DNSZi를 써 왔다. 이후, CAA 레코드와 DNSSEC 등을 적용할 마음이 생겨 AWS Route53이나 Cloudflare, DigitalOcean, Linode 등을 전전하다가 LuaDNS라는 곳을 찾게 되었다.
그래서 내가 지금까지 애용하고 있는(혹은 있던) 두 서비스를 소개하고자 한다.

1. DNSZi

https://dnszi.com

 

DNSZi – 무료 네임서버(dns) 관리 서비스! 무료파킹서비스! 무료포워딩서비스!

<!– –> 도메인 DNS관리를 웹에서 쉽게 하세요! – DNS를 관리하는데 시간과 비용이 드시나요?- 번거롭게 도메인 등록업체에 매번 DNS정보 수정을 요청하시나요?- DNS관리자에게 DNS정보 수정을 요청하

dnszi.com

PHP 코딩하는 사람은 한 번쯤 들어봤을 법한 PHPSCHOOL.com 과 동일한 기업에서 운영하고 있다. 이 사이트는 그래도 국내에서 무료 DNS 서비스로 유명한 편이다.
지원 레코드: A, CNAME, MX, TXT, SRV
기타 서비스: 웹 파킹, 웹 포워딩, DDNS

일단 회원가입을 하고 도메인을 추가하면 아래 사진처럼 네임서버가 배정된다.

5차 네임서버까지 모조리 지원하기 때문에 도메인 설정에서 네임서버 지정란을 꽉 채울 수 있다.
네임서버 번호(ns**.dnszi.com)는 도메인마다 랜덤하게 배정된다.

여기 보이는 상단 메뉴에서 원하는 기능을 선택해 설정할 수 있다. 각 메뉴마다 설정에 관한 자세한 설명이 적혀 있어 초심자도 쉽게 이용할 수 있다.

또한 TTL 관리가 가능한데, 아래 사진처럼 선택이 가능하다.

만약 도메인 기본 TTL에서 설정한 값을 동일하게 서브 도메인에 적용시키고 싶다면 서브 도메인의 TTL 설정을 ::TTL:: 로 하면 된다.

만약 DNS 레코드의 설정을 변경하고 싶다면, 설정값을 수정한 후 해당 레코드 우측에 있는 ‘E’ 버튼을 누르면 된다. (오른쪽에 X는 삭제버튼)
복수의 레코드를 동시에 수정하려면 수정한 각 레코드의 왼쪽 체크박스를 체크한 후, 아래쪽의 ‘선택수정’을 누르면 된다.

만약 자신의 서버가 필요로 하는 기능이 단순 ip연결과 같은 기본적인 기능이라면, DNSZi를 이용하면 된다. 레코드 수, Zone 수 등에 제약을 받지 않고 무제한으로 이용할 수 있기 때문이다.

2. LuaDNS

2-1. 기본 사용법

https://luadns.com

 

Bulk DNS Hosting – LuaDNS

Managed DNS service Anycast name servers distributed across the globe in 11 POPs (USA, Europe, Asia & Australia). The service was optimized for fast propagation of changes, servers are managed and constantly monitored by us. Control Panel A simple and fast

luadns.com

지원 레코드: A, AAAA, ALIAS, CAA, CNAME, DS, FORWARD, MX, NS, REDIRECT, SLAVE, SPF, SRV, SSHFP, TLSA, TXT
이 서비스의 강력한 장점은 바로 위와 같이 많은 종류의 레코드를 지원한다는 것이다. 물론 AWS Route53이나 Cloudflare가 더 많은 레코드를 지원했던 것으로 기억하지만, 이쪽은 유료이거나 기능 제약이 많아서 필자에게는 적합하지 않았다.

이 녀석은 해외 서비스이다. 일단 회원가입부터 하자.
로그인해서 zones 메뉴를 들어가 보면 이런 식으로 있을 것이다.
(필자는 사전에 도메인을 등록해 두었다.)

사진 우측에 ‘Add Zone’ 이라는 걸 누르면 도메인을 추가할 수 있다.

맨 위에 도메인을 적고, ‘Add Zone’을 누르자.
아래의 템플릿이나 레코드 복사 설정은 안 해도 된다.

그러면 이제 위 사진처럼 레코드 목록이 뜰 것이다. 사진에는 잘렸지만 왼쪽 하단에 보면 ‘Add New Record’ 라는 게 있다. 그걸 누르면 레코드가 추가된다.
host name 칸은 루트 도메인에 적용시키려면 빈 칸으로, 서브도메인에 적용시키려면 서브도메인 이름만 입력해주면 된다. (ex: a.abc.kr → ‘a’ 만 입력)

다 지정했으면 우측 하단의 Save를 누르자.

성공적으로 업데이트 되었다면 위와 같은 메시지가 뜬다. 참고로 저장이 완료되면 SOA – NS – (지정 레코드) 순으로 정렬이 되는데, 레코드 종류가 먼저 알파벳 순으로 정렬되고 그 다음 Name의 알파벳 순으로 정렬된다.
아래는 저장이 안 된 경우 뜨는 오류 메시지들이다.
invalid (ipv4/ipv6) address : A, AAAA 레코드의 Content에 잘못된 ip 주소를 기입한 경우
content: bad {내용}: {지정값} : {내용} 의 값이 잘못 지정된 경우
records: Found other records with (도메인). delegation, it should contain only NS and DS records : 한 도메인에 대해 DS 레코드를 여러 개 지정한 경우
Max records reached, please access account settings page to upgrade your package : 사용 가능한 레코드 수를 초과한 경우 (무료 서비스는 30개까지다. 레코드 왼쪽의 번호는 0부터 시작하므로 참고하자.)

양식을 틀려먹은 경우 아래와 같은 오류 페이지로 넘어가 버린다. 이 경우 수정한 내용을 모두 재 입력해야 하는 참극이 발생하므로 조심하자.

2-2. 요금제와 고급 기능

그런데, 위에서 눈치챘겠지만 서비스 자원을 무한하게 이용할 수 있는 건 아니다.
회원가입을 하면 무료 계정으로 등록되며, 3개의 도메인, 각 30개의 레코드를 사용할 수 있다. 기본으로 SOA와 NS 레코드 4개가 지정되므로 사실상 25개만 사용 가능한 것이다.

그래서 위 사진처럼 요금제가 있다. Zones 수 = 도메인 수 라고 봐도 무방하다.
유료 서비스는 개인의 필요에 따라 적절히 구매하면 되는데, 어지간히 큰 사이트가 아니면 굳이 살 필요는 없다.

그러면 왜 이 서비스를 이용하냐고? 그것은 이제 아래에 서술할 고급 기능 때문이다.

고급 기능 1. DNS API

LuaDNS는 DNS API를 지원하는데, 이게 무엇이냐 하면 저 사이트 외부에서 DNS 정보를 변경할 수 있도록 하는 것이다.
처음 보는 사람은 그래서 이게 왜 필요하냐고 묻곘지만 API를 제공하는 DNS 서비스를 특별히 찾는 이유는 바로 무료 wildcard 인증서를 자동으로 업데이트할 수 있기 때문이다.

여기서 wildcard 인증서가 무엇인지 간단히 설명하자면, 원래 도메인의 SSL 인증서는 각 도메인마다 따로 받아야 한다. 예를 들어 abc.kr, a.abc.kr, www.abc.kr 등 서브 도메인을 포함해서 모든 도메인이 각각 별개의 인증서를 발급받아야 하는 것이다. 그런데 이를 일일이 발급하고 관리하기란 매우 까다로운 일이다. 그래서 나온 게 모든 서브도메인에 대응할 수 있는 wildcard 인증서이다. *.abc.kr 의 인증서 하나로 a.abc.kr. b.abc.kr 등 모든 서브도메인의 인증서를 갈음할 수 있다. (물론 루트 도메인인 abc.kr은 따로 발급받아야 한다.)

그런데 Let’s Encrypt에서 발급한 인증서는 3개월이면 유효기한이 지나 쓸 수 없게 된다. 그래서 이를 자동으로 재발급 해 주는 프로그램이 있는데, 바로 acme.sh 라는 프로그램이다. 이 프로그램에 대한 자세한 사용법은 여기를 참고하자.

 

LuaDNS API를 이용한 무료도메인 와일드카드 SSL 인증서 발급 받기 > 작업실 | 우성짱의 NAS

1. 들어가며무료 DNS 서비스로 클라우드플레어를 추천하지만, 클라우드플레어는 Freenom의 무료도메인(ga,tk,ml,cf,gq)에 대해 API 인증을 지원하지 않습니다.따라서 와일드카드 SSL 발급이나 DDNS 기능

www.wsgvet.com

이 서비스는 보통 맨 처음에 언급했던 Cloudflare과 같은 대형 기업에서 주로 제공하는데, 굳이 거기를 놔두고 여기로 오는 이유는 freenom 같은 곳에서 발급하는 무료도메인은 Cloudflare를 이용할 수 없기 때문이다. 필자는 기능에 제약이 너무 많아서 이 서비스를 이용하기 시작했다.

고급 기능 2. DNSSEC

참고 문서

 

한국인터넷정보센터(KRNIC)

도메인 소개, 등록 및 사용, IP주소, AS번호, DNS 정보, 관련규정 제공

xn--3e0bx5euxnjje69i70af08bea817g.xn--3e0b707e

일단 DNSSEC가 뭔지는 위의 참고 문서를 한 번 읽어보자.

위에서 봤던 Zones 메뉴에서 저 빨갛게 동그라미 친 버튼을 누르면 DNSSEC 설정 페이지로 이동한다.

위에서 DNSSEC에 체크하고 Save를 누르면 아래 부분처럼 DNSEC(???) 메뉴가 나타난다.
여기까지 왔으면 DNS 서비스에서 할 일은 끝난 것이다. 루트 도메인에 대한 DS 레코드는 자동으로 적용되므로 따로 수정할 필요가 없다.
저기서 Key Tag, Algorithm, Digest Type, Digest와 저 빨간 원 안의 here를 누르면 나타나는 Public Key의 값을 들고 당신의 도메인 등록기관에 찾아가서 등록을 요청하자.

필자는 호스팅케이알을 이용하고 있어서 1:1 문의를 통해 등록했다. 위 사진처럼 알려주면 된다. DNSSEC 등록 방법은 도메인 기관마다 다르니 참고하자.

이렇게 두 서비스를 간단히 소개해 보았다.
본인의 서비스가 방금 소개한 두 고급 기능이 필요하다면 LuaDNS, 그렇지 않다면 DNSZi를 사용하면 되겠다.

PHP Lecture 2 – 변수

이번 글의 주제는 ‘변수’입니다.

‘변수’란 ‘어떤 관계나 범위 안에서 여러 가지 값으로 변할  있는 수’를 뜻합니다. (네이버 사전)

 

이제 PHP 상에서의 변수에 대해 알아보겠습니다.

 

1. 변수 선언

$variable = 'value';

$변수명 = ‘값’; 과 같이 새로운 변수를 선언할 수 있습니다.

 

2. 변수 재정의

1에서 설명드렸던 방법과 같이 $변수명 = ‘재정의 값’; 을 통해 변수를 재정의할 수 있습니다.

이렇게 하면 변수의 값이 변경됩니다.

 

3. 변수명

변수에 대해 짚고 넘어가야 할 점 중 하나는 변수명에 제약이 있다는 것입니다.

아래와 같은 이름의 변수는 사용할 수 없습니다.

// 변수명에 숫자 사용 불가n$12345 = '12345';nn// 변수명에 +, - 등의 연산자와 . , @ ! ' " 등은 사용 불가n$h(ell)o! = 'hello world';n$my-name = 'PRASEOD-';n$one+one = 'two';n$don'tusethis. = 'abcd';n...

4. 연산

변수는 연산자를 사용할 수 있습니다.

$a = 1;n$b = 2;necho $a + $b;n// 3이 출력된다.nnecho $a * $b;n// 2가 출력된다.

단순 연산도 가능하고, 괄호를 사용한 혼합 계산 역시 가능하다.

혹은 아래와 같이 계산할 수도 있다.

 

$cost = 100;n$cost += 10; // $cost = $cost + 10; 과 같은 계산necho $cost;n// 110이 출력된다.nn++$cost; // $cost의 값을 1 더하여 111 출력n--$cost; // $cost의 값을 다시 1 빼서 110 출력nn$pre = 'abc';n$suf = 'def';n$pre .= $suf; // $pre = $pre + $suf; 와 같은 계산n// abcdef가 출력된다.

위와 같이 활용 가능하다.

 

5. 문자열과의 혼합

문자열과 함께 쓸 수도 있다.

$v = '나는';nnecho $v.' 글을 씁니다.';necho "$v 글을 씁니다."; // 큰따옴표만 사용해야 함.n// 둘 다 '나는 글을 씁니다' 가 출력된다.nn$x = '글을';nnecho "나는 ".$x." 씁니다.";necho "나는 $x 씁니다."; // 큰따옴표만 사용해야 함.n// 둘 다 '나는 글을 씁니다' 가 출력된다.nn$z = '밥';nnecho "잡곡".$z;necho "잡곡{$z}";n// 둘 다 '잡곡밥' 이 출력된다.

이 정도면 기초적인 활용법은 끝났습니다.

이들을 자유자재로 활용할 수 있어야 합니다.