Суть проблемы - есть полоумная косилка, которая постоянно пингует поддомены *.amazonaws.com для проверки качества сети(видно на tcpdump)
В силу заблокированности пинги не ходят либо ходят нерегулярно, косилка раз в 5 минут вслух жалуется на плохую сеть а я медленно схожу с ума)
При этом по факту связь есть, полезный траффик успешно проксируется, косилка косит. Есть ли способ силами стоковой прошивки keenetic каким-то образом либо зароутить icmp траффик либо так или иначе подделать успешный эхо-реплай от целевого хоста? entware нету(нет usb порта), средства обхода блокировок развёрнуты на сателлитном одноплатнике.
К моему глубочайшему сожалению - она их не только пингует, но и должна по идее обмениваться каким-то траффиком. Как именно - я точно не знаю, знаю только что она по идее должна работать через aws iot, но в дампе траффика вижу только обмен траффиком с api.anthbot.com и бесконечный перебор амазоновских хостов.
На любой не заблок впске поднять tls proxy и прописать ip в хостс роутера или в nextdns. У меня для tls proxy запущен sing-box, могу скинуть конф (или даже на своей впске разрешить твои домены, но без гарантий долговечности)
Так проверь вручную ходят ли пинги или нет, фейк они или реальные, до 1.2.3.4 и 1.1.1.1 например. Если есть авг сервер то почему просто не зароутить сети обычным встроенным awg в кинетике?
Потому что кинетик это поделка для домохозяек и NDM не умеет подтягивать адреса с интерфейса сама. Их нужно сообщить комнадами ndm вручную. А ipv6 не будет работать, если интерфейс не будет выбран главным в роутере и если не будет хотя бы /64 префикса на интерфейсе.
#!/bin/sh
# Modified version of
# https://github.com/xjasonlyu/tun2socks/blob/main/docker/entrypoint.sh
# Create Corefile with correct upstream DNS servers before anything else
create_corefile() {
# Use the path where wireguard expects Corefile
COREFILE_PATH="${COREFILE_PATH:-/config/coredns/Corefile}"
COREFILE_DIR=$(dirname "$COREFILE_PATH")
# Create directory if it doesn't exist
if [ ! -d "$COREFILE_DIR" ]; then
mkdir -p "$COREFILE_DIR" 2>/dev/null || true
echo "Created directory: $COREFILE_DIR"
fi
# Always overwrite Corefile to ensure correct configuration
echo "Creating Corefile at $COREFILE_PATH with upstream DNS: 8.8.8.8 1.1.1.1"
cat > "$COREFILE_PATH" << 'EOF'
. {
forward . 8.8.8.8 1.1.1.1 {
prefer_udp
}
log
errors
}
EOF
chmod 644 "$COREFILE_PATH" 2>/dev/null || true
echo "Corefile created successfully at $COREFILE_PATH"
# Also create in the shared location for backup
SHARED_PATH="/corefile/Corefile"
SHARED_DIR=$(dirname "$SHARED_PATH")
if [ ! -d "$SHARED_DIR" ]; then
mkdir -p "$SHARED_DIR" 2>/dev/null || true
fi
cp "$COREFILE_PATH" "$SHARED_PATH" 2>/dev/null || true
}
TUN="${TUN:-tun0}"
ADDR="${ADDR:-198.18.0.1/15}"
LOGLEVEL="${LOGLEVEL:-info}"
PROXY_ADDRESS=${PROXY#*//}
PROXY_IP=${PROXY_ADDRESS%:*}
PROXY_PORT=${PROXY_ADDRESS#*:}
DEFAULT_ROUTE=$(ip route | grep default | head -1)
config_proxy_route() {
# Use existing table 200
ip route add default dev $TUN table 200 2>/dev/null || true
ip rule add fwmark 200 table 200 priority 1000 2>/dev/null || true
}
# Route TCP traffic through proxy, except for DNS (port 53) and proxy IP
config_tcp_only() {
# Remove existing default route from main table if it points to TUN
ip route del default table main 2>/dev/null || true
# Add default route through eth0 to main table (for UDP, ICMP, and exceptions)
GATEWAY=$(echo "$DEFAULT_ROUTE" | awk '{print $3}')
INTERFACE=$(echo "$DEFAULT_ROUTE" | awk '{print $5}')
if [ -n "$GATEWAY" ] && [ -n "$INTERFACE" ]; then
ip route add default via $GATEWAY dev $INTERFACE table main 2>/dev/null || true
fi
# Ensure TUN interface is up and has IP
ip link set dev $TUN up 2>/dev/null || true
# Add default route via TUN for TCP traffic (will be used by fwmark rule)
ip route add default dev $TUN table 200 2>/dev/null || true
# Flush all existing iptables rules
iptables -t mangle -F 2>/dev/null || true
iptables -t nat -F 2>/dev/null || true
iptables -F 2>/dev/null || true
# ----- Rules for LOCAL traffic (from container itself) -----
# Mark ONLY TCP packets from container (except port 53)
iptables -t mangle -A OUTPUT -p tcp -j MARK --set-mark 200
# Unmark DNS traffic (TCP and UDP port 53) - Critical for CoreDNS
iptables -t mangle -A OUTPUT -p tcp --dport 53 -j MARK --set-mark 0
iptables -t mangle -A OUTPUT -p udp --dport 53 -j MARK --set-mark 0
# Unmark TCP packets going to proxy IP (avoid loop)
if [ -n "$PROXY_IP" ]; then
iptables -t mangle -A OUTPUT -p tcp -d $PROXY_IP -j MARK --set-mark 0
fi
# Unmark localhost traffic for safety
iptables -t mangle -A OUTPUT -p tcp -d 127.0.0.0/8 -j MARK --set-mark 0
iptables -t mangle -A OUTPUT -p udp -d 127.0.0.0/8 -j MARK --set-mark 0
# ----- Rules for FORWARDED traffic (from WireGuard clients) -----
# Mark ONLY TCP forwarded packets (except port 53)
iptables -t mangle -A FORWARD -p tcp -j MARK --set-mark 200
# Unmark DNS traffic (TCP and UDP port 53)
iptables -t mangle -A FORWARD -p tcp --dport 53 -j MARK --set-mark 0
iptables -t mangle -A FORWARD -p udp --dport 53 -j MARK --set-mark 0
# Unmark TCP packets going to proxy IP
if [ -n "$PROXY_IP" ]; then
iptables -t mangle -A FORWARD -p tcp -d $PROXY_IP -j MARK --set-mark 0
fi
# Unmark localhost traffic for forwarded packets
iptables -t mangle -A FORWARD -p tcp -d 127.0.0.0/8 -j MARK --set-mark 0
iptables -t mangle -A FORWARD -p udp -d 127.0.0.0/8 -j MARK --set-mark 0
# Allow forwarding
iptables -A FORWARD -i $TUN -j ACCEPT
iptables -A FORWARD -o $TUN -j ACCEPT
iptables -A FORWARD -i wg0 -j ACCEPT 2>/dev/null || true
iptables -A FORWARD -o wg0 -j ACCEPT 2>/dev/null || true
# ----- NAT for traffic going through TUN -----
iptables -t nat -A POSTROUTING -o $TUN -j MASQUERADE
# ----- Routing rules -----
# Everything except TCP uses main table (eth0) by default
# TCP marked traffic uses table 200
ip rule del from all fwmark 200 lookup 200 priority 1000 2>/dev/null || true
ip rule add from all fwmark 200 lookup 200 priority 1000
# Policy routing for forwarded traffic from wg0
ip rule del iif wg0 lookup 200 priority 500 2>/dev/null || true
ip rule add iif wg0 lookup 200 priority 500
# Flush route cache to apply changes
ip route flush cache 2>/dev/null || true
}
create_tun() {
# Check if TUN device already exists
if ! ip link show $TUN > /dev/null 2>&1; then
ip tuntap add mode tun dev "$TUN" 2>/dev/null || true
fi
ip addr add "$ADDR" dev "$TUN" 2>/dev/null || true
ip link set dev "$TUN" up 2>/dev/null || true
}
config_route() {
# This function is now handled by config_tcp_only
return 0
}
run() {
# Create Corefile first, before any network configuration
create_corefile
config_proxy_route
create_tun
config_tcp_only
# execute extra commands
if [ -n "$EXTRA_COMMANDS" ]; then
sh -c "$EXTRA_COMMANDS"
fi
if [ -n "$MTU" ]; then
ARGS="--mtu $MTU"
fi
if [ -n "$RESTAPI" ]; then
ARGS="$ARGS --restapi $RESTAPI"
fi
if [ -n "$UDP_TIMEOUT" ]; then
ARGS="$ARGS --udp-timeout $UDP_TIMEOUT"
fi
if [ -n "$TCP_SNDBUF" ]; then
ARGS="$ARGS --tcp-sndbuf $TCP_SNDBUF"
fi
if [ -n "$TCP_RCVBUF" ]; then
ARGS="$ARGS --tcp-rcvbuf $TCP_RCVBUF"
fi
if [ "$TCP_AUTO_TUNING" = 1 ]; then
ARGS="$ARGS --tcp-auto-tuning"
fi
exec tun2socks \
--loglevel "$LOGLEVEL" \
--device "$TUN" \
--proxy "$PROXY" \
$ARGS
}
run || exit 1
соотв. docker build --rm -t wiresocks_mod .
Правим .env и всё должно поехать