SSD Nodes Learn 🎉 VPS $5.50/மாதம் முதல்
கல்வி வழிகாட்டிகள் Matt Connorஆல் Matt Connor · புதுப்பிக்கப்பட்டது 2026-08-13

Ubuntu-வில் .onion தளம் உருவாக்குவது எப்படி?

Ubuntu VPS-ல் Tor மற்றும் Nginx பயன்படுத்தி v3 onion சேவையை அமைக்கும் முறை. உங்கள் பொது IP முகவரி கசியாமல் பாதுகாப்பாக ஒரு தளம் உருவாக்குவதற்கான முழுமையான வழிகாட்டி இது.

நீங்கள் உருவாக்குவது என்ன

ஒரு onion தளம் என்பது Tor நெட்வொர்க் வழியாக மட்டுமே பதிலளிக்கும் ஒரு சாதாரண இணைய சேவையகம் (web server) ஆகும். Tor-ஐ நிறுவி, /etc/tor/torrc-ல் இரண்டு வரிகளைச் சேர்த்து, Tor உங்களுக்காக உருவாக்கும் முகவரியைப் படித்து, பின் Nginx-ஐ 127.0.0.1-ல் பிணைக்க வேண்டும் (bind). இதன் மூலம் பொது IP-ல் எந்தப் பதிலுமிருக்காது. நிறுவல் பகுதிக்கு பத்து நிமிடங்கள் மட்டுமே ஆகும். இந்த வழிகாட்டியின் மீதமுள்ள பகுதி கசிவுப் பட்டியல் (leak list) ஆகும்; ஏனெனில், ஒரு onion தளம் தோல்வியடைவதற்கான பொதுவான காரணம், அதன் சொந்த உள்ளமைவு (configuration) நேரடியாக இயக்குபவரை அடையாளம் காட்டுவதுதான்.

Tor என்பது "the onion router" என்பதன் சுருக்கம். ஒரு onion சேவை என்பது அதன் வழியாக மட்டுமே நீங்கள் அணுகக்கூடிய ஒரு சேவையாகும். ஒரு பதிப்பு 3 (version 3) முகவரி என்பது 56 எழுத்துக்களைத் தொடர்ந்து .onion என்பதைக் கொண்டிருக்கும். அந்த எழுத்துக்கள் சேவையின் ed25519 பொதுச் சாவி (public key), ஒரு checksum மற்றும் ஒரு பதிப்பு பைட் (version byte) ஆகியவற்றின் base32 குறியாக்கமாகும். பதிப்பு 2 முகவரிகள் (16 எழுத்துக்கள்) 2021-ல் நெட்வொர்க்கிலிருந்து நீக்கப்பட்டுவிட்டன, எனவே இன்று நீங்கள் உருவாக்கும் அனைத்தும் v3 ஆகும். முகவரியே சாவியாகச் செயல்படுகிறது, இதற்கு இரண்டு விளைவுகள் உள்ளன. இணைப்பு எந்தவொரு certificate authority-யும் இன்றி முனையிலிருந்து முனைக்கு (end to end) குறியாக்கம் மற்றும் அங்கீகாரம் செய்யப்படுகிறது; மேலும், சாவி கோப்பை (key file) இழப்பது என்பது முகவரியை நிரந்தரமாக இழப்பதாகும்.

உங்கள் சேவையகம் உள்வரும் இணைப்புகளை (inbound connection) ஒருபோதும் ஏற்பதில்லை. Tor சில relays-களை அறிமுகப் புள்ளிகளாக (introduction points) தேர்வு செய்கிறது, ஒரு கையொப்பமிடப்பட்ட descriptor-ஐ directory servers-க்கு பதிவேற்றுகிறது, மேலும் பார்வையாளர் தேர்ந்தெடுத்த ஒரு rendezvous relay-ல் ஒவ்வொரு பார்வையாளரையும் சந்திக்கிறது. அந்த இணைப்புகள் அனைத்தும் உங்கள் கணினியிலிருந்து வெளிச்செல்லும் (outbound) இணைப்புகளே. திறக்க வேண்டிய port-களோ அல்லது வெளியிட வேண்டிய DNS பதிவுகளோ இதில் இல்லை.

Tor Project repository-லிருந்து Tor-ஐ நிறுவுதல்

Ubuntu-வின் universe repository-ல் tor package உள்ளது, ஆனால் அந்த release-ன் போது இருந்த பழைய version-லேயே அது இருக்கும். Tor Project-ன் சொந்த repository தற்போதைய stable release-ஐ வழங்குகிறது. உங்கள் IP address-ன் பாதுகாப்பைத் தீர்மானிக்கும் மென்பொருளுக்கு இதுவே சிறந்தது.

sudo apt update
sudo apt install -y apt-transport-https gnupg wget
KEYURL=https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc
wget -qO- "$KEYURL" | gpg --dearmor | sudo tee /usr/share/keyrings/deb.torproject.org-keyring.gpg >/dev/null

