### 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.