안녕하세요? 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
더 궁금하신 사항이 있으시다면 댓글 부탁드릴께요~