feat: issue #1 — DNS для *.loc через LOCAL_DNS + resolvectl
- setup.sh item 2: добавлен вопрос LOCAL_DNS (офисный DNS-сервер для *.loc) сохраняется в network_<hostname>.conf, передаётся в ru-bypass.sh через env - scripts/ru-bypass.sh: добавлена переменная LOCAL_DNS, после RFC1918 маршрутов настраивает resolvectl dns/domain ~loc на интерфейсе DEV Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -13,6 +13,7 @@
|
||||
|
||||
GATEWAY="${GATEWAY:-192.168.1.1}"
|
||||
DEV="${DEV:-wlp1s0}"
|
||||
LOCAL_DNS="${LOCAL_DNS:-}"
|
||||
SETNAME="ru-direct"
|
||||
CACHE="/var/cache/ru-delegations.txt"
|
||||
IPSET_SAVE="/etc/ipset.conf"
|
||||
@@ -173,6 +174,18 @@ for net in $LOCAL_NETS; do
|
||||
ip route replace "$net" via "$GATEWAY" dev "$DEV" 2>/dev/null
|
||||
done
|
||||
|
||||
# --- DNS для *.loc через LOCAL_DNS (если задан) ---
|
||||
|
||||
if [ -n "$LOCAL_DNS" ]; then
|
||||
if command -v resolvectl >/dev/null 2>&1; then
|
||||
resolvectl dns "$DEV" "$LOCAL_DNS" 2>/dev/null && \
|
||||
resolvectl domain "$DEV" "~loc" 2>/dev/null && \
|
||||
echo "DNS для *.loc → $LOCAL_DNS (интерфейс $DEV)"
|
||||
else
|
||||
echo "Предупреждение: resolvectl не найден, LOCAL_DNS=$LOCAL_DNS не применён"
|
||||
fi
|
||||
fi
|
||||
|
||||
# --- Правило в UFW before.rules (однократно, после создания ipset) ---
|
||||
|
||||
UFW_MARKER="match-set $SETNAME"
|
||||
|
||||
20
setup.sh
20
setup.sh
@@ -46,18 +46,21 @@ case "$choice" in
|
||||
bash scripts/ai-setup.sh
|
||||
;;
|
||||
2)
|
||||
echo -e "${GRY}Нужно указать два параметра твоей локальной сети:${CLR}"
|
||||
echo -e "${GRY} GATEWAY — IP домашнего/офисного роутера (через него пойдёт .ru трафик напрямую)${CLR}"
|
||||
echo -e "${GRY} DEV — сетевой интерфейс (wifi или провод), через который ты подключён к роутеру${CLR}"
|
||||
echo -e "${GRY}Нужно указать параметры твоей локальной сети:${CLR}"
|
||||
echo -e "${GRY} GATEWAY — IP домашнего/офисного роутера (через него пойдёт .ru трафик напрямую)${CLR}"
|
||||
echo -e "${GRY} DEV — сетевой интерфейс (wifi или провод), через который ты подключён к роутеру${CLR}"
|
||||
echo -e "${GRY} LOCAL_DNS — IP офисного DNS-сервера для разрешения *.loc доменов (необязательно)${CLR}"
|
||||
echo ""
|
||||
net_conf="$HOME/.config/ai-setup/network_$(hostname).conf"
|
||||
auto_gw=$(ip route show default 2>/dev/null | awk '/default/ {print $3; exit}')
|
||||
auto_dev=$(ip route show default 2>/dev/null | awk '/default/ {print $5; exit}')
|
||||
auto_gw="${auto_gw:-192.168.1.1}"
|
||||
auto_dev="${auto_dev:-wlp1s0}"
|
||||
saved_local_dns=""
|
||||
if [ -f "$net_conf" ]; then
|
||||
saved_gw=$(grep '^GATEWAY=' "$net_conf" | cut -d= -f2)
|
||||
saved_dev=$(grep '^DEV=' "$net_conf" | cut -d= -f2)
|
||||
saved_local_dns=$(grep '^LOCAL_DNS=' "$net_conf" | cut -d= -f2)
|
||||
auto_gw="${saved_gw:-$auto_gw}"
|
||||
auto_dev="${saved_dev:-$auto_dev}"
|
||||
echo -e "Загружены сохранённые параметры для ${BLD}$(hostname)${CLR}: GATEWAY=${BLD}${auto_gw}${CLR} DEV=${BLD}${auto_dev}${CLR}"
|
||||
@@ -66,14 +69,17 @@ case "$choice" in
|
||||
fi
|
||||
echo -e "${GRY}(просто Enter чтобы принять, или введи другое значение)${CLR}"
|
||||
echo ""
|
||||
read -rp "GATEWAY (IP роутера) [${auto_gw}]: " gw
|
||||
read -rp "DEV (интерфейс) [${auto_dev}]: " dev
|
||||
read -rp "GATEWAY (IP роутера) [${auto_gw}]: " gw
|
||||
read -rp "DEV (интерфейс) [${auto_dev}]: " dev
|
||||
read -rp "LOCAL_DNS (DNS для *.loc) [${saved_local_dns:-пусто}]: " local_dns
|
||||
gw="${gw:-$auto_gw}"
|
||||
dev="${dev:-$auto_dev}"
|
||||
[ "$local_dns" = "пусто" ] && local_dns=""
|
||||
local_dns="${local_dns:-$saved_local_dns}"
|
||||
mkdir -p "$HOME/.config/ai-setup"
|
||||
printf 'GATEWAY=%s\nDEV=%s\n' "$gw" "$dev" > "$net_conf"
|
||||
printf 'GATEWAY=%s\nDEV=%s\nLOCAL_DNS=%s\n' "$gw" "$dev" "$local_dns" > "$net_conf"
|
||||
echo ""
|
||||
sudo GATEWAY="$gw" DEV="$dev" bash scripts/ru-bypass.sh
|
||||
sudo GATEWAY="$gw" DEV="$dev" LOCAL_DNS="$local_dns" USER_HOME="$HOME" bash scripts/ru-bypass.sh
|
||||
;;
|
||||
3)
|
||||
echo -e "${YEL}Перед этим выйди из Claude Code — сессия сменит IP.${CLR}"
|
||||
|
||||
Reference in New Issue
Block a user