feat: RFC1918 (*.loc) напрямую + динамический пример IP в выводе
- ru-bypass.sh: маршруты для 10/8, 172.16/12, 192.168/16 через локальный роутер - ru-bypass.sh: UFW правила для тех же диапазонов (однократно, before.rules) - ru-bypass.sh: пример IP в конце теперь резолвится из ya.ru динамически - README.md: описание RFC1918 bypass в разделах про UFW и про шаги скрипта Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -165,19 +165,39 @@ with open('$CACHE') as f, open('/tmp/ru-routes.batch', 'w') as out:
|
||||
"
|
||||
ip -force -batch /tmp/ru-routes.batch 2>/dev/null
|
||||
|
||||
# --- Маршруты для локальных сетей (*.loc, RFC1918) ---
|
||||
|
||||
LOCAL_NETS="10.0.0.0/8 172.16.0.0/12 192.168.0.0/16"
|
||||
echo "Добавляем маршруты для локальных сетей (*.loc / RFC1918)..."
|
||||
for net in $LOCAL_NETS; do
|
||||
ip route replace "$net" via "$GATEWAY" dev "$DEV" 2>/dev/null
|
||||
done
|
||||
|
||||
# --- Правило в UFW before.rules (однократно, после создания ipset) ---
|
||||
|
||||
UFW_MARKER="match-set $SETNAME"
|
||||
if ! grep -q "$UFW_MARKER" "$UFW_BEFORE" 2>/dev/null; then
|
||||
echo "Добавляем правило в UFW before.rules..."
|
||||
sed -i "0,/^COMMIT/{s/^COMMIT/# .ru bypass (ipset $SETNAME)\n-A ufw-before-output -m set --match-set $SETNAME dst -o $DEV -j ACCEPT\nCOMMIT/}" "$UFW_BEFORE"
|
||||
echo "UFW обновлён (.ru ipset)."
|
||||
fi
|
||||
|
||||
UFW_LOCAL_MARKER="local-nets-bypass"
|
||||
if ! grep -q "$UFW_LOCAL_MARKER" "$UFW_BEFORE" 2>/dev/null; then
|
||||
echo "Добавляем правила UFW для локальных сетей..."
|
||||
sed -i "0,/^COMMIT/{s/^COMMIT/# local nets bypass ($UFW_LOCAL_MARKER)\n-A ufw-before-output -d 10.0.0.0\/8 -o $DEV -j ACCEPT\n-A ufw-before-output -d 172.16.0.0\/12 -o $DEV -j ACCEPT\n-A ufw-before-output -d 192.168.0.0\/16 -o $DEV -j ACCEPT\nCOMMIT/}" "$UFW_BEFORE"
|
||||
echo "UFW обновлён (локальные сети)."
|
||||
fi
|
||||
|
||||
if grep -qE "$UFW_MARKER|$UFW_LOCAL_MARKER" "$UFW_BEFORE" 2>/dev/null; then
|
||||
if ufw status | grep -qE "активен|active"; then
|
||||
ufw reload
|
||||
fi
|
||||
echo "UFW обновлён."
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "Готово."
|
||||
echo " ip route get 8.8.8.8 -> dev amn0 (через VPN)"
|
||||
echo " ip route get 95.173.136.1 -> dev $DEV (напрямую)"
|
||||
RU_EXAMPLE=$(dig +short ya.ru A 2>/dev/null | head -1)
|
||||
echo " ip route get 8.8.8.8 -> dev amn0 (через VPN)"
|
||||
echo " ip route get ${RU_EXAMPLE:-<ya.ru ip>} -> dev $DEV (напрямую .ru)"
|
||||
echo " ip route get 10.10.0.1 -> dev $DEV (напрямую *.loc / RFC1918)"
|
||||
|
||||
Reference in New Issue
Block a user