Cara Instal i2pd di OpenBSD - Client Untuk Jaringan Anonymous I2P

Terbit: Perbarui:
Tags


Keamanan sangat penting di era digital ini. Protokol jaringan seperti Invisible Internet Protocol atau I2P, lapisan jaringan yang memungkinkan Anda tetap anonim di Internet. Dengan I2P, permintaan Anda melewati beberapa node komputer jaringan. Hal ini mempersulit pelacakan pengguna asli dan membantu menjaga anonimitas. Karena I2P terkadang Anda juga dapat mengakses situs yang disensor pemerintah secara anonim.

I2pd atau daemon i2p adalah klien i2p sumber terbuka berbasis C++. Ini adalah lapisan jaringan anonim di mana komunikasi dienkripsi dan alamat IP pengguna tidak diungkapkan. Dimulai pada tahun 2014 oleh tim PURPRLEI2P dan pertama kali dirilis pada tahun 2015. Teknologi ini dirancang agar lebih aman, andal, dan berkinerja lebih baik daripada I2P.

Pada artikel sebelumnya, kami telah menulis tentang I2P yang dijalankan di sistem OpenBSD. Mungkin anda bertanya, apa bedanya I2P dan I2PD. Baiklah, agar memperjelas pembahasan di atas, kami akan coba uraikan antara I2P dan I2PD.

I2P adalah jaringan overlay anonim, jaringan dalam jaringan. Jaringan ini dimaksudkan untuk melindungi komunikasi dari pengawasan dan pemantauan oleh pihak ketiga seperti ISP. I2P digunakan oleh banyak orang yang peduli dengan privasi mereka: aktivis, orang-orang yang tertindas, jurnalis dan whistleblower, serta orang kebanyakan. Tidak ada jaringan yang bisa "benar-benar anonim". Tujuan berkelanjutan dari I2P adalah untuk membuat serangan semakin sulit dilakukan. Anonimitasnya akan semakin kuat seiring dengan meningkatnya ukuran jaringan dan dengan tinjauan akademis yang berkelanjutan.

Sedangkan, I2PD adalah klien berfitur lengkap untuk jaringan I2P yang ditulis dalam C++. I2P (Invisible Internet Project) adalah lapisan jaringan anonim universal. Semua komunikasi melalui I2P bersifat anonim dan dienkripsi ujung ke ujung. Peserta tidak mengungkapkan alamat IP asli mereka satu sama lain. Aplikasi peer-to-peer (mata uang kripto, berbagi berkas) dan klien-ke-server (situs web, pengirim pesan instan, server obrolan) didukung.

Spesifikasi Sistem

  • root@ns2.datainchi.com
  • OS: OpenBSD 7.6 amd64
  • Host: Acer Aspire M1800
  • Uptime: 8 mins
  • Packages: 42 (pkg_info)
  • Shell: ksh v5.2.14 99/07/13.2
  • Terminal: /dev/ttyp0
  • CPU: Intel Core 2 Duo E8400 (2) @ 3.000GHz
  • Memory: 35MiB / 1775MiB
  • IP Address: 192.168.5.3
  • Versi I2PD: i2pd-2.53.1p0
  • Versi I2P: i2p-2.6.1

A. Proses Instalasi i2pd

Setelah anda mengetahu sedikit tentang i2pd dan sistem yang digunakan, kita langsung saja dengan menginstal i2pd. Uuups…. nati dulu, sebelum anda menginstal i2pd, ada beberapa dependensi yang harus anda instal terlebih dahulu.

1. Instal I2P

Dependensi yang pertama yang harus anda instal adalah I2P. Pada artikel ini kami tidak akan menjelaskan cara instal I2P di OpenBSD. Anda baca saja proses instalasi di artikel sebelumnya.

2. Instal cmake boost miniupnpc

Dependensi berikutnya yang harus anda instal adalah cmake boost miniupnpc.

ns2# pkg_add cmake boost miniupnpc

3. Instal I2PD

Setelah semua dependensi di atas telah anda instal semua, kita lanjutkan dengan menginstal i2pd.

ns2# pkg_add i2pd

B. Proses Konfigurasi i2pd

Bagian ini merupakan bagian yang sangat penting, karena kita akan mengutak atik file i2pd agar dapat berjalan di server OpenBSD. File konfigurasi utama i2pd berada di /etc/i2pd/i2pd.conf. Silahkan anda buka file tersebut dan ubah sesuai kebutuhan atau spesifikasi sistem OpenBSD anda. Supaya lebih gampang, anda ikuti panduan di bawah ini saja.

