iOS 沙箱限制無法直接讀取 `/etc/resolv.conf` 或 `arp -a`,需用 SystemConfiguration.framework 中的 SCNetworkReachability 獲取網關。
#import <SystemConfiguration/SystemConfiguration.h>
- (NSString *)gatewayIP {
// 獲取默認路由 (0.0.0.0) 的網關
SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName(NULL, "0.0.0.0");
SCNetworkReachabilityFlags flags;
BOOL gotFlags = SCNetworkReachabilityGetFlags(reachability, &flags);
CFRelease(reachability);
if (!gotFlags) return nil;
// 解析 flags 中的 kSCNetworkReachabilityFlagsIsWWAN 等不直接給 IP
// 實際需讀取系統路由表:使用 getifaddrs + net/route.h (私有 API 風險大)
// 穩健方案:連接已知外網 IP (如 8.8.8.8),獲取本地綁定的源 IP,即為出口網關側 IP
// 但無法直接拿到路由器 LAN 口 IP (如 192.168.1.1)
return nil;
}
/var/preferences/SystemConfiguration/com.apple.wifi.plist (Key: `LastKnownGateway`)。CSDN 完整討論:iOS 獲取 WiFi 路由器地址