இந்த repository entry deb822 format-ஐப் பயன்படுத்துகிறது, மேலும் Suites என்பது உங்கள் Ubuntu codename-ஆக இருக்க வேண்டும். இதை நீங்களாகத் தட்டச்சு செய்வதற்குப் பதிலாக /etc/os-release-லிருந்து படித்துப் பெறவும்; தவறான codename-ஐக் கொடுத்தால், repository சரியாக வேலை செய்வது போலத் தெரிந்தாலும், உங்கள் release-க்குத் தேவையான packages கிடைக்காது.

. /etc/os-release
sudo tee /etc/apt/sources.list.d/tor.sources >/dev/null <<EOF
Types: deb deb-src
URIs: https://deb.torproject.org/torproject.org/
Suites: $VERSION_CODENAME
Components: main
Signed-By: /usr/share/keyrings/deb.torproject.org-keyring.gpg
EOF
sudo apt update
sudo apt install -y tor deb.torproject.org-keyring

deb.torproject.org-keyring package signing key-ஐ எப்போதும் புதுப்பித்த நிலையில் வைத்திருக்கும், எனவே ஒரு வருடம் கழித்து key rotation நடக்கும்போது apt update-ல் எந்தப் பாதிப்பும் ஏற்படாது. Tor தொடங்கி network-ஐ அடைந்துவிட்டதா என்பதைச் சரிபார்க்கவும்:

tor --version
sudo journalctl -u tor@default -n 20

Journal-ன் இறுதியில் Bootstrapped 100% (done): Done என்று இருக்க வேண்டும். Tor Bootstrapped 10%-ல் சிக்கியிருந்தால், அதற்கு வெளியே செல்லும் வழி இல்லை என்று அர்த்தம். எனவே உங்கள் provider-ன் network firewall மற்றும் உங்கள் சொந்த egress rules-ஐச் சரிபார்க்கவும்: sudo ufw status verbose கட்டளையில் allow (outgoing) default-ஆகக் காட்டப்பட வேண்டும்.

இனி வரும் பகுதிகளில் இரண்டு பெயர்கள் முக்கியமானவை. இந்த package Tor-ஐ debian-tor user-ஆக இயக்குகிறது, மேலும் இயங்கும் unit-ன் பெயர் tor@default.service ஆகும். ஏனெனில் Debian மற்றும் Ubuntu-வில் tor.service என்பது அந்த instance-ஐக் கையாளும் ஒரு wrapper ஆகும். status மற்றும் logs-ஐப் பார்க்க எப்போதும் அந்த instance பெயரையே பயன்படுத்தவும், அப்போதுதான் உண்மையான process-ன் தகவல்கள் கிடைக்கும்.

torrc-ல் onion service-ஐ உள்ளமைத்தல்

/etc/tor/torrc-ல் பின்வரும் இரண்டு வரிகளைச் சேர்க்கவும்:

HiddenServiceDir /var/lib/tor/onion_site/
HiddenServicePort 80 127.0.0.1:8080

HiddenServiceDir என்பது tor இந்த service-க்கான keys மற்றும் முகவரியைச் சேமிக்கும் இடமாகும். இதை நீங்களாக உருவாக்க வேண்டாம். Tor தொடங்கும்போதே தேவையான உரிமையாளர் (owner) மற்றும் mode-உடன் இதை உருவாக்கும். root பயனராக நீங்கள் ஒரு directory-ஐ உருவாக்கினால், கீழே உள்ள பிழைகளின் பட்டியலில் முதல் பிழை ஏற்படும்.

HiddenServicePort இரண்டு பகுதிகளைக் கொண்டது, அவற்றை மாற்றி அமைப்பதுதான் பொதுவாக நடக்கும் முதல் தவறு. முதல் எண், tunnel-க்குள் ஒரு பயனர் இணையும் port ஆகும், எனவே 80 என்பது அனைவரும் எதிர்பார்ப்பது, அதை மாற்ற வேண்டிய அவசியம் இல்லை. இரண்டாவது பகுதி, tor அந்த traffic-ஐ அனுப்பும் local முகவரி ஆகும். ஒரு வெறும் HiddenServicePort 80 என்பது 127.0.0.1:80-க்கு traffic-ஐ அனுப்பும், எனவே முகவரியை முழுமையாகக் குறிப்பிட்டு ஒரு high port-ஐப் பயன்படுத்துவது, 80-வது port-ல் ஏற்கனவே இயங்கிக்கொண்டிருக்கும் எதனுடனும் onion vhost மோதாமல் இருக்க உதவும்.

sudo systemctl restart tor@default
sudo ls -l /var/lib/tor/onion_site/

இந்த பட்டியலில் hostname, hs_ed25519_public_key, hs_ed25519_secret_key மற்றும் காலியான authorized_clients directory ஆகியவை இருக்க வேண்டும்.