## Configuration file for a typical i2pd user
## See https://i2pd.readthedocs.io/en/latest/user-guide/configuration/
## for more options you can use in this file.

## Lines that begin with "## " try to explain what's going on. Lines
## that begin with just "#" are disabled commands: you can enable them
## by removing the "#" symbol.

## Tunnels config file
## Default: ~/.i2pd/tunnels.conf or /var/lib/i2pd/tunnels.conf
# tunconf = /var/lib/i2pd/tunnels.conf

## Tunnels config files path
## Use that path to store separated tunnels in different config files.
## Default: ~/.i2pd/tunnels.d or /var/lib/i2pd/tunnels.d
# tunnelsdir = /var/lib/i2pd/tunnels.d

## Path to certificates used for verifying .su3, families
## Default: ~/.i2pd/certificates or /var/lib/i2pd/certificates
# certsdir = /var/lib/i2pd/certificates

## Where to write pidfile (default: /run/i2pd.pid, not used in Windows)
# pidfile = /run/i2pd.pid

## Logging configuration section
## By default logs go to stdout with level 'info' and higher
## For Windows OS by default logs go to file with level 'warn' and higher
##
## Logs destination (valid values: stdout, file, syslog)
##  * stdout - print log entries to stdout
##  * file - log entries to a file
##  * syslog - use syslog, see man 3 syslog
# log = file
## Path to logfile (default: autodetect)
# logfile = /var/log/i2pd/i2pd.log
## Log messages above this level (debug, info, *warn, error, critical, none)
## If you set it to none, logging will be disabled
# loglevel = warn
## Write full CLF-formatted date and time to log (default: write only time)
# logclftime = true

## Daemon mode. Router will go to background after start. Ignored on Windows
## (default: true)
daemon = true

## Specify a family, router belongs to (default - none)
# family =

## Network interface to bind to
## Updates address4/6 options if they are not set
# ifname =
## You can specify different interfaces for IPv4 and IPv6
# ifname4 =
# ifname6 =

## Local address to bind transport sockets to
## Overrides host option if:
## For ipv4: if ipv4 = true and nat = false
## For ipv6: if 'host' is not set or ipv4 = true
# address4 =
# address6 =

## External IPv4 or IPv6 address to listen for connections
## By default i2pd sets IP automatically
## Sets published NTCP2v4/SSUv4 address to 'host' value if nat = true
## Sets published NTCP2v6/SSUv6 address to 'host' value if ipv4 = false
# host = 1.2.3.4

## Port to listen for connections
## By default i2pd picks random port. You MUST pick a random number too,
## don't just uncomment this
port = 4567

## Enable communication through ipv4 (default: true)
ipv4 = true
## Enable communication through ipv6 (default: false)
ipv6 = false

## Bandwidth configuration
## L limit bandwidth to 32 KB/sec, O - to 256 KB/sec, P - to 2048 KB/sec,
## X - unlimited
## Default is L (regular node) and X if floodfill mode enabled.
## If you want to share more bandwidth without floodfill mode, uncomment
## that line and adjust value to your possibilities. Value can be set to
## integer in kilobytes, it will apply that limit and flag will be used
## from next upper limit (example: if you set 4096 flag will be X, but real
## limit will be 4096 KB/s). Same can be done when floodfill mode is used,
## but keep in mind that low values may be negatively evaluated by Java
## router algorithms.
# bandwidth = L
## Max % of bandwidth limit for transit. 0-100 (default: 100)
# share = 100

## Router will not accept transit tunnels, disabling transit traffic completely
## (default: false)
# notransit = true

## Router will be floodfill (default: false)
## Note: that mode uses much more network connections and CPU!
# floodfill = true

[ntcp2]
## Enable NTCP2 transport (default: true)
# enabled = true
## Publish address in RouterInfo (default: true)
# published = true
## Port for incoming connections (default is global port option value)
# port = 4567

[ssu2]
## Enable SSU2 transport (default: true)
# enabled = true
## Publish address in RouterInfo (default: true)
# published = true
## Port for incoming connections (default is global port option value)
# port = 4567

