라즈베리파이4와 cloudflare

안녕하세요? JParker입니다.

이곳에 사용된 cloudflare.com과 연동해서 이용한 python 소스를 공개합니다.

import requests
import os
API_KEY = "Cloudflare에서 만든 api key"
EMAIL = "이메일 주소"
ZONE_ID = "DNS 존 ID"

# Cloudflare 도메인 정보 #
DOMAIN_NAME = "도메인명"
RECORD_NAME = "2차 도메인"
RECORD_ID = "도메인 ID"

def get_current_ip():
# 현재 공인 IP 주소 가져오기
response = requests.get("https://api.ipify.org?format=json")
data = response.json()
return data["ip"]

def update_cloudflare_dns(ip):
# Cloudflare DNS 레코드 업데이트
url = f"https://api.cloudflare.com/client/v4/zones/{ZONE_ID}/dns_records"
url = f"https://api.cloudflare.com/client/v4/zones/{ZONE_ID}/dns_records/{RECORD_ID}"

headers = {
   "Content-Type": "application/json",
    "X-Auth-Key": API_KEY,
    "X-Auth-Email": EMAIL
}
params = {
    "type": "A",
    "name": f"{RECORD_NAME}.{DOMAIN_NAME}",
    "content": ip 
}

response = requests.put(url, headers=headers, json=params)
data = response.json()

if data["success"]:
    print(f"DNS 레코드 업데이트 성공 - IP: {ip}")
    os.system("cp -f /root/resolv.conf /etc/resolv.conf")
else:
    print("DNS 레코드 업데이트 실패")
if name == "main":
try:
    current_ip = get_current_ip()
    print(f"현재 IP 주소: {current_ip}")
    update_cloudflare_dns(current_ip)
except Exception as e:
    print(f"오류 발생: {e}")

위와 같이 작성하셔서 ip.py 라고 만드시면 됩니다. 저의 경우 계속 dns가 바뀌게 되어 /root/resolv.conf 파일을 만들어 동작될 때마다 /etc/에 복사하도록 변경하였습니다. 여러분들도 더 멋지게 추가하면 될 거 같습니다.

이 파일을 작성한 이후에 sudo su – 하신 뒤 crontab -e 명령으로 아래와 같이 작성하시면 계속 5분 마다 동작되고 문제가 없다면 도메인이 계속 유지되는 것을 확인하실 수 있을 것입니다.

*/5 * * * * /usr/bin/python /root/ip.py 2>&1

더 궁금하신 사항이 있으시다면 댓글 부탁드릴께요~

카테고리: 라즈베리파이4 | 태그: , , , | 댓글 남기기

첫 개시 시작

이전부터 해당 도메인을 구입하였지만, 가장 비싼 서버를 사용했을 때는 2차 도메인만 유지하다가 이제 와서 급 메인 페이지를 열게 되었습니다.

root.so는 루트닷소라고 발음하시면 되구요. 주로 리눅스관련 글들을 올리게 될 것
같습니다.

현재는 리눅스 엔지니어가 아닌 시스템 엔지니어로 있기는 하지만. 리눅스는 오랫동안 해온 만큼 까먹지 않도록 하기 위함이라고 생각합니다.

물론, 향후에 이 부분은 업데이트가 되어야 겠지만 지금은 다시 시작한다는 마음으로 목표를 잡고 다시 시작 하려 합니다.

이곳은 "Rasberry pi 4 / 8G / 128G SD"로 운영되어지고 있으며, 제 개인적인 팁과 공부를 위하여 연동하였습니다. 궁금증이 있다면 이메일 (jaehun@me.com) 이나 이곳에 글을 남겨주시기 바랍니다.

감사합니다.
2023.08.02

카테고리: 공지사항 | 댓글 남기기