உங்கள் .onion முகவரியை வாசித்தல்

sudo cat /var/lib/tor/onion_site/hostname

ஒரு வரி வெளியீடாக வரும்: 56 base32 எழுத்துக்கள் மற்றும் .onion. அந்த string-தான் அந்த தளத்தின் முழு அடையாளமும் ஆகும். இதை யாரும் ஒதுக்கீடு செய்வதில்லை, யாரும் மாற்ற முடியாது, மேலும் உங்களிடம் key file இருக்கும் வரை யாரும் இதை பறிக்க முடியாது. இதை இப்போதே நகலெடுத்துக் கொள்ளுங்கள், ஏனெனில் கீழே உள்ள ஒவ்வொரு configuration-க்கும் இது தேவைப்படும். இந்த வழிகாட்டியின் மீதமுள்ள பகுதிகளில் இது <your-address>.onion என்று குறிப்பிடப்படும்.

nginx-ஐ 127.0.0.1-ல் பிணைத்து தளத்தை இயக்குதல்

sudo apt install -y nginx
sudo install -d -m 755 /srv/onion

/etc/nginx/sites-available/onion-ஐ எழுதவும்:

server {
    listen 127.0.0.1:8080;
    server_name <your-address>.onion;

    root /srv/onion;
    index index.html;

    server_tokens off;
    etag off;
    access_log off;
    error_log /var/log/nginx/onion.error.log error;
}
echo '<h1>hello from the onion</h1>' | sudo tee /srv/onion/index.html
sudo ln -s /etc/nginx/sites-available/onion /etc/nginx/sites-enabled/onion
sudo nginx -t
sudo systemctl reload nginx

இப்போது server-லிருந்து இரண்டு விஷயங்களை உறுதிப்படுத்தவும். முதலாவது, tor அனுப்பும் துல்லியமான Host header-க்கு nginx பதிலளிக்கிறதா என்பது:

curl -s -H 'Host: <your-address>.onion' http://127.0.0.1:8080/

இரண்டாவது, அது அந்த இடத்தில் மட்டுமே பதிலளிக்கிறதா என்பது:

sudo ss -tlnp | grep 8080

Address நெடுவரிசையில் 127.0.0.1:8080 என்று இருக்க வேண்டும். அது 0.0.0.0:8080 அல்லது *:8080 என்று இருந்தால், உங்கள் onion தளம் பொது இணையத்திலும் கிடைக்கிறது என்று அர்த்தம்; இது கசிவுப் பட்டியலில் உள்ள முதல் அம்சமாகும். முகவரி இல்லாத listen 8080; வரி அனைத்து interface-களையும் பிணைக்கும், இதுவே default அமைப்பாகும்.

Tor Browser-ல் அந்த முகவரியைத் திறக்கவும். client உங்கள் descriptor-ஐப் பெற்று rendezvous circuit-ஐ உருவாக்கும் வரை முதல் முறை ஏற்றுவதற்குச் சில நொடிகள் ஆகும்.

Tor Project-ன் ஆவணங்கள் loopback port-க்கு பதிலாக unix socket-ஐப் பரிந்துரைக்கின்றன: HiddenServicePort 80 unix:/var/run/tor/onion_site.sock, இதில் nginx அந்தப் பாதையில் listening நிலையில் இருக்கும். ஒரு socket-ஐ வேறொரு host-லிருந்து அணுகவே முடியாது, பிற்காலத்தில் அந்த server-ல் இரண்டாவது interface சேர்க்கப்பட்டாலும் இது பொருந்தும். இதில் உள்ள சவால் கோப்பு அனுமதிகள் (file permissions) ஆகும்; ஏனெனில் nginx socket-ஐ உருவாக்குகிறது, tor அதை debian-tor ஆக இணைக்கிறது, எனவே இந்த இரண்டு பயனர்களும் அந்த directory-ஐப் பகிர்ந்து கொள்ள வேண்டும். சரிபார்க்கப்பட்ட ss வெளியீட்டைக் கொண்ட loopback முறையைச் சரியாக அமைப்பது எளிது, இந்த வழிகாட்டியின் பிற பகுதிகள் இதையே அடிப்படையாகக் கொண்டுள்ளன.

