### OpenVPN Client Configuration Example Source: https://github.com/itdoginfo/podkop-wiki/blob/main/content/docs/tunnels/ovpn_settings/index.md A sample OpenVPN client configuration file. This file defines connection parameters, security settings, and certificates required to establish an OpenVPN tunnel. It's often provided by the VPN service provider. ```openvpn client dev tun proto udp resolv-retry infinite nobind persist-key persist-tun cipher AES-256-GCM auth SHA512 verb 3 tls-client tls-version-min 1.2 key-direction 1 remote-cert-tls server dhcp-option DNS 1.1.1.1 dhcp-option DNS 1.0.0.1 remote 51.83.138.160 36784 ... ... ... ... ``` -------------------------------- ### Install OpenVPN Packages via Terminal Source: https://github.com/itdoginfo/podkop-wiki/blob/main/content/docs/tunnels/ovpn_settings/index.md This command updates the package lists and installs the OpenVPN client and its LuCI web interface application. It's a prerequisite for setting up OpenVPN on the router. ```shell opkg update && opkg install openvpn-openssl luci-app-openvpn ``` -------------------------------- ### Start OpenVPN Service via Console Source: https://github.com/itdoginfo/podkop-wiki/blob/main/content/docs/tunnels/ovpn_settings/index.md This command starts the OpenVPN service on the OpenWrt router using the system's service management. It will load and initiate the VPN tunnel based on the configuration files present in `/etc/openvpn/`. ```shell service openvpn start ``` -------------------------------- ### Install Podkop Manually via opkg Packages (OpenWrt) Source: https://context7.com/itdoginfo/podkop-wiki/llms.txt Provides manual installation steps for Podkop and its LuCI app on OpenWrt using opkg. This involves updating package lists, downloading the `.ipk` files from GitHub releases, and installing them in the correct order. Package files are architecture-independent. ```bash # Step 1: Update package lists opkg update # Step 2: Download packages from GitHub releases # https://github.com/itdoginfo/podkop/releases # Get: podkop_*.ipk and luci-app-podkop_*.ipk # Step 3: Install packages in order opkg install podkop_*.ipk opkg install luci-app-podkop_*.ipk ``` -------------------------------- ### Configure WireGuard via LuCI (Text) Source: https://context7.com/itdoginfo/podkop-wiki/llms.txt Step-by-step guide for configuring a WireGuard VPN interface using the LuCI web interface. It covers both importing an existing configuration and manual setup, including peer details and advanced settings. ```text Navigate: Network → Interfaces → Add new interface Name: wg0 Protocol: WireGuard VPN Option 1 - Import Configuration: Click: Load Configuration Paste your WireGuard config file content Click: Import Settings Go to: Peers tab → Edit Set: Persistent Keep Alive = 25 Advanced Settings tab: Uncheck: Use custom DNS servers Option 2 - Manual Configuration: General Settings: Private Key: (from [Interface] section) IP Addresses: 10.0.0.3/32 Peers tab → Add peer → Edit: Public Key: (from [Peer] section) Preshared Key: (if present) Allowed IPs: 0.0.0.0/0 Endpoint Host: server.example.com Endpoint Port: 51820 Persistent Keep Alive: 25 Route Allowed IPs: [ ] (uncheck) Save → Save & Apply → Restart interface # Verify: RX and TX should show data transfer (e.g., RX: 92, TX: 180) ``` -------------------------------- ### Install Podkop with Automatic Script (OpenWrt) Source: https://context7.com/itdoginfo/podkop-wiki/llms.txt Automates the installation of Podkop and its LuCI app on OpenWrt 24.10. It checks for incompatible packages, installs dependencies like sing-box, and configures necessary services. Requires a minimum of 20MB free space on NAND. ```bash # Run the automated installation script sh <(wget -O - https://raw.githubusercontent.com/itdoginfo/podkop/refs/heads/main/install.sh) ``` -------------------------------- ### Check Network Interfaces for tun0 Source: https://github.com/itdoginfo/podkop-wiki/blob/main/content/docs/tunnels/ovpn_settings/index.md This command lists all network interfaces and filters the output to show details for the 'tun0' interface, which is typically created by OpenVPN. It helps verify if the VPN tunnel has been successfully established. ```shell ip a | grep tun0 ``` -------------------------------- ### Set up OpenWrt SDK Build Environment for Podkop Source: https://context7.com/itdoginfo/podkop-wiki/llms.txt This bash script guides through setting up an OpenWrt SDK build environment for package development. It involves downloading the SDK, creating package directories, symlinking the podkop repositories, updating feeds, and compiling the packages. ```bash # Download OpenWrt SDK wget https://downloads.openwrt.org/releases/24.10.2/targets/x86/64/openwrt-sdk-24.10.2-x86-64_gcc-13.3.0_musl.Linux-x86_64.tar.zst tar xf openwrt-sdk-24.10.2-x86-64_gcc-13.3.0_musl.Linux-x86_64.tar.zst mv openwrt-sdk-* SDK cd SDK # Create package directory mkdir -p package/utilities # Symlink your podkop repository ln -s ~/podkop/podkop package/utilities/podkop ln -s ~/podkop/luci-app-podkop package/luci-app-podkop # Update feeds (first time only) ./scripts/feeds update -a ./scripts/feeds install -a # Build packages make package/podkop/{clean,compile} V=s make package/luci-app-podkop/{clean,compile} V=s # Find packages in: bin/packages/x86_64/base/ ``` -------------------------------- ### Install WireGuard Packages (Bash) Source: https://context7.com/itdoginfo/podkop-wiki/llms.txt Shell commands to install the necessary packages for WireGuard on a system using opkg package manager. ```bash # Install required packages opkg update opkg install wireguard-tools luci-proto-wireguard ``` -------------------------------- ### Copy OpenVPN Configuration via SCP Source: https://github.com/itdoginfo/podkop-wiki/blob/main/content/docs/tunnels/ovpn_settings/index.md This command uses SCP (Secure Copy Protocol) to transfer the OpenVPN client configuration file from the local machine to the OpenWrt router's OpenVPN directory. The file is renamed to '.conf' for OpenVPN to recognize it. ```shell scp client.ovpn root@192.168.1.1:/etc/openvpn/client.conf ``` -------------------------------- ### Configure DNS Settings (Text) Source: https://context7.com/itdoginfo/podkop-wiki/llms.txt Explains how to configure DNS settings within Podkop, specifying DoH, DoT, and UDP protocols with example server addresses and TTL. ```text Navigate: Services → podkop → Additional Settings → DNS Settings DNS Protocol Type: DoH DNS Server: https://dns.google/dns-query Bootstrap DNS Server: 8.8.8.8 DNS Rewrite TTL: 60 (default, recommended) Alternative servers: - DoH: https://cloudflare-dns.com/dns-query - DoT: tls://1.1.1.1 - UDP: 8.8.8.8 ``` -------------------------------- ### Ping Test via tun0 Interface Source: https://github.com/itdoginfo/podkop-wiki/blob/main/content/docs/tunnels/ovpn_settings/index.md This command performs a ping test to a specified host ('itdog.info') using the 'tun0' interface. It's a fundamental way to confirm that network traffic is being routed through the established OpenVPN tunnel. ```shell ping -I tun0 itdog.info ``` -------------------------------- ### Configure Podkop Proxy Mode with VLESS/Shadowsocks URL Source: https://context7.com/itdoginfo/podkop-wiki/llms.txt Guides users to configure Podkop in 'Proxy' mode via LuCI. It shows how to input connection URLs for VLESS and Shadowsocks, including options for enabling Shadowsocks UDP over TCP. Also demonstrates an alternative JSON format for outbound configuration. ```text Navigate: Services → podkop → Basic Settings Mode: Proxy Connection URL (VLESS example): vless://uuid@server.example.com:443?encryption=none&security=tls&sni=server.example.com&type=ws&host=server.example.com&path=%2Fpath#Connection Connection URL (Shadowsocks example): ss://Y2hhY2hhMjAtaWV0Zi1wb2x5MTMwNTpwYXNzd29yZA==@server.example.com:8388#Connection Enable Shadowsocks UDP over TCP: [✓] (if needed for Outline) Alternative: Outbound Config (JSON format) { "type": "vless", "tag": "proxy-out", "server": "server.example.com", "server_port": 443, "uuid": "uuid-here", "tls": { "enabled": true, "server_name": "server.example.com" } } URLTest mode (multiple proxies with automatic selection): vless://uuid1@server1.example.com:443?...#Proxy1 vless://uuid2@server2.example.com:443?...#Proxy2 Save and Apply ``` -------------------------------- ### Remove IPv6 Configuration from OpenVPN Source: https://github.com/itdoginfo/podkop-wiki/blob/main/content/docs/tunnels/ovpn_settings/index.md This is the command to remove an IPv6 configuration line from an OpenVPN client configuration file. It's used to resolve IPv6-related errors when IPv6 is not supported or disabled on the router. ```openvpn ifconfig-ipv6 fd15:53b6:dead::2/64 fd15:53b6:dead::1 ``` -------------------------------- ### JSON Domain List Format Source: https://github.com/itdoginfo/podkop-wiki/blob/main/content/docs/base-settings/index.md A structured JSON format for defining domain lists. This example shows how to specify domain suffixes that should be matched. It's part of the configuration for remote domain lists. ```json { "version":3, "rules": [ { "domain_suffix": [ "sub.example.com", "example.com" ] } ] } ``` -------------------------------- ### Configure Podkop VPN Mode with DoH (OpenWrt) Source: https://context7.com/itdoginfo/podkop-wiki/llms.txt Details the configuration of Podkop in 'VPN' mode through LuCI. Users specify the network interface (e.g., wg0) and enable Domain Resolver using DoH, with Google's DNS server as an example. Requires a configured VPN interface. ```text Navigate: Services → podkop → Basic Settings Mode: VPN Network Interface: wg0 (or your configured interface) Domain Resolver: [✓] Enable DNS Protocol Type: DoH DNS Server: https://dns.google/dns-query Save and Apply ``` -------------------------------- ### OpenVPN IPv6 Error Log Snippet Source: https://github.com/itdoginfo/podkop-wiki/blob/main/content/docs/tunnels/ovpn_settings/index.md This log snippet indicates a common error when IPv6 is disabled on the router, preventing OpenVPN from configuring the IPv6 address on the tun0 interface. The error message 'Linux can't add IPv6 to interface tun0' is a key indicator. ```log Mon Jun 2 16:40:47 2025 daemon.notice openvpn(client)[28313]: net_addr_v6_add: fd15:53b6:dead::2/64 dev tun0 Mon Jun 2 16:40:47 2025 daemon.warn openvpn(client)[28313]: sitnl_send: rtnl: generic error (-13): Permission denied Mon Jun 2 16:40:47 2025 daemon.err openvpn(client)[28313]: Linux can't add IPv6 to interface tun0 Mon Jun 2 16:40:47 2025 daemon.notice openvpn(client)[28313]: Exiting due to fatal error ``` -------------------------------- ### Define Custom Subnet Lists Source: https://context7.com/itdoginfo/podkop-wiki/llms.txt Details the format for user-defined subnet lists, including CIDR notation and IP addresses. Supports local files and remote URLs, with an example of a JSON format for rules. ```text User Subnet List Type: Text List Format: 103.21.244.0/22 103.21.244.89 192.168.100.0/24 Local Subnet Lists: /etc/podkop/custom-subnets.txt Remote Subnet Lists: https://example.com/subnets.txt JSON format example: { "version": 3, "rules": [ { "ip_cidr": [ "10.0.0.0/24", "192.168.0.1" ] } ] } ``` -------------------------------- ### Update sing-box Dependency for Podkop Source: https://context7.com/itdoginfo/podkop-wiki/llms.txt This bash script details the process of updating the `sing-box` dependency used by podkop. It includes stopping the service, updating package lists, upgrading `sing-box`, and optionally installing a `tiny` version, followed by restarting the service. ```bash # Stop service before updating dependency service podkop stop # Update package lists opkg update # Upgrade sing-box opkg upgrade sing-box # Or if space error occurs: opkg upgrade sing-box --force-space # Alternative: Use tiny version (saves 5-10MB) opkg remove sing-box --force-depends opkg install sing-box-tiny # Restart service service podkop start ``` -------------------------------- ### JSON Subnet List Format Source: https://github.com/itdoginfo/podkop-wiki/blob/main/content/docs/base-settings/index.md A structured JSON format for defining subnet lists, using CIDR notation or individual IP addresses. This example demonstrates how to specify IP CIDRs for network filtering. ```json { "version":3, "rules": [ { "ip_cidr": [ "10.0.0.0/24", "192.168.0.1" ] } ] } ``` -------------------------------- ### Configure WireGuard via Console (Bash) Source: https://context7.com/itdoginfo/podkop-wiki/llms.txt Provides bash commands using UCI to configure a WireGuard interface and its peer settings. Includes commands for setting keys, IPs, endpoints, and restarting the network service, along with verification steps. ```bash # Using UCI commands uci set network.wg0="interface" uci set network.wg0.proto="wireguard" uci set network.wg0.private_key="your-private-key" uci set network.wg0.listen_port="51820" uci add_list network.wg0.addresses="10.0.0.3/32" uci set network.peer="wireguard_wg0" uci set network.peer.public_key="server-public-key" uci set network.peer.endpoint_host="server.example.com" uci set network.peer.endpoint_port="51820" uci set network.peer.route_allowed_ips="0" uci set network.peer.persistent_keepalive="25" uci set network.peer.allowed_ips="0.0.0.0/0" # If preshared key exists: uci set network.peer.preshared_key="preshared-key" cuci commit network service network restart # Verify connection wg show # Look for: latest handshake < 2 minutes, transfer data > 0 # Test tunnel ping -I wg0 itdog.info ``` -------------------------------- ### Configure Additional Options (Text) Source: https://context7.com/itdoginfo/podkop-wiki/llms.txt Lists various additional configuration options for Podkop, including enabling Yacd (Clash API), excluding NTP, disabling QUIC, setting list update frequency, and specifying the source network interface. ```text Enable Yacd (Clash API): [✓] Access at: http://router-ip:9090/ui Features: connection monitoring, rule inspection, manual proxy selection Exclude NTP: [✓] Prevents NTP traffic from going through tunnel Useful for: Yandex smart speakers, memory optimization QUIC Disable: [✓] Disables QUIC protocol Useful for: Android YouTube issues List Update Frequency: Daily / Weekly / Monthly Source Network Interface: br-lan (default) Change if using non-standard LAN interface ``` -------------------------------- ### Configure Podkop with UCI Commands Source: https://context7.com/itdoginfo/podkop-wiki/llms.txt This bash script demonstrates how to configure the podkop service using UCI commands. It sets up multiple sections for different routing modes (Proxy, VPN) and custom domain configurations, then commits changes and restarts the service. ```bash # Main section uci set podkop.main='main' uci set podkop.main.proxy_string='vless://uuid@europe.example.com:443?...' uci set podkop.main.community_lists_enabled='1' uci add_list podkop.main.community_lists='geoblock' # Extra section for Youtube uci set podkop.wg='extra' uci set podkop.wg.mode='vpn' uci set podkop.wg.interface='wg0' uci set podkop.wg.community_lists_enabled='1' uci add_list podkop.wg.community_lists='youtube' # Extra section for Google AI uci set podkop.us='extra' uci set podkop.us.proxy_string='ss://...' uci set podkop.us.user_domains_enabled='1' uci set podkop.us.user_domains_type='text' uci set podkop.us.user_domains_text='ai.google.com, gemini.google.com' uci commit podkop service podkop restart ``` -------------------------------- ### Configure Mixed Mode (SOCKS Proxy) (Text) Source: https://context7.com/itdoginfo/podkop-wiki/llms.txt Describes how to enable and configure the Mixed Mode (SOCKS Proxy) in Podkop. It includes navigation steps, default port, and how to configure clients to use the proxy. ```text Navigate: Services → podkop → Additional Settings Enable Mixed Mode: [✓] Port: 7890 (default) # Configure in browser or application: SOCKS5 proxy: router-ip:7890 Example: 192.168.1.1:7890 ``` -------------------------------- ### Uninstall Podkop and Restore DNS (OpenWrt) Source: https://context7.com/itdoginfo/podkop-wiki/llms.txt Removes Podkop and its LuCI app completely. Includes steps to restore default DNS settings if issues arise after uninstallation by reconfiguring dnsmasq and restarting services. ```bash # Complete removal of Podkop and its components opkg remove luci-i18n-podkop-ru luci-app-podkop podkop # If DNS issues occur after uninstallation: service podkop stop uci -q delete dhcp.@dnsmasq[0].server uci add_list dhcp.@dnsmasq[0].server="8.8.8.8" uci commit dhcp service dnsmasq restart ``` -------------------------------- ### Configure File Storage Paths (Text) Source: https://context7.com/itdoginfo/podkop-wiki/llms.txt Details the default and alternative file storage paths for Podkop configuration and cache files. It highlights the difference between flash and RAM storage and warns about NAND lifespan. ```text Config File Path: /etc/sing-box (Flash storage, default) Cache File Path: /tmp (RAM storage, default) # Alternative: External storage Cache File Path: /mnt/usb/podkop-cache # Note: Storing cache in NAND may reduce flash lifespan ``` -------------------------------- ### Configure Podkop Block Mode (OpenWrt) Source: https://context7.com/itdoginfo/podkop-wiki/llms.txt Explains how to set up Podkop in 'Block' mode using the LuCI interface. This mode routes specified domains and subnets to sing-box for blocking. Users can add custom domains or subnets in dedicated sections for blocking. ```text Navigate: Services → podkop → Basic Settings Mode: Block # Blocks specified domains and subnets by routing them to sing-box and dropping Add custom domains or subnets to block in respective sections below ``` -------------------------------- ### Compile SRS Rule Set with Sing-box Source: https://github.com/itdoginfo/podkop-wiki/blob/main/content/docs/base-settings/index.md This command compiles a JSON rule set into the binary SRS format using the sing-box tool. It's useful for creating efficient rule sets for domain or subnet filtering. The output is an SRS file, and the input is a JSON configuration file. ```shell sing-box rule-set compile [--output .srs] .json ``` -------------------------------- ### Enable Community Domain Lists in Podkop (OpenWrt) Source: https://context7.com/itdoginfo/podkop-wiki/llms.txt Describes how to enable pre-configured community domain lists within Podkop's LuCI settings for traffic routing. It highlights the 'Russia inside' list and other optional lists like Youtube, Meta, and Twitter, referencing the external repository for more details. ```text Navigate: Services → podkop → Basic Settings Community Lists: [✓] Russia inside # Comprehensive list including: # GEO Block, Block, Porn, News, Anime, # Youtube, Meta, Twitter, HDRezka, Tik-Tok Additional lists (use when Russia inside is NOT selected): [✓] Youtube [✓] Meta (includes subnets) [✓] Twitter (includes subnets) [✓] Discord (includes subnets) [✓] Telegram [✓] Cloudflare [✓] Google AI [✓] Google Play # Lists repository: https://github.com/itdoginfo/allow-domains/ ``` -------------------------------- ### Troubleshoot Podkop Service Status and Logs Source: https://context7.com/itdoginfo/podkop-wiki/llms.txt This bash script provides commands to check the operational status of the podkop service, view relevant logs, validate the configuration, test DNS resolution, and inspect network rules. ```bash # Check if Podkop is running service podkop status # View sing-box logs logread | grep sing-box # Check configuration sing-box check -c /etc/sing-box/config.json # Test DNS resolution nslookup youtube.com 127.0.0.1 # Check nftables rules ft list ruleset | grep podkop ``` -------------------------------- ### Plain Text Domain List Format Source: https://github.com/itdoginfo/podkop-wiki/blob/main/content/docs/base-settings/index.md A simple text file format for domain lists, where each domain is listed on a new line. This is a straightforward method for providing domain filtering rules. ```text example.com sub.example.com ``` -------------------------------- ### Internationalization (i18n) for Podkop LuCI App Source: https://context7.com/itdoginfo/podkop-wiki/llms.txt This bash script outlines the process for internationalizing the podkop LuCI application. It covers generating translation templates, creating/updating locale-specific PO files, editing translations, verifying the files, and committing changes. ```bash # Navigate to LuCI app directory cd luci-app-podkop # Generate translation template ./xgettext.sh # Output: po/templates/podkop.pot # Create or update translation for locale (e.g., Russian) ./msgmerge.sh ru # Output: po/ru/podkop.po # Edit the .po file to translate strings: # msgid "Settings" # msgstr "Настройки" # Verify translation file msgfmt po/ru/podkop.po -o /dev/null --check # Commit changes to repository git add po/templates/podkop.pot po/ru/podkop.po git commit -m "Update translations" ``` -------------------------------- ### Configure Device-Specific Routing (Bash) Source: https://context7.com/itdoginfo/podkop-wiki/llms.txt Provides bash commands for configuring device-specific routing in Podkop. It outlines settings for full traffic redirection via a static IP and traffic exclusion via a separate IP. ```bash # Full redirection (all traffic through tunnel) # First, assign static IP in Network → DHCP and DNS → Static Leases # Then add IP in LuCI: Services → podkop → Additional Settings IP for full redirection: 192.168.1.100 # Exclusion (bypass tunnel for specific device) IP for exclusion: 192.168.1.101 ``` -------------------------------- ### Prepare OpenWrt System Update for Podkop Source: https://context7.com/itdoginfo/podkop-wiki/llms.txt Instructions to stop Podkop before updating the OpenWrt system to prevent potential DNS issues. Provides a recovery procedure if DNS breaks after an update, involving stopping Podkop, reconfiguring dnsmasq, and restarting services. ```bash # Before updating OpenWrt, stop Podkop service podkop stop # If you forgot to stop and DNS is broken after update: service podkop stop uci -q delete dhcp.@dnsmasq[0].server uci add_list dhcp.@dnsmasq[0].server="8.8.8.8" uci commit dhcp service dnsmasq restart ntpd -q -p ptbtime1.ptb.de service podkop start ``` -------------------------------- ### Plain Text Subnet List Format Source: https://github.com/itdoginfo/podkop-wiki/blob/main/content/docs/base-settings/index.md A simple text file format for subnet lists, where each subnet (in CIDR notation) or IP address is listed on a new line. This format is easy to create and manage. ```text 103.21.244.0/22 103.21.244.89 ``` -------------------------------- ### Define Custom Domain Lists Source: https://context7.com/itdoginfo/podkop-wiki/llms.txt Specifies formats for user-defined domain lists, supporting plain text, dynamic lists, and remote URLs. Lists can be local files or fetched from remote sources in .txt, .json, or .srs formats. ```text User Domain List Type: Text List Text format (comma, space, or newline separated): example.com, sub.example.com another-domain.org // This is a comment third-domain.net Or use: Dynamic List (add one domain at a time) Local Domain Lists: /etc/podkop/custom-domains.txt Remote Domain Lists: https://raw.githubusercontent.com/user/repo/main/domains.txt https://raw.githubusercontent.com/user/repo/main/domains.json https://raw.githubusercontent.com/user/repo/main/domains.srs Supported formats: - .txt/.lst (plain text, one domain per line) - .json (sing-box rule set format) - .srs (compiled sing-box rule set) ``` -------------------------------- ### Resolve DNS Issues with Podkop Source: https://context7.com/itdoginfo/podkop-wiki/llms.txt This bash script outlines steps to resolve DNS resolution problems when using podkop. It involves stopping the service, configuring temporary DNS servers, committing changes, restarting the DNS service, and then restarting podkop. ```bash # If websites don't resolve service podkop stop # Set temporary DNS uci set dhcp.@dnsmasq[0].noresolv='1' uci -q delete dhcp.@dnsmasq[0].server uci add_list dhcp.@dnsmasq[0].server='8.8.8.8' uci commit dhcp service dnsmasq restart # Restart Podkop service podkop start ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.