Jom belajar Linux

Cara Install Wireguard VPN Server Di Debian 9 Bersama FULLCONE Routing

To read this tutorial in English, click here.

Hello guys. Hari ini kita akan belajar cara-cara untuk install Wireguard Server di Debian 9. Berbanding tutorial lain, tutorial ini berbeza kerana kita akan menggunakan routing Fullcone pada IPTables.

Sekiranya tidak diubah, Linux akan menggunakan Symmetric NAT. Port dan IP dihadkan. Berbanding Fullcone NAT, Port tidak dihadkan. Ini adalah penting dalam beberapa situasi di mana kita ingin melakukan peer-to-peer connection secara langsung. Selalunya, Fullcone NAT digunakan untuk port forwarding untuk tujuan gaming.

Untuk memudahkan pemahaman tutorial ini, kita assume sahaja;

IP ADDRESS SERVER: 123.123.123.12

INTERNAL IP ADDRESS WIREGUARD: 10.0.0.1

PORT WIREGUARD: 8080

INTERNAL IP CLIENT 1: 10.0.0.2

INTERNAL IP CLIENT 2: 10.0.0.3

Part 1 – Install IPTables Dengan Function Fullcone Daripada Source

Update dan Upgrade

Pertama sekali, kita perlu update dan upgrade dahulu.

apt-get update && apt-get upgrade -y

Install Linux Headers

Install linux headers dengan command berikut;

apt-get install linux-image-amd64 linux-headers-amd64 -y

Restart server;

reboot

Install Dependencies

apt install build-essential autoconf autogen libtool pkg-config libgmp3-dev bison flex libreadline-dev git -y

Git Dependencies Fullcone

cd /root/
mkdir fullcone
apt-get install git
cd fullcone
git clone git://git.netfilter.org/libmnl
git clone git://git.netfilter.org/libnftnl.git
git clone git://git.netfilter.org/iptables.git
git clone https://github.com/Chion82/netfilter-full-cone-nat.git

Compile LIBMNL

cd libmnl
sh autogen.sh
./configure
make && make install
whereis libmnl
ldd /usr/local/lib/libmnl.so

Compile LIBNFTNL

cd /root/fullcone/libnftnl
sh autogen.sh
./configure
make && make install

Enable Netfilter -Fullcone NAT

cd /root/fullcone/netfilter-full-cone-nat
make
modprobe nf_nat
insmod xt_FULLCONENAT.ko

Build IPTables Baru

cp /root/fullcone/netfilter-full-cone-nat/libipt_FULLCONENAT.c /root/fullcone/iptables/extensions/
cd /root/fullcone/iptables
ln -sfv /usr/sbin/xtables-multi /usr/bin/iptables-xml
./autogen.sh
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig 
export PKG_CONFIG_PATH
./configure
make && make install

Kemudian, kita delete iptables yang lama, dan copy iptables baru.

rm -rf /sbin/iptables
rm -rf /sbin/iptables-restore
rm -rf /sbin/iptables-save
cd /usr/local/sbin
cp /usr/local/sbin/iptables /sbin/
cp /usr/local/sbin/iptables-restore /sbin/
cp /usr/local/sbin/iptables-save /sbin/

Semak iptables baru dengan command berikut;

iptables -V

Setting agar fullcone kita boleh load setiap kali boot server;

cd /root/
kernel=`uname -r`
cp /root/fullcone/netfilter-full-cone-nat/xt_FULLCONENAT.ko /lib/modules/$kernel/
depmod
echo '#!/bin/sh' >> /etc/rc.local 
echo 'modprobe xt_FULLCONENAT' >> /etc/rc.local 
chmod +x /etc/rc.local 
reboot

Selepas server reboot, sahkan yang fullcone berjaya dipasang;

lsmod | grep xt_FULLCONENAT

Part -2 Install Server Wireguard

Install Wireguard Server

Tambahkan source list;

echo "deb http://deb.debian.org/debian/ unstable main" > /etc/apt/sources.list.d/unstable-wireguard.list 
printf 'Package: *\nPin: release a=unstable\nPin-Priority: 150\n' > /etc/apt/preferences.d/limit-unstable

Update semula

apt update

Install Wireguard

apt install wireguard-dkms wireguard-tools -y

Masuk folder Wireguard

cd /etc/wireguard

Generate public key dan private key

umask 077
wg genkey | tee privatekey | wg pubkey > publickey

Kemudian, kita akan buat config untuk interface wg0

nano wg0.conf

Masukkan seperti berikut

[Interface] 
PrivateKey = CHANGE_ME
Address = 10.0.0.1/24
ListenPort = 8080
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j FULLCONENAT
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j FULLCONENAT
SaveConfig = true

TUKAR

CHANGE_ME kepada private key anda (/etc/wireguard/privatekey). Contoh:

[email protected]: cat /etc/wireguard/privatekey
eCTibJWpwsgdD0pYfnPg799999v+yzbCLmRn1hP34=

Jadi, wg0.conf;

[Interface] 
PrivateKey = eCTibJWpwsgdD0pYfnPg799999v+yzbCLmRn1hP34=
Address = 10.0.0.1/24
ListenPort = 8080
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j FULLCONENAT
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j FULLCONENAT
SaveConfig = true

Kemudian, kita start Wireguard server dengan command berikut;

wg-quick up wg0

Kemudian run command berikut untuk semak Wireguard server;

wg show

Jika output adalah seperti berikut, bermaksud server Wireguard telah bersedia.

[email protected]: wg show
interface: wg0
  public key: dadwwadawdswwwFHjyR0QAUU2dYtxI/0l6RH6jWQ=
  private key: (hidden)
  listening port: 8080

Daftar Client Wireguard

Buat folder client;

cd /root/
mkdir client
cd client

Kemudian kita generate private key dan public key;

wg genkey | tee client1.priv | wg pubkey > client1.pub

Semak dan copy public key untuk client pertama ini;

cat client1.pub

Untuk register client pertama, di mana XXXX perlu digantikan dengan public key tadi;

wg set wg0 peer XXXXXXXXXXXXXXXXX allowed-ips 10.0.0.2/32

Kemudian, save config Wireguard dengan command;

wg-quick save wg0

Sahkan bahawa client satu telah didaftar;

wg show

Untuk daftar client kedua;

wg genkey | tee client2.priv | wg pubkey > client2.pub
cat client2.pub
wg set wg0 peer YYYYYYYYYYYYYYYY allowed-ips 10.0.0.3/32
wg-quick save wg0
wg show

Buat Config Untuk Client Wireguard

Sekarang, kita ada client1 dengan IP: 10.0.0.2, client2 dengan IP: 10.0.0.3. Untuk membuat config client1;

nano client1.conf
[Interface]
PrivateKey = PRIVATEKEYCLIENT1
Address = 10.0.0.2/32
DNS = 1.1.1.1
MTU = 1280

[Peer]
PublicKey = PUBLICKEYSERVER
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = 123.123.123.12:8080

Untuk client2;

nano client2.conf
[Interface]
PrivateKey = PRIVATEKEYCLIENT2
Address = 10.0.0.3/32
DNS = 1.1.1.1
MTU = 1280

[Peer]
PublicKey = PUBLICKEYSERVER
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = 123.123.123.12:8080

Save client1.conf dan client2.conf, import menggunakan Wireguard Android / iOS ataupun PC.

100 comments

Jom belajar Linux

Recent Posts

Kategori