profile-image
Waterticket
개발

유동 IP 주기적 체크 시스템

홈서버를 위한 IP 체크 프로그램
개발

유동 IP 주기적 체크 시스템

홈서버를 위한 IP 체크 프로그램


홈서버는 구성하기 매우 어렵다

공유기도 잘 따라줘야 하고, 네트워크 상황도 받쳐줘야 하고..

만약 이 모든 환경이 잘 맞아서 어째저째 구성했다고 가정하자

이제 문제는 유지 보수로 넘어간다

일반적인 가정용 네트워크에 경우 유동 ip일 확률이 높다.

보통은 유동 ip라도 공유기가 켜져있다면 ip가 잘 바뀌지 않으나, 갑자기 정전이 된다던지 무슨 일이 있을지 누가 알겠는가

그래서 ip를 자동으로 체크하는 앱을 만들게 되었다.

먼저 나는 맥을 집에 설치하고, 해당 맥의 ip 주소를 받아오는 식으로 진행하였다.

일단 이번에는 C#을 통해 설정을 하였다.

콘솔 프로그램을 생성해주고 cron을 통해 주기적으로 ip를 체크하는 방식이다.

먼저 GetLocalIP() 라는 함수를 통해 맥의 IP 주소를 받아온다.

공유기를 거칠경우 해당 방식으로 진행할 경우 공유기 내부 ip 주소를 받아오겠지만 나는 직통으로 꽂아서 별로 상관없다.

그리고 해당 IP를 post로 웹 서버에 전송한다.

그럼 서버에서는 아래처럼 처리한다.

보안을 위해 PDO를 사용하였다.

ip_table에 가장 최근 데이터를 받아오고, ip가 달라졌다면 새로운 row를 등록, ip가 같다면 update_time을 지금으로 고쳐서 데이터가 최근이라는 것을 증명해준다.

ip_table의 구조는 아래와 같다.

이렇게 처리해주고 이제는 표시해줄 파일이다

이렇게 가장 최근 데이터를 받아와서 단순히 표시를 해준다.

그러면 쨘하고 현재 ip와 몇초전에 갱신이 되었는지 알 수 있다.

서버단에서 이렇게 해주고, 맥에서 crontab에 아까 만든 C# 프로그램을 등록해준다.

매 10분마다 해당 프로그램을 실행시켜준다.

+) 맥에서 exe는 실행 못하는줄 알고 컴파일 했는데 exe가 나와서 당황했다

C#으로 만들어진 프로그램에 경우 mono라는 .net framework속 프로그램을 사용하면 잘 돌릴 수 있다!

복잡한 프로그램도 돌아갈지는 모름

집에서 돌아가는 맥미니는 어차피 전원이 꺼지지 않는 이상 계속 10분마다 cron을 실행할 것이고, ip가 바뀌어도 알아서 잘 알려줄것이다

Waterticket by
Waterticket
 관리그룹 

항상 열일하는 개발자 Waterticket입니다!

 

외주 의뢰나 취업 제안 등 문의사항은 아래 연락처로 연락바랍니다~

 

이메일 : matthew218@naver.com

사이트 : https://shop.hoto.dev/cs

블로그 : https://blog.naver.com/matthew218

댓글
    0
검색어 입력
전체검색, 사이트 전체를 검색합니다.