mirror of
https://github.com/jung-geun/policy-routing.git
synced 2025-12-20 02:34:39 +09:00
DNS 서버 라우팅 설정 추가 및 기존 DNS 서버 라우트 제거 기능 구현
This commit is contained in:
@@ -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"]
|
||||||
@@ -734,6 +782,21 @@ class StartupPolicyBasedRoutingManager:
|
|||||||
metric = nic_config["metric"]
|
metric = nic_config["metric"]
|
||||||
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()
|
||||||
|
|||||||
Reference in New Issue
Block a user