தளம் loopback-ல் இருக்கும்போது, server-க்கு உள்வரும் (inbound) விதிகள் எதுவும் தேவையில்லை. உங்களுக்காக 22-ஐ மட்டும் திறந்து வைத்துவிட்டு மற்றவற்றை மறுக்கவும் (VPS-ல் அமைக்க வேண்டிய ufw default விதிகள்). 0.0.0.0-ல் பிணைக்கப்பட்டுள்ள ஒரு service-ஐ firewall மாற்றாது என்பதை நினைவில் கொள்க, அது firewall-ஐ வந்தடையும் பாக்கெட்டுகளை மட்டுமே வடிகட்டும். Containers பயன்படுத்தும்போது இது இன்னும் கவனமாக இருக்க வேண்டிய விஷயம், ஏனெனில் Docker port-ஐ வெளியிடுவது ufw-க்கு முன்பே iptables விதிகளை எழுதிவிடும், இதனால் -p 8080:80 உங்கள் onion backend-ஐ பொது IP-ல் வைத்துவிடும், அதே சமயம் ufw அந்த port மறுக்கப்பட்டதாகவே காட்டும். Container port-களை -p 127.0.0.1:8080:80 ஆக வெளியிடவும்.

ஒரு onion site-ன் அடையாளத்தை வெளிப்படுத்தும் கசிவுகள்

Tor உங்கள் server இருக்கும் இடத்தை மறைக்கிறது. ஆனால், server என்ன சொல்கிறது என்பதை Tor மறைப்பதில்லை. கீழே உள்ள ஒவ்வொரு அம்சமும் உங்கள் stack மூலம் வெளியிடப்படுபவை.

உங்கள் public IP-ல் அதே தளம் பதிலளித்தல்

இதுதான் பலரை சிக்க வைக்கும் விஷயம். ஸ்கேனர்கள் (scanners) ஒவ்வொரு routable address-ன் HTTP பதிலையும் தொடர்ந்து index செய்கின்றன; அந்த முடிவுகள் பொதுவானவை மற்றும் தேடக்கூடியவை. உங்கள் public IP மற்றும் onion address இரண்டிலும் ஒரே பக்கத்தை வழங்கினால், ஒரே ஒரு query மூலம் இரண்டையும் இணைத்துவிடலாம்: ஒரே title, ஒரே favicon hash, ஒரே ETag, ஒரே header வரிசை. மேலே உள்ள listen 127.0.0.1:8080; வரியே இதற்கான தீர்வு. இதை server-லிருந்து சரிபார்க்காமல், வேறொரு machine-லிருந்து சரிபார்க்கவும்:

curl -sv --max-time 5 http://<your-public-ip>:8080/

Connection refused அல்லது ஒரு timeout கிடைப்பதே சரியான முடிவு. ஏதேனும் HTML தெரிந்தால், அந்த தளம் பொதுவெளியில் உள்ளது என்று அர்த்தம். அந்த server-ல் clearnet தளமும் இயங்கினால், அந்த vhost-க்கு தனி root-ஐ ஒதுக்கி, public listener-ல் ஒரு தெளிவான default_server block-ஐ வைத்திருக்கவும். அப்போதுதான், பொருந்தாத Host header ஒருபோதும் onion vhost-க்கு செல்லாது.

Version banners

curl -sI http://127.0.0.1:8080/ | grep -i '^server'

ஒரு default nginx, Server: nginx/1.24.0 என்று பதிலளிக்கும். அந்த version string மற்றும் பிற header-களின் துல்லியமான வரிசை ஆகியவை, உங்கள் onion தளத்தை உங்கள் clearnet host-உடன் இணைக்கும் ஒரு fingerprint ஆகும். server_tokens off; இதை Server: nginx ஆகக் குறைக்கும். இது header-ஐ நீக்காது; இதை நீக்க nginx-ல் உள்ளமைக்கப்பட்ட directive எதுவும் இல்லை, எனவே இதை நீக்க விரும்பினால் headers-more module-ஐப் பயன்படுத்துவதே வழக்கமான வழி. நீங்கள் expose_php = Off-ஐ அமைக்கும் வரை PHP, X-Powered-By-ஐச் சேர்க்கும். etag off;-ம் இதே பட்டியலில் சேரும், ஏனெனில் ஒரு கோப்பின் மாற்ற நேரம் (modification time) மற்றும் அளவைக் கொண்டு nginx ETag-ஐ உருவாக்குகிறது. எனவே, இரண்டு server-களில் ஒரே கோப்புகளை நகலெடுக்கும்போது, அவை இரண்டிலும் ஒரே ETag-ஐக் கொடுக்கும்.

உங்கள் clearnet domain-ஐக் குறிக்கும் Absolute URLs

ஒரு rel="canonical" tag, ஒரு Open Graph og:url, ஒரு RSS feed, ஒரு sitemap, கடவுச்சொல் மாற்றும் மின்னஞ்சல், அல்லது hardcoded செய்யப்பட்ட logo URL. இவை ஒவ்வொன்றும் onion வழியாக வழங்கப்படும் பக்கத்திற்குள் clearnet தளத்தின் பெயரை வெளிப்படுத்தும். /static/logo.svg போன்ற root-relative பாதைகளைப் பயன்படுத்தவும், மேலும் application அதன் base URL-ஐ constant-ஆக இல்லாமல், request host-லிருந்து படிக்க அனுமதிக்கவும். Redirect-களும் இதே போன்ற பிழையை வேறொரு இடத்தில் உருவாக்குகின்றன: catch-all block-ல் உள்ள return 301 https://example.com$request_uri;, onion பார்வையாளரை உங்கள் உண்மையான domain-க்கு அனுப்பிவிடும், மேலும் Location header அவர்களுக்கு நேரடியாக பதிலை அளிக்கும்.

