N2N adalah lapisan sumber terbuka 2/3 permohonan VPN. Tidak seperti banyak program VPN lain, N2N dapat menghubungkan komputer yang terletak di belakang penghala NAT. Ini menawarkan kelebihan besar untuk menyambung ke persekitaran awan tanpa perlu bergantung pada protokol khas seperti protokol ESP (digunakan oleh ipsec). Untuk mencapai hubungan ini, N2N menggunakan supernode yang dapat merutekan maklumat antara nod NAT'ed. Sambungan VPN ini boleh digunakan untuk menyambung banyak contoh Vultr merentas kawasan bersama.
Prasyarat
Dalam contoh ini kita akan menggunakan tiga nod dalam pelbagai zon:
Pemasangan perisian
Perintah berikut akan dilaksanakan pada setiap contoh.
Mulakan dengan memasang build-essential
dari repo dan juga libssl-dev
, kerana kami akan membina dari kod sumber terbaru.
apt-get install -y build-essential libssl-dev
Seterusnya, muat turun kod sumber dari github.
cd /tmp
git clone https://github.com/ntop/n2n.git
Susun semua binari.
cd n2n
make
make install
The make install
arahan akan telah mencipta supernode
dan edge
binari dalam /usr/sbin
direktori. Selesaikan dengan membersihkan fail.
rm -rf /tmp/n2n
Pemasangan - Node Paris
Node pertama akan menjadi supernode kita. Supernode ini akan memulakan perkhidmatan supernode yang akan didengar di port UDP 1200
. Secara lalai aplikasi N2N tidak membuat fail perkhidmatan. Oleh itu, kita perlu menyediakan sendiri.
Buat fail perkhidmatan 'n2n_supernode':
nano /etc/systemd/system/n2n_supernode.service
Tambahkan kandungan berikut:
[Unit]
Description=n2n supernode
Wants=network-online.target
After=network-online.target
[Service]
ExecStart=/usr/sbin/supernode -l 1200
[Install]
WantedBy=multi-user.target
Arahan '-l' mentakrifkan port UDP 1200
. Ini adalah pelabuhan di mana supernode akan mendengar. Untuk memastikan segala-galanya berfungsi, mulakan perkhidmatan supernode:
systemctl start n2n_supernode
Semak status supernode.
systemctl status n2n_supernode
Ini akan menunjukkan status yang serupa dengan yang berikut.
● n2n_supernode.service - n2n supernode
Loaded: loaded (/etc/systemd/system/n2n_supernode.service; disabled; vendor prese
Active: active (running) since Wed 2018-08-15 17:07:46 UTC; 5s ago
Main PID: 4711 (supernode)
Tasks: 1
Memory: 80.0K
CPU: 1ms
CGroup: /system.slice/n2n_supernode.service
└─4711 /usr/sbin/supernode -l 1200
Seterusnya kami akan membuat perkhidmatan tepi. Perkhidmatan kelebihan ini akan menuntut IP peribadi untuk komunikasi antara tepi lain di zon Vultr yang lain.
Seperti dengan perkhidmatan supernode, ini juga memerlukan fail servis sendiri.
nano /etc/systemd/system/n2n_edge.service
Tambahkan kandungan berikut:
[Unit]
Description=n2n edge
Wants=network-online.target
After=network-online.target n2n_supernode.service
[Service]
ExecStart=/usr/sbin/edge -l localhost:1200 -c Vultr -a 192.168.1.1 -k mypassword -f
[Install]
WantedBy=multi-user.target
Dalam fail perkhidmatan ini, kami menentukan pilihan baris perintah berikut:
-l localhost:1200
: Ini akan menyambung kepada localhost di port UDP 1200
.
-c Vultr
: Ini adalah masyarakat yang akan menyertai. Semua bahagian dalam komuniti yang sama muncul di LAN yang sama (segmen rangkaian lapisan 2). Tepi yang tidak berada dalam komuniti yang sama tidak akan berkomunikasi antara satu sama lain.
-a 192.168.1.1
: IP yang diberikan ke antara muka ini. Inilah alamat IP maya N2N yang dituntut.
-k mypassword
: Kata laluan yang digunakan untuk setiap tepi. Semua bahagian yang berkomunikasi mesti menggunakan kunci dan nama komuniti yang sama.
-f
: Menyahdayakan mod daemon dan menyebabkan tepi berjalan di latar depan. Ini diperlukan untuk fail perkhidmatan, jika systemctl
tidak, perkhidmatan tidak akan dimulakan.
Untuk memastikan semuanya berfungsi, mulakan perkhidmatan.
systemctl start n2n_edge
Kemudian, tanya status perkhidmatan.
systemctl status n2n_edge
Output akan sama dengan yang berikut.
● n2n_edge.service - n2n edge
Loaded: loaded (/etc/systemd/system/n2n_edge.service; disabled; vendor preset: en
Active: active (running) since Wed 2018-08-15 17:10:46 UTC; 3s ago
Main PID: 4776 (edge)
Tasks: 1
Memory: 396.0K
CPU: 8ms
CGroup: /system.slice/n2n_edge.service
└─4776 /usr/sbin/edge -l localhost:1200 -c Vultr -a 192.168.1.1 -k mypass
Jika kita menyemak 'ifconfig', anda akan melihat IP maya N2N yang dituntut oleh edge0
antara muka.
ifconfig
Output akan sama dengan yang berikut.
edge0 Link encap:Ethernet HWaddr 42:14:55:64:7d:21
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::4014:55ff:fe64:7d21/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1400 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:648 (648.0 B)
Setelah ini selesai, dayakan dan buat peraturan firewall. Pastikan untuk menggantikan node_miami_ip
dan node_sydney_ip
teks dengan IP awam contoh Sydney dan Miami. (Kami akan menggunakannya nanti).
ufw allow 22/tcp
ufw allow from node_miami_ip to any port 1200
ufw allow from node_sydney_ip to any port 1200
ufw enable
Perkara terakhir yang perlu dilakukan dengan nod ini adalah untuk membolehkan kedua-dua perkhidmatan di boot.
systemctl enable n2n_supernode.service
systemctl enable n2n_edge.service
Pemasangan - Node Miami
Nod Miami akan menyambung ke nod super yang sedang berjalan di zon Paris. Untuk mencapai ini, kami hanya perlu membuat fail perkhidmatan untuk edge
permohonan itu.
Mulakan dengan membuat fail perkhidmatan kelebihan.
nano /etc/systemd/system/n2n_edge.service
Tambahkan kandungan berikut.
[Unit]
Description=n2n edge
Wants=network-online.target
After=network-online.target
[Service]
ExecStart=/usr/sbin/edge -l node_paris_ip:1200 -c Vultr -a 192.168.1.2 -k mypassword -f
[Install]
WantedBy=multi-user.target
Nota : Gantikan node_paris_ip
dengan IP awam contoh yang berjalan di Paris
Ini akan menyambung ke simpul di Paris pada port UDP 1200
, menyertai komuniti ' Vultr
', menuntut IP 192.168.1.2
dan mengesahkan dengan ' mypassword
'.
Seterusnya, mulakan perkhidmatan.
systemctl start n2n_edge
Periksa status untuk menunjukkan bahawa perkhidmatan telah dimulakan dengan betul dan sedang berjalan.
systemctl status n2n_edge
Seterusnya, pastikan edge0
IP dituntut.
ifconfig
Ia akan menunjukkan 192.168.1.2
alamat IP.
edge0 Link encap:Ethernet HWaddr 42:14:55:64:7d:21
inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::4014:55ff:fe64:7d21/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1400 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:648 (648.0 B)
Perkara seterusnya yang perlu dilakukan ialah mengaktifkan perkhidmatan semasa boot.
systemctl enable n2n_edge.service
Secara pilihan, dayakan firewall dan tambahkan peraturan SSH.
ufw allow 22/tcp
ufw enable
Sekarang kita akan dapat ping keduanya berjalan dalam keadaan kita.
Di Paris, ping contoh Vultr di Miami
ping 192.168.1.2
Di Miami, berada di pinggir bandar Paris
ping 192.168.1.1
Pemasangan - Node Sydney
Akhirnya, kami akan menambah benua terakhir kami kepada campuran: Australia. Mulakan sekali lagi dengan membuat perkhidmatan tepi, perkhidmatan tepi ini juga akan menyambung ke supernode yang dikonfigurasi sebelumnya di Paris.
nano /etc/systemd/system/n2n_edge.service
Tambahkan kandungan berikut.
[Unit]
Description=n2n edge
Wants=network-online.target
After=network-online.target
[Service]
ExecStart=/usr/sbin/edge -l node_paris_ip:1200 -c Vultr -a 192.168.1.3 -k mypassword -f
[Install]
WantedBy=multi-user.target
Catatan : Gantikan node_paris_ip
dengan IP awam contoh yang dijalankan di Paris.
Ini akan menyambung ke simpul di Paris pada port UDP 1200
, menyertai komuniti ' Vultr
', menuntut IP 192.168.1.3
dan mengesahkan dengan ' mypassword
'.
systemctl start n2n_edge
Semak status untuk memastikan perkhidmatan bermula.
systemctl status n2n_edge
Pastikan edge0
IP dituntut.
edge0 Link encap:Ethernet HWaddr 46:56:b0:e9:8f:8a
inet addr:192.168.1.3 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::4456:b0ff:fee9:8f8a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1400 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:648 (648.0 B)
Sekali lagi, kembalikan perkhidmatan ini.
systemctl enable n2n_edge.service
Secara pilihan, dayakan firewall dan tambahkan peraturan SSH.
ufw allow 22/tcp
ufw enable
Sekarang kita akan dapat ping setiap contoh Vultr dari setiap nod.
ping 192.168.1.1
ping 192.168.1.2
ping 192.168.1.3
Sekiranya anda ingin menguji hubungan antara setiap tepi nod, membolehkan peraturan firewall mengenai keadaan Miami dan Paris. Ini akan membolehkan komunikasi antara tepi.
Di Miami, tambahkan peraturan berikut. (Pastikan penggantian node_paris_ip
dan node_sydney_ip
teks dengan IP umum mengenai keadaan Sydney dan Paris.)
ufw allow from node_paris_ip to any port 1200
ufw allow from node_sydney_ip to any port 1200
Di Sydney, tambah peraturan berikut.
ufw allow from node_paris_ip to any port 1200
ufw allow from node_miami_ip to any port 1200
Sekarang anda boleh mematikan atau menghidupkan semula supernode. Sambungan rangkaian akan terus wujud. Hanya bahagian baru yang mengalami masalah penyambungan semasa perkhidmatan supernode tergendala.
Kesimpulannya
Kami berjaya mengkonfigurasi sambungan VPN antara beberapa zon. Ini semestinya menawarkan banyak kemungkinan baru untuk senario ketersediaan tinggi ke persekitaran kita yang baru dikonfigurasi.