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
검색어 입력
전체검색, 사이트 전체를 검색합니다.