Clearnet தளத்துடன் பகிரப்படும் TLS certificate

ஒரு onion address தன்னைத்தானே உறுதிப்படுத்திக் கொள்கிறது, ஏனெனில் அந்த முகவரியே ஒரு public key ஆகும். எனவே, onion இணைப்பின் வழியாகச் செல்லும் http:// ஏற்கனவே end-to-end என்க்ரிப்ட் செய்யப்பட்டுள்ளது, மேலும் Tor Browser இதை ஒரு பாதுகாப்பான சூழலாகக் கருதுகிறது. உங்கள் தற்போதைய certificate-ஐ onion vhost-ல் நிறுவுவது, இரண்டிற்கும் இடையிலான தொடர்பை வெளிப்படுத்திவிடும். ஏனெனில், பொதுமக்களால் நம்பப்படும் ஒவ்வொரு certificate-ம் Certificate Transparency logs-ல் பதிவு செய்யப்படுகிறது, மேலும் அந்த logs பொதுவானவை, நிரந்தரமானவை மற்றும் பெயரைக் கொண்டு தேடக்கூடியவை. clearnet vhost-ல் Let's Encrypt certificates-ஐ வைத்துக்கொண்டு, onion vhost-ஐ plain HTTP-ல் விடவும்.

மூன்றாம் தரப்பு எழுத்துருக்கள் (fonts) மற்றும் பகுப்பாய்வு (analytics)

ஒரு CDN-லிருந்து வரும் எழுத்துரு அல்லது ஒரு analytics script. பார்வையாளரின் browser ஒவ்வொன்றையும் நேரடியாகப் பெறுகிறது, எனவே மூன்றாம் தரப்பு நிறுவனம் ஒருவர் உங்கள் பக்கத்தை ஏற்றினார் என்பதையும், பொதுவாக எந்தப் பக்கத்தை ஏற்றினார் என்பதையும் தெரிந்துகொள்கிறது. Tor Browser-ன் கடுமையான பாதுகாப்பு நிலைகள் எப்படியும் இந்த request-ஐத் தடுக்கும், இதனால் தளத்தின் வடிவமைப்பு சிதைந்துவிடும். பக்கத்திற்குத் தேவையான ஒவ்வொரு asset-ஐயும் நீங்களே host செய்யவும்.

Host header பொருந்தாமை

server_name என்பது tor அனுப்பும் Host header-உடன் பொருந்தவில்லை என்றால், nginx அந்த listen address-க்கான default server-க்குத் திரும்பிவிடும். ஒரே ஒரு vhost உள்ள server-ல் இது தெரிவதில்லை, ஏனெனில் ஒரே ஒரு server block மட்டுமே default-ஆக இருக்கும். பிறகு ஒரு clearnet vhost-ஐச் சேர்த்தால், onion request-கள் அதன் canonical tags மற்றும் redirects-உடன் அதில் விழத் தொடங்கலாம். ஒவ்வொரு nginx மாற்றத்திற்குப் பிறகும் curl -H 'Host: ...' சோதனையை மீண்டும் இயக்கவும், மேலும் உங்கள் உண்மையான domain-ஐக் கண்டறிய grep-ஐப் பயன்படுத்தவும்:

curl -s -H 'Host: <your-address>.onion' http://127.0.0.1:8080/ | grep -o 'https\?://[^"]*' | sort -u

எந்த process எந்த socket-ஐக் கொண்டுள்ளது என்பதை அறிவதே இந்த வேலையின் பெரும்பகுதி (Linux-ல் ports மற்றும் listening sockets எவ்வாறு செயல்படுகின்றன).

Logs-ல் எஞ்சியிருப்பவை

ஒவ்வொரு request-ம் 127.0.0.1-லிருந்து வருவதால், nginx-க்கு பதிவு செய்ய பார்வையாளரின் முகவரி எதுவும் இல்லை, எனவே access_log off; உங்களுக்கு எந்த பாதிப்பையும் ஏற்படுத்தாது. அதற்கு மேல் இயங்கும் application வேறு விஷயம், ஏனெனில் ஒரு order, மின்னஞ்சல் முகவரி அல்லது பதிவேற்றப்பட்ட கோப்பின் metadata ஆகியவற்றை நீங்கள் கையாள வேண்டும். உங்கள் சொந்த பழக்கவழக்கங்களும் முக்கியம்: Tor பாதுகாக்கும் எதற்கும் அப்பாற்பட்டு, பாதுகாப்பற்ற login மூலம் server-ஐ நிர்வகிப்பது ஆபத்தானது, எனவே அதே VPS-ல் SSH-ஐப் பாதுகாத்தல் என்பதை இந்த உருவாக்கத்தின் ஒரு பகுதியாகக் கருதவும்.

