eikarna commited on
Commit
ba2b0bb
·
0 Parent(s):

rebase commit

Browse files
.gitattributes ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ udpgw/badvpn-udpgw filter=lfs diff=lfs merge=lfs -text
2
+ udp_custom/udp-custom filter=lfs diff=lfs merge=lfs -text
.github/workflows/sync-hf.yml ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ name: Sync to Hugging Face space
2
+ on:
3
+ push:
4
+ # to run this workflow manually from the Actions tab
5
+ workflow_dispatch:
6
+
7
+ jobs:
8
+ sync-to-space:
9
+ runs-on: ubuntu-latest
10
+ steps:
11
+ - uses: actions/checkout@v4
12
+ with:
13
+ fetch-depth: 0
14
+ - name: Push to Hugging Face Hub
15
+ env:
16
+ HF_TOKEN: ${{ secrets.HF_TOKEN }}
17
+ run: |
18
+ git push --force https://eikarna:[email protected]/spaces/eikarna/myvpnserver main:main
Dockerfile ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # ==================================================================================================
2
+ # Dockerfile untuk VPN Server (UDP Custom, ZIVPN, BadVPN)
3
+ # Target: Hugging Face Spaces
4
+ # ==================================================================================================
5
+
6
+ # Gunakan base image Ubuntu 22.04 dengan build tools, mirip dengan contoh
7
+ FROM buildpack-deps:22.04-curl
8
+
9
+ # Set variabel lingkungan
10
+ ENV DEBIAN_FRONTEND=noninteractive \
11
+ TZ=Asia/Jakarta \
12
+ # Tentukan direktori kerja aplikasi
13
+ APP_HOME=/app
14
+
15
+ # Buat direktori aplikasi
16
+ WORKDIR ${APP_HOME}
17
+
18
+ # Instal dependensi yang diperlukan untuk skrip jaringan dan server
19
+ # - iptables: Untuk firewall dan NAT
20
+ # - iproute2: Menyediakan command 'ip' untuk routing
21
+ # - ethtool: Untuk optimasi network interface card (NIC)
22
+ # - procps: Menyediakan 'pgrep', 'pkill' (berguna untuk debugging)
23
+ # - taskset: Untuk mengikat proses ke core CPU (opsional, tapi ada di service asli)
24
+ RUN apt-get update && apt-get install -y --no-install-recommends \
25
+ iptables \
26
+ iproute2 \
27
+ ethtool \
28
+ procps \
29
+ util-linux \
30
+ && rm -rf /var/lib/apt/lists/*
31
+
32
+ # Salin semua file dari proyek ke dalam direktori kerja di container
33
+ COPY . .
34
+
35
+ # Berikan izin eksekusi ke semua biner dan skrip yang relevan
36
+ RUN chmod +x \
37
+ ${APP_HOME}/scripts/*.sh \
38
+ ${APP_HOME}/udpgw/badvpn-udpgw \
39
+ ${APP_HOME}/udp_custom/udp-custom \
40
+ ${APP_HOME}/zivpn/udp-zivpn-linux-amd64 \
41
+ ${APP_HOME}/start.sh
42
+
43
+ # ==================================================================================================
44
+ # Port Exposure
45
+ # --------------------------------------------------------------------------------------------------
46
+ # Port-port berikut diekspos berdasarkan aturan iptables di 'port-forward.sh'.
47
+ # Karena Hugging Face Spaces mungkin memiliki batasan jumlah port,
48
+ # Anda mungkin perlu menyesuaikan ini. Namun, untuk fungsionalitas penuh,
49
+
50
+ # Port untuk UDP-Custom
51
+ EXPOSE 3671/udp
52
+ # Port untuk ZIVPN
53
+ EXPOSE 5667/udp
54
+ # Port untuk ZIVPN Legacy
55
+ EXPOSE 5666/udp
56
+ # Port untuk Prometheus Metrics dari ZIVPN
57
+ EXPOSE 8080/tcp
58
+
59
+ # Port Ranges (jika platform mendukung atau untuk penggunaan di luar HF Spaces)
60
+ # Sebaiknya definisikan port utama di atas, dan jika memungkinkan, gunakan range.
61
+ # Docker tidak secara teknis "mengekspos" range dengan cara ini, ini lebih untuk dokumentasi.
62
+ # Aturan iptables di dalam kontainer yang akan menangani traffic ini.
63
+ EXPOSE 1-5999/udp
64
+ EXPOSE 6000-19999/udp
65
+ EXPOSE 20000-65535/udp
66
+ # ==================================================================================================
67
+
68
+
69
+ # Tentukan entrypoint yang akan menjalankan skrip startup
70
+ ENTRYPOINT ["/app/start.sh"]
71
+
72
+ # ==================================================================================================
73
+ # CATATAN PENTING UNTUK DEPLOYMENT (Hugging Face Spaces & Docker)
74
+ # --------------------------------------------------------------------------------------------------
75
+ # Untuk menjalankan kontainer ini dengan benar, Anda HARUS memberikan kapabilitas kernel
76
+ # dan mengatur parameter sysctl.
77
+ #
78
+ # Contoh Perintah 'docker run':
79
+ # docker run -d --name my-vpn-server \
80
+ # --cap-add=NET_ADMIN \
81
+ # --cap-add=SYS_NICE \
82
+ # --sysctl net.ipv4.ip_forward=1 \
83
+ # --sysctl net.core.rmem_max=16777216 \
84
+ # --sysctl net.core.wmem_max=16777216 \
85
+ # -p 8080:8080/tcp \
86
+ # -p 1000-5000:1000-5000/udp \
87
+ # <nama-image-anda>
88
+ #
89
+ # Di Hugging Face Spaces, Anda perlu mengkonfigurasi ini di `README.md` (metadata).
90
+ # Contoh metadata di README.md:
91
+ # ---
92
+ # title: My VPN Server
93
+ # emoji: 🚀
94
+ # colorFrom: blue
95
+ # colorTo: green
96
+ # sdk: docker
97
+ # app_port: 8080
98
+ # docker_args: "--cap-add=NET_ADMIN --cap-add=SYS_NICE"
99
+ # ---
100
+ #
101
+ # Catatan: Hugging Face Spaces mungkin tidak mendukung semua flag --sysctl.
102
+ # Skrip start.sh mencoba mengaturnya, tetapi --cap-add=NET_ADMIN adalah yang paling krusial.
103
+ # ==================================================================================================
Dockerfile-example ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM buildpack-deps:22.04-curl
2
+
3
+ # Set arguments that will be populated by Hugging Face secrets
4
+ ARG DB_TYPE
5
+ ARG DB_POSTGRESDB_DATABASE
6
+ ARG DB_POSTGRESDB_HOST
7
+ ARG DB_POSTGRESDB_PORT
8
+ ARG DB_POSTGRESDB_USER
9
+ ARG DB_POSTGRESDB_PASSWORD
10
+
11
+
12
+ # DB_TYPE Available option:
13
+ # 'sqlite' | 'mariadb' | 'mysqldb' | 'postgresdb'
14
+
15
+ # Set static and dynamic environment variables
16
+ ENV DEBIAN_FRONTEND=noninteractive \
17
+ TZ=Asia/Jakarta \
18
+ N8N_PORT=7860 \
19
+ N8N_HOST=eikarna-n8n.hf.space \
20
+ WEBHOOK_URL=https://eikarna-n8n.hf.space \
21
+ USER=eikarna \
22
+ HOME=/home/eikarna \
23
+ # Set runtime environment variables from the build arguments
24
+ DB_TYPE=${DB_TYPE} \
25
+ DB_POSTGRESDB_DATABASE=${DB_POSTGRESDB_DATABASE} \
26
+ DB_POSTGRESDB_HOST=${DB_POSTGRESDB_HOST} \
27
+ DB_POSTGRESDB_PORT=${DB_POSTGRESDB_PORT} \
28
+ DB_POSTGRESDB_USER=${DB_POSTGRESDB_USER} \
29
+ DB_POSTGRESDB_PASSWORD=${DB_POSTGRESDB_PASSWORD} \
30
+ DB_POSTGRESDB_SSL_REJECT_UNAUTHORIZED=false \
31
+ N8N_ENCRYPTION_KEY=7124bcedb3c8d535c3dc99036a1a49c7bc3e33fb372e90c8e8a8c8311804bf0f \
32
+ # Recommended setting to avoid permission warnings
33
+ N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
34
+
35
+ USER root
36
+
37
+ RUN useradd -m -u 1000 ${USER}
38
+
39
+ # Install dependencies with quiet flags to reduce build logs
40
+ RUN apt-get -qq update && apt-get -qq install -y --no-install-recommends \
41
+ bash \
42
+ unzip \
43
+ git \
44
+ git-lfs \
45
+ curl \
46
+ sudo \
47
+ wget \
48
+ ffmpeg \
49
+ psmisc \
50
+ aria2 \
51
+ build-essential \
52
+ libnss3-dev \
53
+ libgdk-pixbuf2.0-dev \
54
+ libgtk-3-dev \
55
+ libxss-dev \
56
+ zlib1g-dev \
57
+ libncurses5-dev \
58
+ libssl-dev \
59
+ libreadline-dev \
60
+ libffi-dev \
61
+ libasound2 \
62
+ make \
63
+ libnss3 \
64
+ software-properties-common > /dev/null 2>&1 && \
65
+ rm -rf /var/lib/apt/lists/*
66
+
67
+ # Install Node.js and proxy with quiet flags
68
+ RUN curl -sL https://deb.nodesource.com/setup_22.x | sudo -E bash - > /dev/null 2>&1 && \
69
+ apt-get -qq install -y nodejs > /dev/null 2>&1 && \
70
+ npm install -g configurable-http-proxy --silent
71
+
72
+ # Install Python from source with output redirected to /dev/null to silence it
73
+ RUN cd /tmp && \
74
+ wget -q https://www.python.org/ftp/python/3.10.12/Python-3.10.12.tgz && \
75
+ tar -xf Python-3.10.12.tgz && \
76
+ cd Python-3.10.12 && \
77
+ ./configure --enable-optimizations > /dev/null 2>&1 && \
78
+ make -j8 install > /dev/null 2>&1 && \
79
+ cd / && \
80
+ rm -rf /tmp/Python-3.10.12 /tmp/Python-3.10.12.tgz
81
+
82
+ WORKDIR ${HOME}
83
+
84
+ # Install n8n with silent flag
85
+ RUN npm install n8n -g --silent
86
+ # Create the .n8n directory and set permissions so n8n doesn't have to do it at runtime
87
+ RUN mkdir -p ${HOME}/.n8n && chown -R ${USER}:${USER} ${HOME}
88
+
89
+ USER ${USER}
90
+
91
+ EXPOSE ${N8N_PORT}
92
+
93
+ CMD ["n8n", "start"]
README.md ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: My VPN Server
3
+ emoji: 🚀
4
+ colorFrom: blue
5
+ colorTo: green
6
+ sdk: docker
7
+ app_port: 7860
8
+ docker_args: "--cap-add=NET_ADMIN --cap-add=SYS_NICE"
9
+ ---
10
+ Mereka memanggil ku seorang pahlawan, karena aku menyelamatkan
11
+ mereka dari kehancuran.
12
+
13
+ Saturday, 12 July 2025
other/udp-tunnel.service ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [Unit]
2
+ Description=Tunnel server auto-setup script service
3
+ Wants=network-online.target
4
+ After=network-online.target
5
+
6
+ [Service]
7
+ LimitAS=infinity
8
+ LimitRSS=infinity
9
+ Type=simple
10
+ User=root
11
+ WorkingDirectory=/root/udp-custom/scripts
12
+ # Tunda 5 detik setelah network-online.target terpenuhi
13
+ ExecStartPre=/bin/sleep 5
14
+ ExecStart=/bin/bash port-forward.sh
15
+
16
+ [Install]
17
+ WantedBy=default.target
scripts/generate-port.sh ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+
3
+ # Menghasilkan nomor port dari 6000 hingga 19999, dipisahkan dengan koma
4
+ ports=$(seq -s, 6000 19999)
5
+
6
+ # Menampilkan hasil
7
+ echo $ports | termux-clipboard-set
scripts/manager.sh ADDED
@@ -0,0 +1,309 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+ # firewall_manager.sh - Manajemen firewall rules terpadu dengan iptables, ufw, dan firewalld
3
+ #
4
+ # Fitur:
5
+ # - Validasi input yang lebih kompleks untuk aturan
6
+ # - Logging setiap aksi ke /var/log/firewall_manager.log
7
+ # - Integrasi dengan firewalld (jika aktif) secara langsung
8
+ #
9
+ # Usage:
10
+ # sudo ./firewall_manager.sh {start|stop|status|list|add-rule|del-rule|backup|restore}
11
+ #
12
+ # Contoh:
13
+ # sudo ./firewall_manager.sh start
14
+ # sudo ./firewall_manager.sh add-rule udp 1000:2000 9999
15
+
16
+ set -euo pipefail
17
+ LOG_FILE="/var/log/firewall_manager.log"
18
+
19
+ # === Fungsi Logging ===
20
+ log_msg() {
21
+ local level="$1"
22
+ shift
23
+ local message="$*"
24
+ local timestamp
25
+ timestamp=$(date +'%Y-%m-%d %H:%M:%S')
26
+ echo "${timestamp} [${level}] ${message}" | tee -a "${LOG_FILE}"
27
+ }
28
+
29
+ # === Fungsi Validasi ===
30
+ validate_protocol() {
31
+ local protocol="$1"
32
+ if [[ "$protocol" != "udp" && "$protocol" != "tcp" ]]; then
33
+ log_msg "ERROR" "Protocol harus 'udp' atau 'tcp'. Diberikan: ${protocol}"
34
+ exit 1
35
+ fi
36
+ }
37
+
38
+ validate_port_range() {
39
+ local port_range="$1"
40
+ if ! [[ "$port_range" =~ ^[0-9]{1,5}(:[0-9]{1,5})?$ ]]; then
41
+ log_msg "ERROR" "Format port range tidak valid: ${port_range}"
42
+ exit 1
43
+ fi
44
+ }
45
+
46
+ validate_port() {
47
+ local port="$1"
48
+ if ! [[ "$port" =~ ^[0-9]{1,5}$ ]]; then
49
+ log_msg "ERROR" "Format port tidak valid: ${port}"
50
+ exit 1
51
+ fi
52
+ if (( port < 1 || port > 65535 )); then
53
+ log_msg "ERROR" "Port harus berada di antara 1 dan 65535: ${port}"
54
+ exit 1
55
+ fi
56
+ }
57
+
58
+ # === Fungsi Helper ===
59
+ usage() {
60
+ cat << EOF
61
+ Usage: $0 {start|stop|status|list|add-rule|del-rule|backup|restore}
62
+
63
+ Commands:
64
+ start : Enable IP forwarding dan pasang aturan default.
65
+ (Default: UDP CUSTOM (1:5999->3671) dan ZIVPN (6000:19999->5667) + aturan ufw dan firewalld jika aktif)
66
+ stop : Flush aturan NAT dan disable IP forwarding.
67
+ status : Tampilkan status IP forwarding dan aturan firewall saat ini.
68
+ list : List aturan iptables (tabel NAT) dan status ufw.
69
+ add-rule : Tambah aturan kustom.
70
+ Sintaks: $0 add-rule <protocol> <port_range> <destination_port>
71
+ Contoh: $0 add-rule udp 1000:2000 9999
72
+ del-rule : Hapus aturan kustom.
73
+ Sintaks: $0 del-rule <chain> <protocol> <port_range> <destination_port>
74
+ Contoh: $0 del-rule PREROUTING udp 1000:2000 9999
75
+ backup : Backup aturan iptables NAT ke file backup.
76
+ restore : Restore aturan iptables NAT dari file backup.
77
+
78
+ EOF
79
+ exit 1
80
+ }
81
+
82
+ check_root() {
83
+ if [ "$EUID" -ne 0 ]; then
84
+ echo "Jalankan script ini sebagai root." >&2
85
+ exit 1
86
+ fi
87
+ }
88
+
89
+ enable_ip_forwarding() {
90
+ log_msg "INFO" "Mengaktifkan IP forwarding"
91
+ sysctl -w net.ipv4.ip_forward=1 >/dev/null
92
+ }
93
+
94
+ disable_ip_forwarding() {
95
+ log_msg "INFO" "Menonaktifkan IP forwarding"
96
+ sysctl -w net.ipv4.ip_forward=0 >/dev/null
97
+ }
98
+
99
+ get_default_interface() {
100
+ local iface
101
+ iface=$(ip route | awk '/default/ {print $5; exit}')
102
+ echo "$iface"
103
+ }
104
+
105
+ is_firewalld_active() {
106
+ if systemctl is-active --quiet firewalld; then
107
+ return 0
108
+ else
109
+ return 1
110
+ fi
111
+ }
112
+
113
+ # === Integrasi Firewalld ===
114
+ apply_firewalld_rule() {
115
+ local action="$1" # add or remove
116
+ local rule="$2"
117
+ # Contoh penggunaan:
118
+ # firewall-cmd --permanent --direct --add-rule ipv4 nat PREROUTING 0 -i ${interface} -p udp --dport 1:7299 -j DNAT --to-destination :3671
119
+ firewall-cmd --permanent --direct --"${action}"-rule ipv4 nat PREROUTING 0 ${rule}
120
+ }
121
+
122
+ reload_firewalld() {
123
+ firewall-cmd --reload
124
+ }
125
+
126
+ # === Fungsi Aturan Default ===
127
+ apply_default_rules() {
128
+ local interface
129
+ interface=$(get_default_interface)
130
+ if [[ -z "$interface" ]]; then
131
+ log_msg "ERROR" "Interface default tidak ditemukan."
132
+ exit 1
133
+ fi
134
+ log_msg "INFO" "Menggunakan interface: ${interface}"
135
+
136
+ ./port-forward.sh
137
+
138
+ # Udp Custom: izinkan port untuk Udp Custom
139
+ ufw allow 1:5999/udp && ufw allow 3671/udp
140
+ log_msg "INFO" "Aturan UFW diterapkan untuk port 1:5999/udp dan 3671/udp"
141
+
142
+ # UFW: izinkan port untuk ZIVPN
143
+ ufw allow 6000:19999/udp && ufw allow 5667/udp
144
+ log_msg "INFO" "Aturan UFW diterapkan untuk port 6000:19999/udp dan 5667/udp"
145
+
146
+ # Integrasi firewalld jika aktif
147
+ if is_firewalld_active; then
148
+ log_msg "INFO" "firewalld terdeteksi. Menerapkan aturan ke firewalld..."
149
+ # Aturan untuk UDP CUSTOM
150
+ apply_firewalld_rule "add" "-i ${interface} -p udp --dport 1:7299 -j DNAT --to-destination :3671"
151
+ # Aturan untuk ZIVPN
152
+ apply_firewalld_rule "add" "-i ${interface} -p udp --dport 6000:19999 -j DNAT --to-destination :5667"
153
+ reload_firewalld
154
+ log_msg "INFO" "Aturan firewalld diterapkan dan reload"
155
+ fi
156
+
157
+ log_msg "INFO" "Aturan default berhasil diterapkan."
158
+ }
159
+
160
+ flush_firewall_rules() {
161
+ log_msg "INFO" "Menghapus semua aturan di NAT table iptables..."
162
+ iptables -t nat -F
163
+ log_msg "INFO" "Aturan NAT table iptables telah dihapus."
164
+
165
+ # Integrasi firewalld: Hapus aturan default jika firewalld aktif
166
+ if is_firewalld_active; then
167
+ local interface
168
+ interface=$(get_default_interface)
169
+ log_msg "INFO" "Menghapus aturan firewalld..."
170
+ apply_firewalld_rule "remove" "-i ${interface} -p udp --dport 1:7299 -j DNAT --to-destination :3671"
171
+ apply_firewalld_rule "remove" "-i ${interface} -p udp --dport 6000:19999 -j DNAT --to-destination :5667"
172
+ reload_firewalld
173
+ log_msg "INFO" "Aturan firewalld default dihapus."
174
+ fi
175
+ }
176
+
177
+ list_firewall_rules() {
178
+ echo "Aturan iptables (NAT table):"
179
+ iptables -t nat -L -n -v
180
+ echo
181
+ echo "Status UFW:"
182
+ ufw status verbose
183
+ }
184
+
185
+ backup_firewall_rules() {
186
+ local backup_file="/root/iptables_nat_backup_$(date +%F).txt"
187
+ iptables-save -t nat > "${backup_file}"
188
+ log_msg "INFO" "Backup aturan NAT table iptables telah disimpan ke ${backup_file}"
189
+ }
190
+
191
+ restore_firewall_rules() {
192
+ local backup_file="/root/iptables_nat_backup_$(date +%F).txt"
193
+ if [ ! -f "${backup_file}" ]; then
194
+ log_msg "ERROR" "File backup ${backup_file} tidak ditemukan."
195
+ exit 1
196
+ fi
197
+ iptables-restore < "${backup_file}"
198
+ log_msg "INFO" "Aturan NAT table iptables direstore dari ${backup_file}"
199
+ }
200
+
201
+ add_custom_rule() {
202
+ # Ekspektasi: protocol, port_range, destination_port
203
+ if [ $# -ne 3 ]; then
204
+ echo "Usage: $0 add-rule <protocol> <port_range> <destination_port>"
205
+ exit 1
206
+ fi
207
+ local protocol="$1"
208
+ local port_range="$2"
209
+ local dest_port="$3"
210
+
211
+ validate_protocol "${protocol}"
212
+ validate_port_range "${port_range}"
213
+ validate_port "${dest_port}"
214
+
215
+ local interface
216
+ interface=$(get_default_interface)
217
+ if [[ -z "$interface" ]]; then
218
+ log_msg "ERROR" "Interface default tidak ditemukan."
219
+ exit 1
220
+ fi
221
+
222
+ iptables -t nat -A PREROUTING -i "${interface}" -p "${protocol}" --dport "${port_range}" -j DNAT --to-destination :${dest_port}
223
+ log_msg "INFO" "Aturan kustom iptables ditambahkan: ${protocol} ${port_range} -> ${dest_port} pada interface ${interface}"
224
+
225
+ # Integrasi firewalld jika aktif
226
+ if is_firewalld_active; then
227
+ apply_firewalld_rule "add" "-i ${interface} -p ${protocol} --dport ${port_range} -j DNAT --to-destination :${dest_port}"
228
+ reload_firewalld
229
+ log_msg "INFO" "Aturan kustom firewalld ditambahkan: ${protocol} ${port_range} -> ${dest_port}"
230
+ fi
231
+ }
232
+
233
+ delete_custom_rule() {
234
+ # Ekspektasi: chain, protocol, port_range, destination_port
235
+ if [ $# -ne 4 ]; then
236
+ echo "Usage: $0 del-rule <chain> <protocol> <port_range> <destination_port>"
237
+ exit 1
238
+ fi
239
+ local chain="$1"
240
+ local protocol="$2"
241
+ local port_range="$3"
242
+ local dest_port="$4"
243
+
244
+ validate_protocol "${protocol}"
245
+ validate_port_range "${port_range}"
246
+ validate_port "${dest_port}"
247
+
248
+ local interface
249
+ interface=$(get_default_interface)
250
+ if [[ -z "$interface" ]]; then
251
+ log_msg "ERROR" "Interface default tidak ditemukan."
252
+ exit 1
253
+ fi
254
+
255
+ iptables -t nat -D "${chain}" -i "${interface}" -p "${protocol}" --dport "${port_range}" -j DNAT --to-destination :${dest_port}
256
+ log_msg "INFO" "Aturan kustom iptables dihapus: ${chain} ${protocol} ${port_range} -> ${dest_port}"
257
+
258
+ # Integrasi firewalld jika aktif
259
+ if is_firewalld_active; then
260
+ apply_firewalld_rule "remove" "-i ${interface} -p ${protocol} --dport ${port_range} -j DNAT --to-destination :${dest_port}"
261
+ reload_firewalld
262
+ log_msg "INFO" "Aturan kustom firewalld dihapus: ${chain} ${protocol} ${port_range} -> ${dest_port}"
263
+ fi
264
+ }
265
+
266
+ # === Main Program ===
267
+ check_root
268
+
269
+ if [ $# -eq 0 ]; then
270
+ usage
271
+ fi
272
+
273
+ COMMAND=$1
274
+ shift
275
+
276
+ case "${COMMAND}" in
277
+ start)
278
+ enable_ip_forwarding
279
+ apply_default_rules
280
+ ;;
281
+ stop)
282
+ flush_firewall_rules
283
+ disable_ip_forwarding
284
+ ;;
285
+ status)
286
+ echo "Status IP forwarding:"
287
+ sysctl net.ipv4.ip_forward
288
+ echo
289
+ list_firewall_rules
290
+ ;;
291
+ list)
292
+ list_firewall_rules
293
+ ;;
294
+ add-rule)
295
+ add_custom_rule "$@"
296
+ ;;
297
+ del-rule)
298
+ delete_custom_rule "$@"
299
+ ;;
300
+ backup)
301
+ backup_firewall_rules
302
+ ;;
303
+ restore)
304
+ restore_firewall_rules
305
+ ;;
306
+ *)
307
+ usage
308
+ ;;
309
+ esac
scripts/optimize.sh ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+
3
+ # Optimasi buffer jaringan
4
+ echo "Mengatur buffer jaringan..."
5
+ sysctl -w net.core.rmem_max=16777216 # Maximum receive buffer
6
+ sysctl -w net.core.wmem_max=16777216 # Maximum send buffer
7
+ sysctl -w net.ipv4.udp_rmem_min=8192 # Minimum UDP receive buffer
8
+ sysctl -w net.ipv4.udp_wmem_min=8192 # Minimum UDP send buffer
9
+
10
+ # Mengatur backlog queue untuk UDP
11
+ echo "Mengatur backlog queue..."
12
+ sysctl -w net.core.netdev_max_backlog=5000 # Buffering pada NIC
13
+
14
+ # Mengatur MTU (Maximum Transmission Unit)
15
+ echo "Mengatur MTU untuk menghindari fragmentasi..."
16
+ ip link set dev eth0 mtu 9000 # Sesuaikan dengan interface yang digunakan
17
+
18
+ # Mengoptimalkan penggunaan TCP dan UDP buffers
19
+ sysctl -w net.ipv4.tcp_rmem="4096 87380 16777216" # Buffer TCP untuk receive
20
+ sysctl -w net.ipv4.tcp_wmem="4096 65536 16777216" # Buffer TCP untuk send
21
+
22
+ # Meningkatkan performa interrupt handling
23
+ echo "Meningkatkan performa interrupt handling..."
24
+ sysctl -w net.core.somaxconn=65535 # Meningkatkan kapasitas koneksi maksimal
25
+
26
+ # Mengaktifkan TCP offloading jika mendukung hardware
27
+ ethtool -K eth0 tso on # Ganti eth0 dengan interface yang sesuai
28
+ ethtool -K eth0 gro on # Ganti eth0 dengan interface yang sesuai
29
+
30
+ # Mengoptimalkan parameter system lainnya untuk latensi rendah
31
+ sysctl -w vm.swappiness=1 # Kurangi swap dan prioritaskan RAM
32
+ sysctl -w net.ipv4.tcp_fin_timeout=10 # Mempercepat penutupan koneksi TCP yang lama
33
+ sysctl -w net.ipv4.tcp_keepalive_time=60 # Percepat waktu keepalive
34
+
35
+ # Menerapkan konfigurasi
36
+ sysctl -p
37
+
38
+ # Mengatur prioritas untuk proses tunneling
39
+ # Atur agar aplikasi server tunneling berjalan dengan prioritas tinggi
40
+ renice -n -10 -p $(pgrep udp-custom) # Ganti dengan PID server UDP
41
+ renice -n -10 -p $(pgrep badvpn-udpgw) # Ganti dengan PID Server BadVPN
42
+ renice -n -10 -p $(pgrep zivpn) # Ganti dengan PID Server ZIVPN
scripts/port-forward-universal.sh ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+
3
+ # Pastikan dijalankan sebagai root
4
+ if [ "$(id -u)" -ne 0 ]; then
5
+ echo "Skrip ini harus dijalankan sebagai root. Coba 'su -c \"$0\"'."
6
+ exit 1
7
+ fi
8
+
9
+ # Flush aturan lama untuk memulai dari awal
10
+ iptables -F
11
+ iptables -t nat -F
12
+
13
+ # Set policy default
14
+ iptables -P INPUT ACCEPT
15
+ iptables -P FORWARD ACCEPT
16
+ iptables -P OUTPUT ACCEPT
17
+
18
+ # Aktifkan IP forwarding (penting untuk beberapa skenario)
19
+ echo 1 > /proc/sys/net/ipv4/ip_forward
20
+
21
+ # Deteksi interface utama yang aktif
22
+ interface=$(ip -4 route ls | grep default | grep -Po '(?<=dev )(\S+)' | head -1)
23
+
24
+ # =================================================================
25
+ # ATURAN UNTUK TRAFFIC DARI LUAR (INTERNET -> SERVER ANDROID)
26
+ # Menggunakan chain PREROUTING
27
+ # =================================================================
28
+ echo "Menerapkan aturan untuk traffic dari LUAR (PREROUTING)..."
29
+ # ZIVPN: Port 6000-19999 -> 5667
30
+ iptables -t nat -A PREROUTING -i ${interface} -p udp --dport 6000:19999 -j DNAT --to-destination :5667
31
+
32
+ # Aturan lain jika diperlukan (contoh dari skrip asli Anda)
33
+ iptables -t nat -A PREROUTING -i ${interface} -p udp --dport 1:5999 -j DNAT --to-destination :3671
34
+ iptables -t nat -A PREROUTING -i ${interface} -p udp --dport 20000:65535 -j DNAT --to-destination :5666
35
+
36
+
37
+ # =================================================================
38
+ # ATURAN UNTUK TRAFFIC DARI DALAM (CLIENT ANDROID -> SERVER ANDROID)
39
+ # Menggunakan chain OUTPUT
40
+ # =================================================================
41
+ echo "Menerapkan aturan untuk traffic dari DALAM (OUTPUT)..."
42
+ # ZIVPN: Port 6000-19999 -> 5667
43
+ iptables -t nat -A OUTPUT -p udp --dport 6000:19999 -j DNAT --to-destination :5667
44
+
45
+ # Aturan lain jika diperlukan (harus sama dengan yang di PREROUTING)
46
+ iptables -t nat -A OUTPUT -p udp --dport 1:5999 -j DNAT --to-destination :3671
47
+ iptables -t nat -A OUTPUT -p udp --dport 20000:65535 -j DNAT --to-destination :5666
48
+
49
+
50
+ echo "Aturan iptables universal telah berhasil diterapkan."
51
+
52
+ # Jalankan skrip optimasi jika ada
53
+ if [ -f "optimize.sh" ]; then
54
+ bash optimize.sh
55
+ fi
scripts/port-forward.sh ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+
3
+ # Get the directory where the script is located
4
+ SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd)
5
+ PROJECT_ROOT=$(cd -- "$SCRIPT_DIR/.." &> /dev/null && pwd)
6
+
7
+ # Path to the ZIVPN binary
8
+ ZIVPN_BINARY="$PROJECT_ROOT/zivpn/udp-zivpn-linux-amd64"
9
+ ZIVPN_URL="https://github.com/zahidbd2/udp-zivpn/releases/download/udp-zivpn_1.4.9/udp-zivpn-linux-amd64"
10
+ ZIVPN_DIR=$(dirname "$ZIVPN_BINARY")
11
+
12
+ # Check if the ZIVPN binary exists, and download if it does not
13
+ if [ ! -f "$ZIVPN_BINARY" ]; then
14
+ echo "ZIVPN binary not found. Downloading..."
15
+ # Ensure the directory exists
16
+ mkdir -p "$ZIVPN_DIR"
17
+ # Download the binary using wget or curl
18
+ if command -v wget >/dev/null 2>&1; then
19
+ wget -O "$ZIVPN_BINARY" "$ZIVPN_URL"
20
+ elif command -v curl >/dev/null 2>&1; then
21
+ curl -L -o "$ZIVPN_BINARY" "$ZIVPN_URL"
22
+ else
23
+ echo "Error: Neither wget nor curl is available to download the ZIVPN binary."
24
+ exit 1
25
+ fi
26
+ # Make the binary executable
27
+ if [ -f "$ZIVPN_BINARY" ]; then
28
+ chmod +x "$ZIVPN_BINARY"
29
+ echo "ZIVPN binary downloaded and made executable."
30
+ else
31
+ echo "Error: Failed to download ZIVPN binary."
32
+ exit 1
33
+ fi
34
+ else
35
+ echo "ZIVPN binary already exists. Skipping download."
36
+ fi
37
+
38
+ # Flush all
39
+ iptables -F
40
+ iptables -t nat -F
41
+
42
+ # Set policy default untuk masing-masing chain
43
+ iptables -P INPUT ACCEPT
44
+ iptables -P FORWARD ACCEPT
45
+ iptables -P OUTPUT ACCEPT
46
+
47
+ # Pastikan IP forwarding diaktifkan
48
+ echo 1 > /proc/sys/net/ipv4/ip_forward
49
+
50
+ interface=$(ip -4 route ls|grep default|grep -Po '(?<=dev )(\S+)'|head -1)
51
+
52
+ # Tambahkan rule untuk mengizinkan paket UDP dengan destination port 50000 pada chain INPUT
53
+ iptables -A INPUT -p udp --dport 3671 -j ACCEPT
54
+
55
+ # UDP CUSTOM: Tambahkan aturan iptables untuk melakukan port forwarding UDP ke port 3671
56
+ iptables -t nat -A PREROUTING -i ${interface} -p udp --dport 1:21 -j DNAT --to-destination :3671 # 22: (SSH Port)
57
+ iptables -t nat -A PREROUTING -i ${interface} -p udp --dport 23:52 -j DNAT --to-destination :3671 # 53: (DNS Port)
58
+ iptables -t nat -A PREROUTING -i ${interface} -p udp --dport 54:3670 -j DNAT --to-destination :3671 # 3671: (Itself/UDP CUSTOM)
59
+ iptables -t nat -A PREROUTING -i ${interface} -p udp --dport 3672:5665 -j DNAT --to-destination :3671 # 5666 & 5667: (UDP ZIVPN)
60
+ iptables -t nat -A PREROUTING -i ${interface} -p udp --dport 5668:5999 -j DNAT --to-destination :3671
61
+
62
+ # ZIVPN: Tambahkan aturan iptables untuk melakukan port forwarding UDP ke port 5667
63
+ iptables -t nat -A PREROUTING -i ${interface} -p udp --dport 6000:7299 -j DNAT --to-destination :5667 # 7300: (BadVPN UDPGW)
64
+ iptables -t nat -A PREROUTING -i ${interface} -p udp --dport 7301:19131 -j DNAT --to-destination :5667 # 19132: (Minecraft Server)
65
+ iptables -t nat -A PREROUTING -i ${interface} -p udp --dport 19133:19999 -j DNAT --to-destination :5667 # End
66
+
67
+ # ZIVPN Legacy (Old): Tambahkan aturan iptables untuk melakukan port forwarding UDP ke port 5666
68
+ iptables -t nat -A PREROUTING -i ${interface} -p udp --dport 20000:25564 -j DNAT --to-destination :5666 # 25565: (Minecraft Server)
69
+ iptables -t nat -A PREROUTING -i ${interface} -p udp --dport 25566:65535 -j DNAT --to-destination :5666 # End
70
+
71
+
72
+ # Chain
73
+ bash optimize.sh
setup.sh ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+
3
+ set -euo pipefail
4
+
5
+ currentDir=`pwd`
6
+
7
+ echo "Force linking all *.service files to /etc/systemd/system"
8
+ ln -sf $currentDir/*/**.service /etc/systemd/system
9
+ echo "Reloading systemctl daemon.."
10
+ systemctl daemon-reload
11
+ echo "Enabling service.."
12
+ systemctl enable --now $(find $currentDir -type f -name "*.service" -print0 | xargs -0 -n1 -P8 basename)
13
+ # reboot
start.sh ADDED
@@ -0,0 +1,81 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+ set -m
3
+
4
+ echo "=== Memulai Konfigurasi Server VPN ==="
5
+
6
+ # 1. Mengaktifkan IP Forwarding & Optimasi Kernel (sysctl)
7
+ # Opsi ini sebaiknya diatur saat menjalankan kontainer dengan flag --sysctl
8
+ # Namun, kita tetap menjalankannya di sini untuk memastikan.
9
+ echo "Mengaktifkan IP forwarding dan optimasi kernel..."
10
+ sysctl -w net.ipv4.ip_forward=1
11
+ sysctl -w net.core.rmem_max=16777216
12
+ sysctl -w net.core.wmem_max=16777216
13
+ sysctl -w net.core.netdev_max_backlog=5000
14
+ sysctl -w net.core.somaxconn=65535
15
+ sysctl -w vm.swappiness=1
16
+ # Nonaktifkan pesan error jika file tidak ada
17
+ sysctl -w -e net.ipv4.tcp_fin_timeout=10
18
+ sysctl -w -e net.ipv4.tcp_keepalive_time=60
19
+
20
+ # 2. Menemukan interface jaringan utama
21
+ INTERFACE=$(ip -4 route ls | grep default | grep -Po '(?<=dev )(\S+)' | head -1)
22
+ if [ -z "$INTERFACE" ]; then
23
+ echo "ERROR: Tidak dapat menemukan interface jaringan default. Menggunakan 'eth0'."
24
+ INTERFACE="eth0"
25
+ fi
26
+ echo "Menggunakan interface: $INTERFACE"
27
+
28
+ # 3. Mengatur MTU & Offloading
29
+ # Memerlukan ethtool
30
+ echo "Mengatur MTU dan offloading pada interface $INTERFACE..."
31
+ ip link set dev "$INTERFACE" mtu 9000
32
+ ethtool -K "$INTERFACE" tso on gso on gro on || echo "Peringatan: ethtool tidak dapat mengatur offloading."
33
+
34
+ # 4. Mengatur Aturan Firewall (iptables)
35
+ echo "Membersihkan aturan iptables sebelumnya..."
36
+ iptables -F
37
+ iptables -t nat -F
38
+
39
+ echo "Menerapkan aturan port forwarding..."
40
+ # UDP CUSTOM -> :3671
41
+ iptables -t nat -A PREROUTING -i "$INTERFACE" -p udp --dport 1:5999 -j DNAT --to-destination :3671
42
+ # ZIVPN -> :5667
43
+ iptables -t nat -A PREROUTING -i "$INTERFACE" -p udp --dport 6000:19999 -j DNAT --to-destination :5667
44
+ # ZIVPN Legacy -> :5666 (Asumsi port ini masih diperlukan)
45
+ iptables -t nat -A PREROUTING -i "$INTERFACE" -p udp --dport 20000:65535 -j DNAT --to-destination :5666
46
+
47
+ echo "Aturan iptables berhasil diterapkan."
48
+ iptables -t nat -L -n
49
+
50
+ # 5. Menjalankan Layanan VPN di Background
51
+
52
+ # badvpn-udpgw
53
+ echo "Menjalankan badvpn-udpgw..."
54
+ cd /app/udpgw
55
+ ./badvpn-udpgw --listen-addr 127.0.0.1:7300 --udp-mtu 9000 &
56
+ BADVPN_PID=$!
57
+
58
+ # udp-custom
59
+ echo "Menjalankan udp-custom..."
60
+ cd /app/udp_custom
61
+ ./udp-custom server &
62
+ UDP_CUSTOM_PID=$!
63
+
64
+ # zivpn
65
+ echo "Menjalankan zivpn..."
66
+ cd /app/zivpn
67
+ ./udp-zivpn-linux-amd64 server -c config.json &
68
+ ZIVPN_PID=$!
69
+
70
+ echo "=== Semua layanan telah dimulai ==="
71
+ echo "PID: badvpn=$BADVPN_PID, udp-custom=$UDP_CUSTOM_PID, zivpn=$ZIVPN_PID"
72
+
73
+ # 6. Tunggu sinyal keluar dan bersihkan
74
+ trap "echo 'Menutup layanan...'; kill $BADVPN_PID $UDP_CUSTOM_PID $ZIVPN_PID; exit 0" SIGINT SIGTERM
75
+
76
+ # Tunggu semua proses background selesai
77
+ # fg %1 akan membawa proses pertama ke foreground, menjaga kontainer tetap berjalan
78
+ # dan memungkinkan trap untuk menangani sinyal dengan benar.
79
+ wait $BADVPN_PID
80
+ wait $UDP_CUSTOM_PID
81
+ wait $ZIVPN_PID
udp_custom/config.json ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "listen": ":3671",
3
+ "stream_buffer": 16777216,
4
+ "receive_buffer": 33554432,
5
+ "auth": {
6
+ "mode": "passwords"
7
+ }
8
+ }
udp_custom/udp-custom ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2a1b5584c7947feb5a02e847e09795751024f63ce7137a353c2b9c2a4282d636
3
+ size 4782592
udp_custom/udp-custom-config.json ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "listen": ":3671",
3
+ "stream_buffer": 16777216,
4
+ "receive_buffer": 33554432,
5
+ "auth": {
6
+ "mode": "passwords"
7
+ }
8
+ }
udp_custom/udp-custom.service ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [Unit]
2
+ Description=UDP Custom by ePro Dev. Team
3
+
4
+ [Service]
5
+ LimitAS=infinity
6
+ LimitRSS=infinity
7
+ User=root
8
+ Type=simple
9
+ ExecStart=/usr/bin/taskset -c 0 /root/udp-custom/udp_custom/udp-custom server
10
+ WorkingDirectory=/root/udp-custom/udp_custom
11
+ Restart=always
12
+ RestartSec=2s
13
+
14
+ [Install]
15
+ WantedBy=default.target
udpgw/badvpn-udpgw ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b6fb43cec26a890b821cd00668b36d9d967edbf936259b0deae7971c9db9074e
3
+ size 508160
udpgw/badvpn.service ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [Unit]
2
+ Description=UDP forwarding for badvpn-tun2socks
3
+ After=nss-lookup.target
4
+
5
+ [Service]
6
+ LimitAS=infinity
7
+ LimitRSS=infinity
8
+ Restart=always
9
+ Type=simple
10
+ ExecStart=/usr/bin/taskset -c 0 /root/udp-custom/udpgw/badvpn-udpgw --loglevel 0 --channel-loglevel 0 --listen-addr 127.0.0.1:7300 --udp-mtu 9000
11
+ WorkingDirectory=/root/udp-custom/udpgw
12
+ RestartSec=2s
13
+
14
+ [Install]
15
+ WantedBy=multi-user.target
zivpn/config.json ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "listen": ":5667",
3
+ "cert": "zivpn.crt",
4
+ "key": "zivpn.key",
5
+ "obfs": "",
6
+ "up_mbps": 100,
7
+ "down_mbps": 250,
8
+ "max_conn_client": 65535,
9
+ "disable_mtu_discovery": true,
10
+ "recv_window_conn": 1024576000,
11
+ "recv_window_client": 262144000,
12
+ "auth": {
13
+ "mode": "passwords",
14
+ "config": ["1"]
15
+ }
16
+ }
zivpn/zivpn-config.json ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "listen": ":5667",
3
+ "cert": "zivpn/zivpn.crt",
4
+ "key": "zivpn/zivpn.key",
5
+ "obfs": "",
6
+ "up_mbps": 100,
7
+ "down_mbps": 250,
8
+ "promotheus_listen": ":8080",
9
+ "max_conn_client": 65535,
10
+ "disable_mtu_discovery": true,
11
+ "recv_window_conn": 1024576000,
12
+ "recv_window_client": 262144000,
13
+ "auth": {
14
+ "mode": "passwords",
15
+ "config": ["adn123"]
16
+ }
17
+ }
zivpn/zivpn.crt ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ -----BEGIN CERTIFICATE-----
2
+ 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
31
+ 5A==
32
+ -----END CERTIFICATE-----
zivpn/zivpn.key ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ -----BEGIN PRIVATE KEY-----
2
+ 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
51
+ fOSL8C4UCwtv5QpYQVz5lxafJrc29PON
52
+ -----END PRIVATE KEY-----
zivpn/zivpn.service ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [Unit]
2
+ Description=zivpn VPN Server
3
+ After=network.target
4
+
5
+ [Service]
6
+ LimitAS=infinity
7
+ LimitRSS=infinity
8
+ Type=simple
9
+ User=root
10
+ WorkingDirectory=/root/udp-custom/zivpn
11
+ ExecStart=/root/udp-custom/zivpn/udp-zivpn-linux-amd64 server -c config.json
12
+ Restart=always
13
+ RestartSec=3
14
+ Environment=ZIVPN_LOG_LEVEL=info
15
+ CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_RAW
16
+ AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_RAW
17
+ NoNewPrivileges=true
18
+
19
+ [Install]
20
+ WantedBy=multi-user.target