DNS 서버 라우팅 설정 추가 및 기존 DNS 서버 라우트 제거 기능 구현

This commit is contained in:
2025-06-09 01:34:25 +09:00
parent d4db302c28
commit 0a1ff6ba9e

View File

@@ -429,6 +429,20 @@ class PolicyBasedRoutingManager:
# 기존 default 라우트 제거 # 기존 default 라우트 제거
self.run_command("ip route del default", ignore_error=True) self.run_command("ip route del default", ignore_error=True)
# DNS 서버 목록 (널리 사용되는 공용 DNS)
dns_servers = [
"8.8.8.8", # Google DNS
"8.8.4.4", # Google DNS
"1.1.1.1", # Cloudflare DNS
"1.0.0.1", # Cloudflare DNS
"208.67.222.222", # OpenDNS
"208.67.220.220", # OpenDNS
]
# 기존 DNS 서버 라우트 제거
for dns in dns_servers:
self.run_command(f"ip route del {dns}", ignore_error=True)
# metric 순으로 정렬하여 default 라우트 추가 # metric 순으로 정렬하여 default 라우트 추가
sorted_nics = sorted(self.config["nics"].items(), key=lambda x: x[1]["metric"]) sorted_nics = sorted(self.config["nics"].items(), key=lambda x: x[1]["metric"])
@@ -444,6 +458,25 @@ class PolicyBasedRoutingManager:
f"Default 라우트 추가: {gateway} via {interface} (metric: {metric})" f"Default 라우트 추가: {gateway} via {interface} (metric: {metric})"
) )
# DNS 서버들을 NIC별로 분산하여 라우팅 설정
self.logger.info("DNS 서버 라우팅 설정 중...")
for i, dns in enumerate(dns_servers):
# DNS 서버를 NIC 개수만큼 순환하여 분산
nic_index = i % len(sorted_nics)
nic_name, nic_config = sorted_nics[nic_index]
interface = nic_config["interface"]
gateway = nic_config["gateway"]
metric = nic_config["metric"]
self.run_command(
f"ip route add {dns} via {gateway} dev {interface} metric {metric}"
)
self.logger.info(
f"DNS 라우트 추가: {dns} via {gateway} (interface: {interface}, metric: {metric})"
)
def check_interfaces(self): def check_interfaces(self):
"""네트워크 인터페이스 상태 확인""" """네트워크 인터페이스 상태 확인"""
self.logger.info("네트워크 인터페이스 상태 확인 중...") self.logger.info("네트워크 인터페이스 상태 확인 중...")
@@ -727,6 +760,21 @@ class StartupPolicyBasedRoutingManager:
def setup_main_routing(self, current_nics): def setup_main_routing(self, current_nics):
self.logger.info("메인 라우팅 테이블 설정 중...") self.logger.info("메인 라우팅 테이블 설정 중...")
self.run_command("ip route del default", ignore_error=True) self.run_command("ip route del default", ignore_error=True)
# DNS 서버 목록 (널리 사용되는 공용 DNS)
dns_servers = [
"8.8.8.8", # Google DNS
"8.8.4.4", # Google DNS
"1.1.1.1", # Cloudflare DNS
"1.0.0.1", # Cloudflare DNS
"208.67.222.222", # OpenDNS
"208.67.220.220", # OpenDNS
]
# 기존 DNS 서버 라우트 제거
for dns in dns_servers:
self.run_command(f"ip route del {{dns}}", ignore_error=True)
sorted_nics = sorted(current_nics.items(), key=lambda x: x[1]["metric"]) sorted_nics = sorted(current_nics.items(), key=lambda x: x[1]["metric"])
for nic_name, nic_config in sorted_nics: for nic_name, nic_config in sorted_nics:
interface = nic_config["interface"] interface = nic_config["interface"]
@@ -735,6 +783,21 @@ class StartupPolicyBasedRoutingManager:
self.run_command(f"ip route add default via {{gateway}} dev {{interface}} metric {{metric}}") self.run_command(f"ip route add default via {{gateway}} dev {{interface}} metric {{metric}}")
self.logger.info(f"Default 라우트 추가: {{gateway}} via {{interface}} (metric: {{metric}})") self.logger.info(f"Default 라우트 추가: {{gateway}} via {{interface}} (metric: {{metric}})")
# DNS 서버들을 NIC별로 분산하여 라우팅 설정
self.logger.info("DNS 서버 라우팅 설정 중...")
for i, dns in enumerate(dns_servers):
# DNS 서버를 NIC 개수만큼 순환하여 분산
nic_index = i % len(sorted_nics)
nic_name, nic_config = sorted_nics[nic_index]
interface = nic_config["interface"]
gateway = nic_config["gateway"]
metric = nic_config["metric"]
self.run_command(f"ip route add {{dns}} via {{gateway}} dev {{interface}} metric {{metric}}")
self.logger.info(f"DNS 라우트 추가: {{dns}} via {{gateway}} (interface: {{interface}}, metric: {{metric}})")
def main_startup(): def main_startup():
manager = StartupPolicyBasedRoutingManager() manager = StartupPolicyBasedRoutingManager()