Private key-ஐ backup எடுக்கவும், ஏனெனில் அதுவே முகவரி (address) ஆகும்

/var/lib/tor/onion_site/hs_ed25519_secret_key என்பது அந்த service ஆகும். இதற்கு registrar அல்லது recovery வசதி கிடையாது. இதை இழந்துவிட்டால், அந்த முகவரி நிரந்தரமாக அழிந்துவிடும். இதை நகலெடுத்தால், அந்த நகலை வைத்திருப்பவர் உங்கள் முகவரியிலேயே அவர்களது சொந்த content-ஐ வழங்க முடியும்; அதைத் தடுப்பதற்கோ அல்லது ரத்து செய்வதற்கோ உங்களிடம் எந்த வழியும் இருக்காது.

sudo systemctl stop tor@default
sudo tar -C /var/lib/tor -czf onion-keys.tgz onion_site
sudo chmod 600 onion-keys.tgz
sudo systemctl start tor@default

அந்த archive-ஐ (gpg -c onion-keys.tgz) encrypt செய்து, server-லிருந்து வெளியே நகர்த்தவும். புதிய VPS-ல் restore செய்வதற்கு, அந்த archive மற்றும் tor எதிர்பார்க்கும் ownership அனுமதி ஆகியவை தேவை:

sudo systemctl stop tor@default
sudo tar -C /var/lib/tor -xzf onion-keys.tgz
sudo chown -R debian-tor:debian-tor /var/lib/tor/onion_site
sudo chmod 700 /var/lib/tor/onion_site
sudo systemctl start tor@default
sudo cat /var/lib/tor/onion_site/hostname

புதிய hardware-ல் tor descriptor-ஐ மீண்டும் வெளியிட்ட ஓரிரு நிமிடங்களில், அதே முகவரி மீண்டும் செயல்படத் தொடங்கும். இதுவே முழுமையான migration செயல்முறை: இதில் DNS மாற்றம் அல்லது certificate-ஐ மீண்டும் பெற வேண்டிய அவசியம் இல்லை.

Onion-Location, தளம் clearnet-லும் இயங்கும்போது

Onion சேவை என்பது ரகசியமானது அல்ல, ஒரு வசதி மட்டுமே என்றால், அதை clearnet vhost-லிருந்து விளம்பரப்படுத்தலாம்:

add_header Onion-Location http://<your-address>.onion$request_uri;

இப்போது Tor Browser முகவரிப் பட்டியில் .onion available பொத்தானைக் காட்டி, அந்தச் சேவைக்கு மாறப் பரிந்துரைக்கும். clearnet பக்கம் HTTPS வழியாக வழங்கப்பட்டு, அதன் மதிப்பு சரியான onion URL-ஆக இருந்தால் மட்டுமே இந்த header ஏற்றுக்கொள்ளப்படும்.

இங்கு nginx விதியொன்று கவனிக்கத்தக்கது. ஒரு location தொகுதியில் சொந்தமாக எந்த header-ம் வரையறுக்கப்படாதபோது மட்டுமே, add_header directives-கள் அந்தத் தொகுதிக்கு மரபுரிமையாகக் (inherited) கிடைக்கும். எனவே, சொந்தமாக add_header கொண்ட ஒரு location, Onion-Location-ஐ அமைதியாக நீக்கிவிடும். அதை மீண்டும் அங்கு குறிப்பிடவும் அல்லது அனைத்து response headers-களையும் ஒரே இடத்தில் வைத்திருக்கவும். இந்த header-ஐ வெளியிடுவது இரண்டு தளங்களையும் வேண்டுமென்றே இணைக்கிறது; இது ஒரு mirror தளத்திற்குச் சரியானது, ஆனால் இணைக்கப்படக் கூடாத தளங்களுக்கு இது தவறானது.

Vanity addresses

நீங்கள் கோரிய முன்னொட்டுடன் (prefix) தொடங்கும் முகவரி கிடைக்கும் வரை mkp224o விசை இணைகளை (key pairs) உருவாக்குகிறது. இது ஒரு brute force தேடல் என்பதால், முன்னொட்டு மற்றும் நீங்கள் காத்திருக்கத் தயாராக இருக்கும் நேரத்தைத் தவிர வேறு எதையும் உள்ளமைக்கத் தேவையில்லை.

sudo apt install -y git gcc libc6-dev libsodium-dev make autoconf
git clone https://github.com/cathugger/mkp224o
cd mkp224o
./autogen.sh
./configure --enable-amd64-51-30k
make
./mkp224o -d onionkeys blog