[http]
## Web Console settings
## Enable the Web Console (default: true)
enabled = true
## Address and port service will listen on (default: 127.0.0.1:7070)
address = 192.168.5.3
port = 7070
## Path to web console (default: /)
# webroot = /
## Enable Web Console authentication (default: false)
## You should not use Web Console via public networks without additional encryption.
## HTTP authentication is not encryption layer!
# auth = true
# user = i2pd
# pass = changeme
## Select webconsole language
## Currently supported english (default), afrikaans, armenian, chinese, czech, french,
## german, italian, polish, portuguese, russian, spanish, turkish, turkmen, ukrainian
## and uzbek languages
# lang = english

[httpproxy]
## Enable the HTTP proxy (default: true)
enabled = true
## Address and port service will listen on (default: 127.0.0.1:4444)
address = 192.168.5.3
port = 4444
## Optional keys file for proxy local destination (default: http-proxy-keys.dat)
# keys = http-proxy-keys.dat
## Enable address helper for adding .i2p domains with "jump URLs" (default: true)
## You should disable this feature if your i2pd HTTP Proxy is public,
## because anyone could spoof the short domain via addresshelper and forward other users to phishing links
# addresshelper = true
## Address of a proxy server inside I2P, which is used to visit regular Internet
outproxy = http://false.i2p
## httpproxy section also accepts I2CP parameters, like "inbound.length" etc.

[socksproxy]
## Enable the SOCKS proxy (default: true)
# enabled = true
## Address and port service will listen on (default: 127.0.0.1:4447)
address = 192.168.5.3
port = 4447
## Optional keys file for proxy local destination (default: socks-proxy-keys.dat)
# keys = socks-proxy-keys.dat
## Socks outproxy. Example below is set to use Tor for all connections except i2p
## Enable using of SOCKS outproxy (works only with SOCKS4, default: false)
# outproxy.enabled = false
## Address and port of outproxy
outproxy = 192.168.5.3
outproxyport = 9050
## socksproxy section also accepts I2CP parameters, like "inbound.length" etc.

[sam]
## Enable the SAM bridge (default: true)
# enabled = false
## Address and ports service will listen on (default: 127.0.0.1:7656, udp: 7655)
# address = 127.0.0.1
# port = 7656
# portudp = 7655

[bob]
## Enable the BOB command channel (default: false)
# enabled = false
## Address and port service will listen on (default: 127.0.0.1:2827)
# address = 127.0.0.1
# port = 2827

[i2cp]
## Enable the I2CP protocol (default: false)
# enabled = false
## Address and port service will listen on (default: 127.0.0.1:7654)
address = 192.168.5.3
port = 7654

[i2pcontrol]
## Enable the I2PControl protocol (default: false)
# enabled = false
## Address and port service will listen on (default: 127.0.0.1:7650)
address = 192.168.5.3
port = 7650
## Authentication password (default: itoopie)
# password = itoopie

[precomputation]
## Enable or disable elgamal precomputation table
## By default, enabled on i386 hosts
# elgamal = true

[upnp]
## Enable or disable UPnP: automatic port forwarding (enabled by default in WINDOWS, ANDROID)
# enabled = false
## Name i2pd appears in UPnP forwardings list (default: I2Pd)
# name = I2Pd

[meshnets]
## Enable connectivity over the Yggdrasil network  (default: false)
# yggdrasil = false
## You can bind address from your Yggdrasil subnet 300::/64
## The address must first be added to the network interface
# yggaddress =

[reseed]
## Options for bootstrapping into I2P network, aka reseeding
## Enable reseed data verification (default: true)
verify = true
## URLs to request reseed data from, separated by comma
## Default: "mainline" I2P Network reseeds
# urls = https://reseed.i2p-projekt.de/,https://i2p.mooo.com/netDb/,https://netdb.i2p2.no/
## Reseed URLs through the Yggdrasil, separated by comma
# yggurls = http://[324:71e:281a:9ed3::ace]:7070/
## Path to local reseed data file (.su3) for manual reseeding
# file = /path/to/i2pseeds.su3
## or HTTPS URL to reseed from
# file = https://legit-website.com/i2pseeds.su3
## Path to local ZIP file or HTTPS URL to reseed from
# zipfile = /path/to/netDb.zip
## If you run i2pd behind a proxy server, set proxy server for reseeding here
## Should be http://address:port or socks://address:port
# proxy = http://127.0.0.1:8118
## Minimum number of known routers, below which i2pd triggers reseeding (default: 25)
# threshold = 25

