diff --git a/Changelog.md b/Changelog.md index 6d82bf37f..6b8a3ed18 100644 --- a/Changelog.md +++ b/Changelog.md @@ -2,6 +2,8 @@ ### 🐞 修复问题 +- 修复 macOS 有线网络 DNS 劫持失败 +
✨ 新增功能 diff --git a/scripts/set_dns.sh b/scripts/set_dns.sh index 300e90855..8741eff13 100644 --- a/scripts/set_dns.sh +++ b/scripts/set_dns.sh @@ -39,9 +39,10 @@ function is_valid_ip() { # 获取网络接口和硬件端口 nic=$(route -n get default | grep "interface" | awk '{print $2}') -hardware_port=$(networksetup -listallhardwareports | awk -v dev="$nic" ' - /Hardware Port:/{port=$0; gsub("Hardware Port: ", "", port)} - /Device: /{if ($2 == dev) {print port; exit}} +# 从网络服务列表中获取硬件端口 +hardware_port=$(networksetup -listnetworkserviceorder | awk -v dev="$nic" ' + /^\([0-9]+\) /{port=$0; sub(/^\([0-9]+\) /, "", port)} + /\(Hardware Port:/{interface=$NF;sub(/\)/, "", interface); if (interface == dev) {print port; exit}} ') # 获取当前DNS设置 diff --git a/scripts/unset_dns.sh b/scripts/unset_dns.sh index 6b46b61f2..405809f80 100644 --- a/scripts/unset_dns.sh +++ b/scripts/unset_dns.sh @@ -1,16 +1,9 @@ #!/bin/bash nic=$(route -n get default | grep "interface" | awk '{print $2}') -hardware_port=$(networksetup -listallhardwareports | awk -v dev="$nic" ' - /Hardware Port:/{ - port=$0; gsub("Hardware Port: ", "", port) - } - /Device: /{ - if ($2 == dev) { - print port; - exit - } - } +hardware_port=$(networksetup -listnetworkserviceorder | awk -v dev="$nic" ' + /^\([0-9]+\) /{port=$0; sub(/^\([0-9]+\) /, "", port)} + /\(Hardware Port:/{interface=$NF;sub(/\)/, "", interface); if (interface == dev) {print port; exit}} ') if [ -f .original_dns.txt ]; then