ஒவ்வொரு வெற்றியும் hostname மற்றும் hs_ed25519_secret_key ஆகியவற்றைக் கொண்ட onionkeys/<address>.onion/-ல் சேமிக்கப்படும். tor-ஐ நிறுத்திவிட்டு, அந்த கோப்பகத்தை உங்கள் HiddenServiceDir-க்கு நகலெடுத்து, மேலே உள்ள மீட்டெடுப்பு முறையைப் போலவே அதே chown மற்றும் chmod 700-ஐப் பயன்படுத்துவதன் மூலம் ஒன்றை நிறுவவும்.

முன்னொட்டின் நீளமே முழுச் செலவையும் தீர்மானிக்கிறது. முகவரி base32 வடிவில் இருப்பதால், நீங்கள் கோரும் ஒவ்வொரு கூடுதல் எழுத்தும் எதிர்பார்க்கப்படும் விசை எண்ணிக்கையை 32 மடங்காக அதிகரிக்கிறது. ஒரு சிறிய முன்னொட்டு மடிக்கணினியிலேயே முடிந்துவிடும். நீண்ட முன்னொட்டு உங்களால் சொந்தமாக வைத்திருக்கக்கூடிய எதிலும் முடிவடையாது. ஒரு vanity முன்னொட்டு, வாசகர்களுக்கு முழு முகவரிக்கு பதிலாக முதல் சில எழுத்துக்களை மட்டும் அடையாளம் காணக் கற்றுக்கொடுக்கிறது; onion தளங்களின் phishing நகல்கள் இந்த பழக்கத்தை அடிப்படையாகக் கொண்டே உருவாக்கப்படுகின்றன.

தோல்விக்கான காரணங்கள் மற்றும் நீங்கள் காணும் செய்திகள்

மறுதொடக்கம் செய்த பிறகு hostname கோப்பு இல்லை. Tor தொடங்கவில்லை அல்லது அந்த கோப்பகத்தை அது ஏற்கவில்லை. sudo journalctl -u tor@default -n 50 அதைக் குறிப்பிடுகிறது:

/var/lib/tor/onion_site/ is not owned by this user (debian-tor, 108) but by root (0). Perhaps you are running Tor as the wrong user?

கைமுறையாக உருவாக்கப்பட்ட கோப்பகம் இவ்வாறுதான் இருக்கும். அதன் உரிமையாளர் (ownership) மற்றும் பயன்முறை (mode) ஆகியவற்றைச் சரிசெய்யவும், அல்லது அந்த கோப்பகத்தை நீக்கிவிட்டு Tor-ஐயே அதை உருவாக்க அனுமதிக்கவும்.

Tor Browser Onionsite Not Found (0xF0) பிழையைக் காட்டுகிறது. கிளையண்டால் ஒரு descriptor-ஐப் பெற முடியவில்லை, எனவே அந்த முகவரியில் நெட்வொர்க்கைப் பொறுத்தவரை எதுவும் வெளியிடப்படவில்லை. Tor இயங்குகிறதா மற்றும் bootstrapped நிலையில் உள்ளதா என்பதை உறுதிப்படுத்தவும், நீங்கள் உள்ளிட்ட முகவரியை sudo cat /var/lib/tor/onion_site/hostname உடன் எழுத்து வாரியாக ஒப்பிடவும், பின்னர் நேரத்தைச் சரிபார்க்கவும். Descriptor-களை வெளியிடவும் சரிபார்க்கவும் Tor-க்கு துல்லியமான நேரம் தேவை, மேலும் timedatectl ஆனது System clock synchronized: yes என்று காட்ட வேண்டும்.

முகவரி சரியாக உள்ளது ஆனால் பக்கம் ஏற்றப்படவில்லை. Tor rendezvous-ஐ முடித்துவிட்டது, ஆனால் கடைசி கட்டத்தில் (Tor-லிருந்து Nginx-க்கு) தோல்வியடைந்தது. அந்த இணைப்பு உள்ளூர் (local) என்பதால் Tor log-ல் எந்தத் தகவலும் இருக்காது. சர்வரில் curl -sI http://127.0.0.1:8080/ கட்டளையை இயக்கவும். Connection refused என்பது Nginx இயங்கவில்லை அல்லது HiddenServicePort சுட்டிக்காட்டும் முகவரியிலிருந்து வேறுபட்ட முகவரியில் அது இயங்குகிறது என்று பொருள்.

பக்கம் ஏற்றப்படுகிறது, ஆனால் அனைத்து இணைப்புகளும் உங்கள் உண்மையான டொமைனுக்கே செல்கின்றன. டெம்ப்ளேட்களில் முழுமையான (absolute) URL-கள் உள்ளன. மேலே உள்ள grep -o 'https\?://[^"]*' சோதனையை இயக்கி, முகவரியைப் பகிர்வதற்கு முன்பாக அது காட்டும் பிழைகளைச் சரிசெய்யவும்.