[addressbook]
## AddressBook subscription URL for initial setup
## Default: reg.i2p at "mainline" I2P Network
# defaulturl = http://shx5vqsw7usdaunyzr2qmes2fq37oumybpudrd4jjj4e4vk4uusa.b32.i2p/hosts.txt
## Optional subscriptions URLs, separated by comma
# subscriptions = http://reg.i2p/hosts.txt,http://identiguy.i2p/hosts.txt,http://stats.i2p/cgi-bin/newhosts.txt,http://rus.i2p/hosts.txt

[limits]
## Maximum active transit sessions (default: 5000)
## This value is doubled if floodfill mode is enabled!
# transittunnels = 5000
## Limit number of open file descriptors (0 - use system limit)
# openfiles = 0
## Maximum size of corefile in Kb (0 - use system limit)
# coresize = 0

[trust]
## Enable explicit trust options. (default: false)
# enabled = true
## Make direct I2P connections only to routers in specified Family.
# family = MyFamily
## Make direct I2P connections only to routers specified here. Comma separated list of base64 identities.
# routers =
## Should we hide our router from other routers? (default: false)
# hidden = true

[exploratory]
## Exploratory tunnels settings with default values
# inbound.length = 2
# inbound.quantity = 3
# outbound.length = 2
# outbound.quantity = 3

[persist]
## Save peer profiles on disk (default: true)
# profiles = true
## Save full addresses on disk (default: true)
# addressbook = true

[cpuext]
## Use CPU AES-NI instructions set when work with cryptography when available (default: true)
# aesni = true
## Force usage of CPU instructions set, even if they not found (default: false)
## DO NOT TOUCH that option if you really don't know what are you doing!
# force = false

Setelah itu anda buat file log untuk i2pd.

ns2# touch /var/lib/i2pd/i2pd.log

1. Aktifkan I2PD

Kemudian kita lanjutkan dengan mengaktifkan i2pd.

ns2# rcctl enable i2pd
ns2# rcctl restart i2pd

2. Membuat Boot I2PD

Pada bagian ini, Anda dapat memulai I2Pd secara manual, tetapi tidak akan mulai secara otomatis saat sistem di-boot. Bagian ini menjelaskan cara melakukannya. Hal pertama yang harus dilakukan adalah membuat kelas login baru untuk menambah jumlah file yang dapat dibuka I2Pd secara bersamaan.

Secara default, OpenBSD membatasi jumlah ini ke nilai yang terlalu rendah agar I2Pd dapat bekerja dengan baik. Gejala jumlah yang terlalu kecil meliputi kesulitan menghubungkan ke situs web dan penggunaan CPU yang tinggi. Jika Anda menggunakan OpenBSD 7.5 atau yang atau OpenBSD terbaru, cukup tambahkan baris berikut di file /etc/login.conf.d/i2pd untuk membuat kelas login.

i2pd:\
    :openfiles-cur=102400:\
    :openfiles-max=102400:\
    :tc=daemon:

3. Menjalankan I2PD

Setelah anda mengaktifkan i2pd, kita lanjutkan dengan menjalankan i2pd. Untuk menjalankan i2pd kita gunakan web browser Google Chrome atau lainnya. Pada menu address bar anda ketikkan http://192.168.5.3:7070/.

Bila konfigurasi di atas tak ada yang anda lewatkan, pada layar monitor anda akan menu i2pd.

I2PD dapat menjadi alat yang sangat berguna jika Anda ingin tetap anonim di internet dan meningkatkan keamanan Anda saat menjelajah. Alat ini memiliki semua fitur I2P dan menyempurnakannya. Alat ini lebih aman, terenkripsi secara kriptografi, dan lebih berkinerja karena dibuat di C++. Jika Anda memiliki beberapa situs yang disensor di negara Anda, I2PD dapat membantu Anda mengaksesnya secara anonim juga.

Karena itu, alat ini bermanfaat bagi orang-orang seperti jurnalis, kantor berita, atau pengguna umum yang menginginkan privasi. Alat ini sangat fleksibel dan dapat digunakan dalam berbagai aplikasi. Kami sarankan untuk mengunjungi situs resminya dan menganalisis pro dan kontra penggunaannya. Alat ini tentu dapat meningkatkan privasi dan anonimitas, tetapi Anda tidak boleh bergantung padanya. I2PD masih dalam tahap pengembangan dan terus diperbarui untuk ditingkatkan.