மறுதொடக்கம் செய்த பிறகு வேலை செய்யவில்லை. தளத்தை நம்பகமானதாகப் பயன்படுத்துவதற்கு முன்பு, ஒருமுறை திட்டமிட்டு கணினியை மறுதொடக்கம் செய்யவும், பின்னர் sudo systemctl status tor@default மற்றும் sudo systemctl status nginx கட்டளைகளை இயக்கவும். ஒருவர் கைமுறையாகத் தொடங்கிய ஒரு சேவை, கணினி மறுதொடக்கம் செய்யப்படும் வரை, தானாக இயங்கும்படி அமைக்கப்பட்ட (enabled) சேவையைப் போலவே தோன்றும்.

FAQ

Tor onion service-க்கு firewall-ல் port-ஐத் திறக்க வேண்டுமா?

தேவையில்லை. Tor daemon வெளிநோக்கிய இணைப்புகளை (outbound connections) மட்டுமே உருவாக்குகிறது; directory servers, introduction points மற்றும் ஒவ்வொரு rendezvous relay-க்கும் இது பொருந்தும். எனவே, உள்வரும் இணைப்புகளுக்கு (inbound rule) எந்த விதியும் தேவையில்லை. Web server-ஆனது 127.0.0.1-ல் மட்டுமே கேட்கும் (listen). SSH-ஐ அனுமதித்துவிட்டு, உள்வரும் traffic-க்கு ufw-ஐ default deny நிலையில் வைத்திருங்கள். இந்தத் தன்மையால், பொது IP இல்லாத மற்றும் NAT (network address translation)-க்கு பின்னால் இருக்கும் machine-களிலும் onion service இயங்கும்.

Tor Browser-ல் எனது .onion முகவரியை ஏன் அணுக முடியவில்லை?

Server-லிருந்து வெளிப்புறமாகச் சோதிக்கத் தொடங்குங்கள். sudo journalctl -u tor@default -n 50 கட்டளை Bootstrapped 100% (done): Done-ஐக் காட்ட வேண்டும். பின், server-ல் உள்ள curl -sI http://127.0.0.1:8080/ ஒரு status வரியைத் தர வேண்டும். நீங்கள் உள்ளிட்ட முகவரியை hostname கோப்புடன் ஒப்பிட்டுப் பாருங்கள்; ஒரு எழுத்து மாறினாலும் அது வேறு ஒரு service-ஆகக் கருதப்படும். Onionsite Not Found (0xF0) என்பது அந்த முகவரிக்கு descriptor கிடைக்கவில்லை என்று பொருள். பொதுவாக, Tor இயங்கவில்லை என்றாலோ அல்லது system clock தவறாக இருந்தாலோ இது நிகழும்.

எனது onion site-ஐ புதிய server-க்கு மாற்றி அதே முகவரியைத் தக்கவைக்க முடியுமா?

ஆம். முகவரியானது hs_ed25519_secret_key-லிருந்து பெறப்படுகிறது. எனவே, முழு HiddenServiceDir கோப்பையும் புதிய machine-க்கு நகலெடுங்கள். அதன் உரிமையை debian-tor-க்கு மாற்றி, mode 700-ல் அமைத்து, Tor-ஐத் தொடங்குங்கள். Descriptor மீண்டும் பதிப்பிக்கப்பட்டவுடன் முகவரி செயல்படத் தொடங்கும்; DNS record எதையும் புதுப்பிக்க வேண்டியதில்லை. அந்தக் கோப்பைத் தொலைத்துவிட்டால் முகவரியை மீட்க முடியாது. எனவே, உருவாக்கிய அன்றே அதை encrypt செய்து, server-க்கு வெளியே backup எடுங்கள்.

Onion site-க்கு HTTPS certificate தேவையா?

தேவையில்லை. 56 எழுத்துகள் கொண்ட முகவரியே அந்த service-ன் public key ஆகும். எனவே, இணைப்பு ஏற்கனவே end-to-end முறையில் encrypt செய்யப்பட்டு, அங்கீகரிக்கப்பட்டிருக்கும். Tor Browser, .onion பெயரில் உள்ள http://-ஐ ஒரு பாதுகாப்பான சூழலாகவே கருதுகிறது. உங்கள் clearnet certificate-ஐ onion vhost-ல் பயன்படுத்துவது தேவையற்றது; ஏனெனில் Certificate Transparency logs பொதுவானவை, அவை எந்தெந்த பெயர்கள் ஒரே certificate-ஐப் பகிர்கின்றன என்பதை நிரந்தரமாகப் பதிவு செய்யும். ஒரு .onion பெயருக்கு certificate வாங்குவதற்கான ஒரே காரணம், CA வழங்கும் brand assurance மட்டுமே; ஆனால் அந்தத் தொடர்பு வடிவமைப்பிலேயே பொதுவானது.