วิธีตั้งค่า Tor Exit Node อย่างถูกต้องและปลอดภัย
เรียนรู้วิธีการรัน Tor Exit Node ตั้งแต่การเลือกผู้ให้บริการที่รองรับ การตั้งค่า Exit Policy การทำ Reverse DNS ไปจนถึงแนวทางการตอบกลับอีเมลแจ้งเหตุละเมิดอย่างมืออาชีพ
หน้าที่ของ Tor exit node และสถานะของผู้ให้บริการ
Tor exit node คือ relay ลำดับสุดท้ายในวงจร (circuit) ซึ่งเป็นเครื่องที่เปิดการเชื่อมต่อไปยังปลายทาง ดังนั้นปลายทางจะบันทึกที่อยู่ของเซิร์ฟเวอร์คุณแทนที่จะเป็นของผู้ใช้งาน การตัดสินใจทุกอย่างในคู่มือนี้ล้วนมีพื้นฐานมาจากข้อเท็จจริงนี้ ที่อยู่ดังกล่าวจะถูกมองว่าเป็นต้นทางของทุกสิ่งที่ส่งผ่านเข้ามา ดังนั้นมันจึงต้องเป็นที่อยู่ที่ไม่ถูกนำไปใช้ทำอย่างอื่น และต้องอยู่กับผู้ให้บริการที่ตกลงยินยอมให้มีการรับส่งข้อมูลประเภทนี้
การรัน exit node เป็นสิ่งที่ตรงกันข้ามกับการซ่อนตัว relay จะถูกระบุไว้ใน directory สาธารณะที่ใครก็สามารถดาวน์โหลดได้ ข้อมูลการติดต่อของคุณจะปรากฏอยู่ใน directory นั้นภายใต้ ContactInfo ส่วน reverse DNS (domain name system) ของคุณจะประกาศว่าเครื่องนี้คืออะไร พอร์ต 80 จะแสดงหน้าเว็บที่ระบุข้อมูลเดียวกัน และคุณจะต้องเป็นผู้ตอบกลับอีเมลแจ้งเหตุละเมิด (abuse mail) ด้วยตนเองภายใต้ชื่อของคุณเอง ไม่มีใครในระบบนี้ที่จะถูกระบุตัวตนได้ชัดเจนไปกว่าผู้ดูแล exit node นี่คือเนื้องาน และนี่คือเหตุผลที่งานนี้ดำเนินไปได้
เราดำเนินการสิ่งเหล่านี้ SSD Nodes ให้บริการ exit relay ในหลายประเทศเพื่อเป็นส่วนหนึ่งในการสนับสนุนเสรีภาพในการแสดงออก เราเช่าเครื่องเหล่านั้นจากผู้ให้บริการที่ตกลงยินยอมให้มีการรับส่งข้อมูลแบบ exit traffic โดยเฉพาะ และเราไม่ใช่ผู้ให้บริการสำหรับเครื่องเหล่านั้น ทั้งหมดนี้เป็นไปตามความตั้งใจ และส่วนถัดไปจะอธิบายเหตุผลว่าทำไม
สถานที่ที่ควรและไม่ควรวาง Exit Relay
Exit relay ไม่ควรวางบน VPS (virtual private server) แบบใช้งานทั่วไป ซึ่งรวมถึงบริการของเราด้วย เครือข่ายแบบใช้งานทั่วไปนั้นรองรับทั้งเว็บไซต์ อีเมล การสำรองข้อมูล และแผงควบคุมสำหรับลูกค้าหลายพันรายที่ไม่มีความเกี่ยวข้องกันบนหมายเลข IP ที่อยู่ใกล้เคียงกัน ทราฟฟิกจาก Exit relay จะทำให้หมายเลข IP เหล่านั้นไปปรากฏในรายงานการสแกนและรายการบล็อกสแปม ซึ่งส่งผลกระทบต่อผู้ใช้งานรายอื่นที่ใช้ IP ในกลุ่มเดียวกัน ผู้ให้บริการที่รองรับ Exit relay ได้อย่างเหมาะสมนั้นมีการเตรียมการไว้โดยเฉพาะ เช่น การจัดสรรช่วงหมายเลข IP สำหรับงานนี้โดยเฉพาะ และมีทีมงานรับเรื่องร้องเรียน (abuse desk) ที่มีความเข้าใจเกี่ยวกับ Tor เป็นอย่างดี
ดังนั้น ผู้ให้บริการที่เขียนคู่มือฉบับนี้จึงแนะนำให้คุณเช่าเครื่องจากที่อื่น นี่คือส่วนที่เป็นประโยชน์ เราทราบดีว่าทราฟฟิกจาก Exit relay ส่งผลอย่างไรต่อหมายเลข IP เพราะเราต้องจ่ายเงินให้ผู้อื่นเพื่อดูแลทราฟฟิกของเรา และเราจ่ายให้พวกเขาเพราะการจัดการทราฟฟิกเหล่านี้อย่างถูกต้องเป็นธุรกิจที่แตกต่างจากการขายเซิร์ฟเวอร์แบบใช้งานทั่วไป
ทาง Tor Project ได้กล่าวถึงเรื่องนี้ไว้อย่างตรงไปตรงมาเช่นกัน ในหน้า ประเภทของ relay ระบุว่า Exit relay "มีความเสี่ยงทางกฎหมายและความรับผิดชอบสูงที่สุดในบรรดา relay ทั้งหมด" และ "คุณไม่ควรใช้งาน Tor exit relay จากที่บ้านของคุณ" การใช้ VPS แบบใช้งานทั่วไปที่รันโปรเจกต์ส่วนตัวของคุณนั้นมีความเสี่ยงใกล้เคียงกับการรันจากที่บ้านมากกว่าที่คุณคิด เพราะมันคือเครื่องที่คุณให้ความสำคัญและเป็นหมายเลข IP ที่คุณต้องการรักษาความสะอาดไว้
หากคุณมี VPS ธรรมดาและต้องการช่วยเหลือเครือข่ายในสัปดาห์นี้ ให้รันเป็น non-exit relay หรือ bridge แทน นี่ไม่ใช่รางวัลปลอบใจ แต่มันเป็นงานที่แตกต่างและมีระดับความเสี่ยงที่ต่างออกไป ซึ่งเครือข่ายต้องการทั้งสองอย่าง Non-exit relay จะไม่เปิดการเชื่อมต่อไปยังปลายทางภายนอก จึงแทบไม่ได้รับเรื่องร้องเรียนใดๆ โดย Tor แนะนำว่าควรมีความเร็วอย่างน้อย 2 MByte/s (เมกะไบต์ต่อวินาที) ในแต่ละทิศทางจึงจะคุ้มค่าต่อการแสดงในรายการ ส่วน bridge คือจุดเชื่อมต่อที่ไม่ได้แสดงในรายการสำหรับผู้ใช้ในเครือข่ายที่ถูกเซ็นเซอร์ ซึ่งต้องการการเชื่อมต่อตลอด 24 ชั่วโมงทุกวันและเปิดพอร์ต TCP (transmission control protocol) หนึ่งพอร์ต ทำให้มันเป็นสิ่งที่เครื่องขนาดเล็กสามารถทำได้และมีคุณค่าสูงสุด ทั้งสองอย่างนี้เหมาะสมที่จะรันบนฮาร์ดแวร์ที่คุณมีอยู่แล้ว แต่ Exit relay ไม่ใช่สิ่งที่ควรทำบนนั้น
คุณจะหาผู้ให้บริการที่อนุญาตให้ทำ exit node ได้อย่างไร
ให้สอบถามเป็นลายลักษณ์อักษรก่อนสั่งซื้อและเก็บคำตอบนั้นไว้ แนวทางปฏิบัติสำหรับ exit node ของ Tor แนะนำให้ถามเป็นสองขั้นตอน: ขั้นแรกคือถามว่าผู้ให้บริการอนุญาตให้ทำ Tor exit node หรือไม่ และขั้นที่สองคือถามว่าจะจัดสรร IP address หรือช่วง IP เฉพาะสำหรับงานนี้ให้หรือไม่ การถามทั้งสองอย่างพร้อมกันมักจะได้รับคำปฏิเสธโดยอัตโนมัติ
คำถาม 4 ข้อต่อไปนี้จะช่วยให้คุณทราบว่าผู้ให้บริการรายนั้นพร้อมรองรับการใช้งานนี้จริงหรือไม่
- คุณจะจัดสรร IP address เฉพาะที่ไม่โฮสต์บริการอื่นให้หรือไม่ และคุณจะตั้งค่า reverse DNS record ตามที่ผมร้องขอได้หรือไม่?
- ใครเป็นผู้รับอีเมลแจ้งเหตุละเมิด (abuse mail) และคุณจะส่งต่ออีเมลนั้นมาให้ผมโดยไม่มีการแก้ไข พร้อมทั้งคงที่อยู่ของผู้รายงานไว้เพื่อให้ผมตอบกลับโดยตรงได้หรือไม่?
- จะเกิดอะไรขึ้นเมื่อมีการร้องเรียนเข้ามาครั้งแรก: คุณจะส่งต่อให้ผมก่อน หรือคุณจะ null-route IP address นั้นทันทีแล้วค่อยมาสอบถามภายหลัง?
- ปัจจุบันมี exit node อยู่บนเครือข่ายนี้กี่โหนดแล้ว? แนวทางของ Tor ระบุไว้อย่างชัดเจนว่า "การรวม exit node จำนวนมากไว้ที่ ISP ที่เป็นมิตรเพียงรายเดียวไม่ก่อให้เกิดประโยชน์"
คำถามข้อสุดท้ายมีความสำคัญมากกว่าที่เห็น ประโยชน์ส่วนหนึ่งของ exit node มาจากตำแหน่งที่ตั้งบนเครือข่าย การเพิ่ม exit node เข้าไปในเครือข่ายที่มีอยู่แล้ว 50 โหนด ย่อมมีค่าน้อยกว่าการติดตั้งเครื่องใหม่ในตำแหน่งที่ไม่เคยมีมาก่อน Relay Search จะแสดงให้เห็นว่าเครือข่ายใดมี exit node อยู่แล้วบ้าง ดังนั้นคุณควรตรวจสอบก่อนตัดสินใจ
จงหาคำตอบให้ได้ก่อนชำระเงิน และควรซื้อเครื่องโดยใช้บัญชีแยกต่างหาก แทนที่จะเพิ่มเข้าไปในบัญชีเดียวกับเซิร์ฟเวอร์อื่นของคุณ ความปลอดภัยของ VPS hosting ขึ้นอยู่กับว่าคุณวางสิ่งใดไว้ใกล้กับสิ่งใด และนี่คือตัวอย่างที่ชัดเจนที่สุดของกฎข้อนี้
หนึ่งที่อยู่ หนึ่งหน้าที่
ที่อยู่ของ exit relay ต้องไม่โฮสต์บริการอื่นใด ไม่ว่าจะเป็นเว็บไซต์, อีเมล, VPN, แดชบอร์ดสำหรับตรวจสอบระบบ หรือแม้แต่ SSH (secure shell) ส่วนตัว ที่อยู่นี้จะถูกเพิ่มลงใน blocklist และบริการอื่นใดที่ทำงานอยู่บนนั้นจะเริ่มทำงานผิดพลาดในลักษณะที่ตรวจสอบหาสาเหตุได้ยาก การใช้ที่อยู่สำหรับงานเดียวจะช่วยให้คุณตอบคำถามเมื่อมีข้อร้องเรียนได้สั้นและชัดเจนว่า: ที่อยู่นี้เป็นเพียง exit relay เท่านั้น ไม่ได้ให้บริการอื่น
ก่อนจะเริ่มติดตั้ง Tor ให้ดำเนินการตั้งค่าพื้นฐานให้เรียบร้อยก่อน เช่น การใช้ SSH แบบใช้กุญแจ (key-only) โดยปิดการล็อกอินด้วยรหัสผ่าน และการตั้งค่าไฟร์วอลล์ให้เปิดเฉพาะพอร์ตที่คุณต้องการเผยแพร่เท่านั้น บทความ การเพิ่มความปลอดภัยให้ SSH บน VPS ครอบคลุมเนื้อหาส่วนแรก และ พื้นฐานการใช้งาน ufw firewall ครอบคลุมส่วนที่สอง โดย exit relay จะเปิดเผยพอร์ตสู่สาธารณะเพียงสองพอร์ตเท่านั้น คือ ORPort สำหรับรับส่งทราฟฟิกของ Tor และพอร์ต 80 สำหรับหน้าแจ้งเตือนของ exit relay ส่วนพอร์ตอื่นๆ ทั้งหมดต้องปิดไว้
เปิดใช้งาน unattended upgrades เพื่อให้ระบบอัปเดตอัตโนมัติ เพราะการปล่อยให้ exit relay ทำงานบน Tor เวอร์ชันเก่าจะส่งผลกระทบต่อผู้ใช้งานทุกคนที่เชื่อมต่อผ่านโหนดของคุณ
sudo apt update && sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgradesห้ามเพิ่มการบันทึก log เพิ่มเติม การดักจับข้อมูลแบบ plaintext ที่ออกจาก exit relay นั้นทำได้ง่ายในทางเทคนิค และเป็นสิ่งเดียวที่ผู้ดูแลระบบต้องไม่ทำโดยเด็ดขาด EFF Tor legal FAQ ได้ระบุเตือนผู้ดูแลระบบไว้ เนื่องจากกฎหมายดักฟังข้อมูลในสหรัฐอเมริกาและกฎหมายที่คล้ายคลึงกันในประเทศอื่นอาจทำให้คุณต้องรับผิดชอบทางกฎหมายหากมีการตรวจสอบทราฟฟิกดังกล่าว ให้คงการตั้งค่าการบันทึก log ระดับ notice ตามค่าเริ่มต้นของ tor ไว้เท่านั้น และห้ามตั้งค่าอื่นเพิ่มเติม
ติดตั้ง Tor จาก repository ของ Tor Project
แพ็กเกจใน distribution มักจะล้าสมัย ให้ใช้ repository ของ Tor Project โดยตรงเพื่อให้ได้รับแพตช์ความปลอดภัยในวันที่ซอฟต์แวร์ถูกปล่อยออกมา ณ เดือนสิงหาคม 2026 รุ่น stable ปัจจุบันคือ 0.4.9
sudo apt update
sudo apt install -y apt-transport-https gnupg wget
lsb_release -csเขียนไฟล์ /etc/apt/sources.list.d/tor.sources โดยแทนที่ noble ด้วย codename ที่ lsb_release -cs แสดงผลออกมา:
Types: deb deb-src
URIs: https://deb.torproject.org/torproject.org/
Suites: noble
Components: main
Signed-By: /usr/share/keyrings/deb.torproject.org-keyring.gpgเพิ่ม signing key จากนั้นทำการติดตั้ง:
wget -qO- https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | gpg --dearmor | sudo tee /usr/share/keyrings/deb.torproject.org-keyring.gpg >/dev/null
sudo apt update
sudo apt install -y tor deb.torproject.org-keyring
tor --versionแพ็กเกจ deb.torproject.org-keyring จะคอยอัปเดต key ดังกล่าวให้เป็นปัจจุบันอยู่เสมอ เพื่อป้องกันไม่ให้ repository ใช้งานไม่ได้เมื่อมีการเปลี่ยน key หาก apt update แจ้งเตือนว่ามีการตั้งค่า repository ซ้ำกัน แสดงว่าคุณมีทั้งไฟล์ .list และไฟล์ .sources ที่ระบุถึง repository เดียวกัน ซึ่ง ข้อผิดพลาด deb822 duplicate source ได้อธิบายวิธีแก้ไขไว้แล้ว
DNS: exit node ของคุณจะทำหน้าที่ resolve ชื่อให้กับทุกคนที่ใช้งาน
Exit node จะทำหน้าที่ค้นหาชื่อ (name lookup) สำหรับทุก circuit ที่ผ่านเข้ามา ดังนั้นตัว resolver ของคุณจะเห็นกระแสข้อมูลของชื่อโดเมนที่ผู้อื่นใช้งาน หากคุณชี้ค่านี้ไปยัง public resolver ขนาดใหญ่ คุณกำลังส่งมอบข้อมูลทั้งหมดนั้นให้กับบริษัทเดียว ซึ่งเป็นการรวมศูนย์ที่ Tor ต้องการให้ผู้ดำเนินการ exit node หลีกเลี่ยง ให้คุณรัน validating, caching resolver บนเซิร์ฟเวอร์ของคุณเองแทน
sudo apt install -y unbound bind9-dnsutils
sudo cp /etc/resolv.conf /etc/resolv.conf.backup
echo "nameserver 127.0.0.1" | sudo tee /etc/resolv.conf
sudo chattr +i /etc/resolv.conf
sudo systemctl enable --now unboundchattr +i จะกำหนดให้ไฟล์นี้ไม่สามารถแก้ไขได้ เนื่องจาก DHCP (dynamic host configuration protocol) client และ resolvconf มักจะเขียนทับ /etc/resolv.conf ตามกำหนดเวลาของมันเอง หากไม่มีการตั้งค่านี้ การรีบูตอาจทำให้การค้นหาชื่อโดเมนของคุณกลับไปใช้ resolver ของผู้ให้บริการโดยที่คุณไม่ได้รับคำเตือนใดๆ คำแนะนำสำหรับ Debian และ Ubuntu ของ Tor ยังเปิดใช้งาน query name minimisation ซึ่งจะส่งเฉพาะส่วนของชื่อที่จำเป็นต้องใช้ไปยัง name server แต่ละแห่งเท่านั้น:
server:
qname-minimisation: yesใส่ค่าดังกล่าวลงในไฟล์ภายใต้ /etc/unbound/unbound.conf.d/ จากนั้นตรวจสอบว่า resolver ตอบสนองหรือไม่:
sudo systemctl restart unbound
dig +short example.com @127.0.0.1หากมีที่อยู่ IP ปรากฏในผลลัพธ์ แสดงว่า unbound ทำงานได้ปกติ หาก unbound ไม่สามารถเริ่มทำงานได้โดยมีข้อผิดพลาด address already in use แสดงว่ามีกระบวนการอื่นใช้งานพอร์ต 53 อยู่ ให้รัน sudo ss -lntup | grep :53 เพื่อดูว่าโปรเซสใดเป็นเจ้าของพอร์ตดังกล่าว บน Ubuntu นั้น systemd-resolved จะฟังอยู่ที่ 127.0.0.53 จึงไม่เกิดการชนกันกับ unbound ที่ฟังอยู่บน 127.0.0.1
ไฟล์ torrc สำหรับ exit relay
แพ็กเกจ Debian จะอ่านค่าจาก /etc/tor/torrc นี่คือการตั้งค่าทั้งหมดที่เกี่ยวข้องกับการทำ exit relay
Nickname exampleExit01
ORPort 443
ExitRelay 1
SocksPort 0
ContactInfo email:tor[]example.org abuse:abuse[]example.org url:https://example.org ciissversion:3
ReducedExitPolicy 1
Log notice syslogทุกบรรทัดในไฟล์มีความสำคัญ โปรดพิจารณาทีละส่วน
ORPort 443 คือพอร์ตที่ relay อื่นๆ ใช้เชื่อมต่อกับคุณ การใช้พอร์ต 443 ช่วยให้ทะลุผ่านเครือข่ายที่มีข้อจำกัดซึ่งบล็อกพอร์ตที่ไม่ปกติได้ ส่งผลให้ relay ของคุณเข้าถึงได้โดยผู้คนจำนวนมากกว่าการใช้พอร์ต 9001 ตามปกติ คุณสามารถกำหนดให้เป็น 443 ได้ก็ต่อเมื่อไม่มีบริการอื่นบนเครื่องนี้ใช้งานพอร์ตดังกล่าวอยู่ ซึ่งเป็นอีกหนึ่งเหตุผลที่ควรใช้เซิร์ฟเวอร์แยกเฉพาะ
SocksPort 0 ใช้สำหรับปิดการทำงานของ SOCKS proxy ในเครื่อง relay ไม่จำเป็นต้องใช้ฟีเจอร์นี้ และการเปิดพอร์ต SOCKS ทิ้งไว้บน public address จะทำให้กลายเป็น open proxy ซึ่งจะถูกตรวจพบและนำไปใช้ในทางที่ผิดภายในเวลาไม่กี่ชั่วโมง
ExitRelay 1 คือสวิตช์ที่กำหนดให้เครื่องนี้ทำหน้าที่เป็น exit relay ควรระบุค่านี้ให้ชัดเจนแทนการพึ่งพาค่าเริ่มต้น เพื่อให้ไฟล์คอนฟิกแสดงหน้าที่ของเครื่องไว้อย่างชัดเจน
ContactInfo จะถูกเผยแพร่ใน public directory เพื่อให้ทุกคนสามารถอ่านได้ โปรดเขียนข้อมูลในรูปแบบ ContactInfo Information Sharing Specification ซึ่งเป็นรูปแบบที่เครื่องมือของเครือข่ายใช้ประมวลผล และควรใส่ ciissversion:3 ไว้ในนั้นด้วย การใช้ [] แทน @ เป็นธรรมเนียมปฏิบัติที่ระบุไว้ในข้อกำหนดดังกล่าวเพื่อป้องกันการเก็บข้อมูลที่อยู่เมลโดยบอท (address scrapers) ควรใช้กล่องจดหมายที่คุณตรวจสอบเป็นประจำทุกวัน เนื่องจากเป็นช่องทางที่อีเมลแจ้งเหตุละเมิดจะถูกส่งเข้ามา
หากเซิร์ฟเวอร์ของคุณรองรับ IPv6 ให้เพิ่ม IPv6 ORPort และเปิดใช้งานการทำ exit ผ่าน IPv6 หากไม่รองรับให้เว้นว่างไว้ เพราะการที่ relay ประกาศที่อยู่ที่ไม่สามารถใช้งานได้จริงจะทำให้การทดสอบความสามารถในการเข้าถึง (reachability test) ล้มเหลว
ORPort [2001:db8::1]:443
IPv6Exit 1นโยบายขาออก: พอร์ตแต่ละพอร์ตอนุญาตให้เข้าถึงอะไรได้บ้าง
นโยบายขาออก (exit policy) คือรายการปลายทางที่ relay ของคุณยินยอมให้เชื่อมต่อ Tor จะอ่านนโยบายนี้จากบนลงล่างและใช้กฎแรกที่ตรงกัน ReducedExitPolicy 1 จะเลือกรายการพอร์ตที่คัดสรรมาแล้วประมาณ 70 พอร์ต ซึ่งครอบคลุมการใช้งานเว็บ, การส่งอีเมล, แชท และ git โดยตัดพอร์ตที่มักก่อให้เกิดการร้องเรียนออกไป นี่คือจุดเริ่มต้นที่เหมาะสมสำหรับการทำ exit relay ครั้งแรก
มีกฎสองข้อที่ควรทราบชื่อไว้ ExitPolicyRejectPrivate ถูกเปิดใช้งานโดยค่าเริ่มต้นและป้องกันไม่ให้ exit เชื่อมต่อไปยังช่วงที่อยู่ IP ส่วนตัว (private address ranges) รวมถึงที่อยู่ของตัว relay เอง ซึ่งเป็นสิ่งที่ป้องกันไม่ให้ exit ของคุณถูกชี้ไปยังเครือข่ายภายในของผู้ให้บริการของคุณ พอร์ต 25 (SMTP, simple mail transfer protocol) จะถูกปฏิเสธและควรคงสถานะการปฏิเสธไว้เช่นนั้น เพราะการอนุญาตพอร์ตนี้จะทำให้ relay กลายเป็นแหล่งส่งสแปมและที่อยู่ IP จะถูกขึ้นบัญชีดำภายในเวลาไม่กี่วัน
การจะเป็น exit relay ที่มีประโยชน์ได้นั้น จำเป็นต้องเปิดพอร์ต 80 และ 443 เอกสาร exit relay documentation ของ Tor ระบุข้อกำหนดขั้นต่ำนี้ไว้อย่างชัดเจน หากผู้ให้บริการของคุณต้องการนโยบายที่เข้มงวดกว่านโยบายแบบลดทอน (reduced policy) การทำ exit relay ที่อนุญาตเฉพาะเว็บก็ยังถือเป็นการสนับสนุนที่มีคุณค่า:
ExitPolicy accept *:80
ExitPolicy accept *:443
ExitPolicy reject *:*ปิดท้ายรายการด้วย reject *:* เพื่อให้นโยบายของคุณสมบูรณ์ในตัวเองและไม่มีการสืบทอดค่าใดๆ เพิ่มเติม นโยบายแบบลดทอนจะอนุญาตพอร์ต 22 (SSH) ซึ่งมักเป็นที่มาของรายงานการโจมตีแบบ brute-force ดังนั้นให้เพิ่ม ExitPolicy reject *:22 ไว้เหนือรายการอื่นหากคุณไม่ต้องการรับอีเมลแจ้งเตือนในหมวดหมู่นี้ พอร์ตสำหรับการแชร์ไฟล์ในช่วง 6881-6999 มักเป็นที่มาของประกาศแจ้งเตือนเรื่องลิขสิทธิ์ ซึ่งนโยบายแบบลดทอนได้ตัดพอร์ตเหล่านี้ออกไปเรียบร้อยแล้ว
การเปลี่ยนแปลงนโยบายจะมีผลต่อไคลเอนต์ก็ต่อเมื่อ relay ของคุณเผยแพร่ descriptor ใหม่และ directory กระจายข้อมูลนั้นออกไปแล้ว ดังนั้นควรเผื่อเวลาไว้สักสองสามชั่วโมงก่อนที่จะประเมินผลลัพธ์
ข้อมูลติดต่อ, family keys และการลงทะเบียน relay
การลงทะเบียน exit relay คือการผูก relay เข้ากับชื่อที่บุคคลภายนอกสามารถตรวจสอบได้ ซึ่งมีกลไกสองอย่างที่ทำงานร่วมกันเพื่อดำเนินการดังกล่าว
อย่างแรกคือไฟล์ที่กำหนดไว้เป็นมาตรฐาน ให้เผยแพร่ตัวตนของ family บนโดเมนที่คุณเป็นเจ้าของ จากนั้นระบุหลักฐานดังกล่าวใน ContactInfo:
ContactInfo email:tor[]example.org url:https://example.org proof:uri-familyid-ed25519 ciissversion:3ไฟล์นี้จะอยู่ที่ https://example.org/.well-known/tor-relay/ed25519-family-id.txt และบรรจุ family ID ของคุณไว้ ขณะนี้ทุกคนสามารถยืนยันได้แล้วว่าผู้ที่อ้างสิทธิ์ใน relay เหล่านี้เป็นผู้ควบคุมโดเมนดังกล่าวจริง นี่คือความแตกต่างระหว่างที่อยู่อีเมลสำหรับติดต่อกับที่อยู่ที่ได้รับการยืนยันแล้ว
อย่างที่สองคือตัว family เอง หากคุณรัน relay มากกว่าหนึ่งเครื่อง เครือข่ายจำเป็นต้องทราบว่า relay เหล่านั้นมีผู้ดูแลคนเดียวกัน เพื่อป้องกันไม่ให้ไคลเอนต์สร้างวงจร (circuit) ผ่านเครื่องของคุณสองเครื่องพร้อมกัน ปัจจุบัน tor จัดการเรื่องนี้ด้วย family key ที่เรียกว่า Happy Families บน relay ที่รันเวอร์ชัน 0.4.9.2-alpha หรือใหม่กว่า:
tor --keygen-family exampleFamilyคำสั่งดังกล่าวจะเขียนไฟล์ exampleFamily.secret_family_key และแสดงบรรทัด FamilyId ออกมา ให้คัดลอกไฟล์ secret key ไปยังไดเรกทอรีเก็บคีย์ของ relay แต่ละเครื่อง (/var/lib/tor/keys บน Debian และ Ubuntu) โดยคงนามสกุลไฟล์ .secret_family_key ไว้ จากนั้นเพิ่มบรรทัด FamilyId ที่ได้ลงใน torrc ของแต่ละเครื่อง แล้วโหลด tor ใหม่ เอกสารของ Tor ระบุไว้อย่างชัดเจนว่าคุณยังคงต้องตั้งค่าตัวเลือกแบบเดิมคือ MyFamily โดยระบุ fingerprint ของ relay ทุกตัวจนกว่าโครงการจะประกาศว่าไม่จำเป็นต้องใช้อีกต่อไป ดังนั้นให้กำหนดค่าทั้งสองแบบไว้ โดย fingerprint ของ relay แต่ละตัวจะอยู่ใน /var/lib/tor/fingerprint
เมื่อถึงเครื่องที่สองและสาม การจัดการจะเริ่มมีความสำคัญ และ การจัดการเซิร์ฟเวอร์ Linux หลายเครื่องพร้อมกัน ก็เป็นปัญหาเดียวกันกับที่อื่น ให้สำรองข้อมูล /var/lib/tor/keys ไว้ภายนอกเครื่อง หากทำไฟล์นี้หาย relay ของคุณจะกลับมาในฐานะคนแปลกหน้า และต้องเริ่มสะสม flag และชื่อเสียงทั้งหมดใหม่ตั้งแต่ศูนย์
นอกจากนี้ ให้สมัครรับข้อมูล tor-relays mailing list ด้วย การเปลี่ยนแปลงที่มีผลกระทบต่อผู้ดูแลระบบจะถูกประกาศที่นั่นเป็นที่แรก
Reverse DNS และประกาศแจ้งเตือนบนพอร์ต 80
ตั้งค่า reverse DNS record ก่อนที่ relay จะเริ่มรับส่ง traffic ใดๆ แนวทางปฏิบัติสำหรับ Tor exit relay ระบุว่าควรระบุตัวตนของเซิร์ฟเวอร์ให้ชัดเจนในลักษณะของ tor-exit-01.example.org เหตุผลนั้นเป็นเรื่องของการปฏิบัติงาน เมื่อพบที่อยู่ IP ที่ไม่คุ้นเคยใน log ของผู้อื่น สิ่งแรกที่ผู้ดูแลระบบจะทำคือการทำ reverse lookup ชื่อที่มีคำว่า "tor-exit" จะช่วยตอบคำถามได้ทันทีโดยที่อีกฝ่ายไม่ต้องส่งอีเมลมาสอบถาม ซึ่งช่วยลดจำนวนข้อร้องเรียนที่อาจเกิดขึ้นได้ ให้ติดต่อผู้ให้บริการเพื่อตั้งค่า PTR (pointer) record และเพิ่ม forward record ที่ตรงกันในฝั่งของคุณ
จากนั้นให้ทำหน้าประกาศแจ้งเตือนบนพอร์ต 80 เพื่อระบุข้อมูลดังกล่าวด้วยข้อความ คู่มือรุ่นเก่าจะใช้วิธีตั้งค่า DirPortFrontPage ของ Tor ซึ่งต้องพึ่งพา DirPort แต่เนื่องจาก DirPort ถูกยกเลิกการใช้งานสำหรับ relay ตั้งแต่ Tor เวอร์ชัน 0.4.6.5 เป็นต้นมา จึงควรใช้เว็บเซิร์ฟเวอร์ขนาดเล็กแทน
sudo apt install -y nginx
sudo install -d -m 755 /srv/tor-exit-noticeเขียน /srv/tor-exit-notice/index.html:
<!DOCTYPE html>
<html>
<head><title>This is a Tor exit relay</title></head>
<body>
<h1>This is a Tor exit relay</h1>
<p>Traffic from this address was sent by a user of the Tor network. It did not
come from the operator of this machine, and this machine keeps no record of
who sent it.</p>
<p>Operator: Example Org. Abuse reports: abuse@example.org. Every report gets a
reply from a person.</p>
<p>To check whether this address was a Tor exit at a given date and time:
https://metrics.torproject.org/exonerator.html</p>
</body>
</html>เขียน server block นี้ลงใน /etc/nginx/sites-available/tor-exit-notice:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /srv/tor-exit-notice;
index index.html;
access_log off;
}เปิดใช้งาน configuration, ลบ default site ของ nginx ออก และตรวจสอบผลลัพธ์:
sudo ln -sf /etc/nginx/sites-available/tor-exit-notice /etc/nginx/sites-enabled/tor-exit-notice
sudo rm -f /etc/nginx/sites-enabled/default
sudo nginx -t && sudo systemctl reload nginx
curl -s http://127.0.0.1/ | head -n 5nginx -t ที่รายงาน syntax is ok และ test is successful หมายความว่าไฟล์ config ถูกต้องตามหลักไวยากรณ์ คำสั่ง curl ควรแสดงบรรทัดแรกของหน้าประกาศแจ้งเตือนของคุณ หากผลลัพธ์ที่ได้คือหน้าต้อนรับของ nginx แสดงว่า default site ยังคงเปิดใช้งานอยู่และ block ที่คุณตั้งค่าไว้ยังไม่ได้ถูกนำไปใช้
เริ่มการทำงานและอ่านสิ่งที่ log แจ้ง
sudo systemctl restart tor@default
sudo journalctl -u tor@default -n 50 --no-pagerภายในเวลาไม่กี่นาที log ควรจะแสดงบรรทัดที่ระบุว่า relay อื่นสามารถเข้าถึงคุณได้แล้ว:
Self-testing indicates your ORPort is reachable from the outside. Excellent.หากบรรทัดดังกล่าวไม่ปรากฏขึ้น แสดงว่า ORPort ไม่สามารถเข้าถึงได้ ให้ยืนยันว่า tor กำลังฟังพอร์ตอยู่ด้วย sudo ss -lntp | grep 443 จากนั้นทดสอบพอร์ตจากเครื่องอื่นด้วย nc -vz your.address.here 443 สาเหตุที่พบบ่อยคือมี firewall กั้นอยู่หน้า VPS ไม่ว่าจะเป็นของคุณเองหรือ firewall ในแผงควบคุมของผู้ให้บริการ
ตรวจสอบว่า service กลับมาทำงานหลังการ reboot ด้วย systemctl is-enabled tor ซึ่งควรจะแสดงผลเป็น enabled
relay จะปรากฏบน Relay Search หลังจากเริ่มทำงานไปแล้วประมาณ 3 ชั่วโมง โดยจะแสดงภายใต้ชื่อเล่นที่คุณเลือก ปริมาณ traffic จะค่อยๆ เพิ่มขึ้นในช่วงหลายวันถัดไป เนื่องจากระบบวัดแบนด์วิดท์ของเครือข่ายจำเป็นต้องสังเกตการณ์ relay ของคุณก่อนที่ client จะให้น้ำหนักกับ relay นั้น การที่ relay ใหม่แทบไม่มี traffic ในวันแรกถือเป็นเรื่องปกติ
คู่มือการจัดการการละเมิดและลักษณะของอีเมลที่ได้รับ
ควรจัดทำคู่มือการจัดการก่อนที่จะได้รับข้อร้องเรียนฉบับแรก เนื่องจากโดยปกติแล้วข้อร้องเรียนแรกมักจะเข้ามาภายในสัปดาห์แรก อีเมลส่วนใหญ่เป็นข้อความที่สร้างขึ้นโดยอัตโนมัติ จากแนวทางปฏิบัติของ Tor พบว่ารายงานที่สร้างโดยระบบอัตโนมัติมีสัดส่วนประมาณ 80% ของทั้งหมด และการตอบกลับตามมาตรฐานสามารถจัดการข้อร้องเรียนส่วนที่เหลือได้เกือบทั้งหมด
นี่คือสิ่งที่เกิดขึ้นจริง คุณจะได้รับรายงานการสแกนหรือการโจมตีแบบ brute-force ที่สร้างจากระบบตรวจจับการบุกรุกของผู้อื่น โดยระบุที่อยู่ IP และเวลาที่เกิดเหตุ หรือได้รับประกาศแจ้งเตือนเรื่องลิขสิทธิ์หากนโยบายของคุณอนุญาตให้ใช้งานพอร์ตสำหรับการแชร์ไฟล์ หรือได้รับข้อร้องเรียนเรื่องสแปมในฟอรัมหรือความคิดเห็นจากเจ้าของเว็บไซต์ บางครั้งอาจได้รับคำขอให้เก็บรักษาข้อมูลหรือหมายศาลจากหน่วยงานบังคับใช้กฎหมาย ซึ่งเป็นกรณีที่แตกต่างออกไปและเป็นจุดที่คุณควรปรึกษาทนายความแทนการใช้เทมเพลตตอบกลับ
การตอบกลับควรเป็นไปอย่างกระชับและใช้เนื้อหาเดิมเกือบทุกครั้ง:
Hello,
Thank you for the report. The address 203.0.113.10 is a Tor exit relay,
operated by <your name> at <your organisation>. The connection you saw was
made by a user of the Tor network. It did not originate on this machine.
This relay keeps no record of which user made which connection, so I cannot
identify the sender and there are no logs for me to hand over.
You can confirm that this address was a Tor exit at the date and time in
question here: https://metrics.torproject.org/exonerator.html
If you would prefer to stop Tor traffic reaching your service, the current
list of exit addresses is published here:
https://check.torproject.org/torbulkexitlist
I read this mailbox personally and will answer any follow-up.
<your name>นิสัย 4 ประการที่จะช่วยให้การจัดการมีประสิทธิภาพ: ตอบกลับภายในหนึ่งวันทำการ โดยใช้ที่อยู่จาก ContactInfo และลงท้ายด้วยชื่อของคุณเอง ห้ามเสนอว่าจะระบุตัวตนของผู้ใช้งานเด็ดขาด เพราะคุณไม่สามารถทำได้ และผู้ดูแลระบบที่ให้คำมั่นสัญญาเช่นนั้นจะต้องผิดคำพูดในภายหลัง เก็บอีเมลตอบกลับทุกฉบับไว้ในโฟลเดอร์เดียวกัน เพื่อให้สามารถตอบกลับด้วยเนื้อหาเดิมหากได้รับอีเมลฉบับที่สองเกี่ยวกับเหตุการณ์เดียวกัน หากผู้ให้บริการส่งต่อข้อร้องเรียนพร้อมคำเตือนเรื่องการระงับบริการ ให้ตอบกลับผู้ให้บริการก่อนแล้วจึงตอบกลับผู้ร้องเรียนเป็นลำดับถัดไป
ลิงก์สองรายการมีความสำคัญอย่างยิ่งในการตอบกลับเหล่านี้ ExoneraTor ช่วยตอบคำถามที่ผู้ตรวจสอบต้องการทราบจริง ๆ ว่าที่อยู่ IP นี้เป็น Tor exit node ในขณะนั้นหรือไม่ ส่วน bulk exit list คือรายการที่อยู่ exit node ปัจจุบันแบบเรียบง่าย โดยระบุหนึ่งที่อยู่ต่อหนึ่งบรรทัด สำหรับผู้ที่ตัดสินใจบล็อก Tor และต้องการดำเนินการอย่างแม่นยำแทนการคาดเดาเอง
แบนด์วิดท์ ค่าใช้จ่าย และรีเลย์ตัวที่สอง
Exit node เป็นตัวรับส่งทราฟฟิกจริง คุณควรตัดสินใจเพดานการใช้งานรายเดือนก่อนสั่งซื้อ และสอบถามผู้ให้บริการว่ามีการคิดค่าใช้จ่ายอย่างไรเมื่อใช้โควตาเกินกำหนด เพราะ ต้นทุนที่แท้จริงของ VPS ส่วนใหญ่ขึ้นอยู่กับปริมาณการรับส่งข้อมูลมากกว่าราคาที่ระบุไว้หน้าเว็บ Tor สามารถช่วยจำกัดการใช้งานในฝั่งของคุณได้ดังนี้:
AccountingMax 4 TBytes
AccountingStart month 1 00:00
RelayBandwidthRate 20 MBytes
RelayBandwidthBurst 25 MBytesAccountingMax จะทำให้ Tor เข้าสู่โหมดจำศีลเมื่อรับส่งข้อมูลครบตามปริมาณที่กำหนดในรอบบัญชีนั้นๆ แล้วจะกลับมาทำงานอีกครั้งเมื่อเริ่มรอบถัดไป คุณควรเปรียบเทียบข้อมูลเดือนแรกกับตัวนับของผู้ให้บริการก่อนที่จะเชื่อตัวเลขดังกล่าว เพราะทั้งสองระบบอาจนับจำนวนไบต์ไม่เท่ากัน RelayBandwidthRate จะช่วยจำกัดอัตราการรับส่งข้อมูลต่อเนื่อง ซึ่งจะช่วยให้ช่องสัญญาณขาออกใช้งานได้ปกติและผู้ให้บริการไม่กังวลจนเกินไป
เมื่อคุณเพิ่ม Exit node ตัวที่สอง ให้วางไว้บนเครือข่ายที่แตกต่างกัน แทนที่จะวางไว้ในตู้แร็คเดียวกันกับตัวแรก ความหลากหลายคือส่วนสำคัญที่ Exit node มอบให้กับเครือข่าย และเครื่องสองเครื่องที่อยู่ในที่เดียวกันมักจะล้มเหลวพร้อมกัน ให้จัดกลุ่มรีเลย์เหล่านี้เข้าเป็นครอบครัวเดียวกัน (family) ระบุข้อมูลการติดต่อที่ตรวจสอบได้ชุดเดียวกันสำหรับทั้งสองเครื่อง และตอบกลับอีเมลจากทั้งสองรีเลย์ Exit node ที่ไม่มีใครติดต่อได้จะถูกมองว่าเป็นปัญหาที่ไม่ทราบที่มา แต่ Exit node ที่ผู้ดูแลตอบกลับภายในวันเดียวกันจะถูกมองว่าเป็นเซิร์ฟเวอร์ที่มีคนดูแล ซึ่งนั่นคือสิ่งที่ควรจะเป็น
FAQ
ฉันสามารถรัน Tor exit node บน VPS ที่มีอยู่แล้วได้หรือไม่?
ไม่ได้ และนี่คือจุดที่คุณต้องเคร่งครัดเป็นพิเศษ Exit node จำเป็นต้องใช้ที่อยู่ IP เฉพาะที่ไม่โฮสต์บริการอื่นใด และต้องอยู่กับผู้ให้บริการที่ตกลงล่วงหน้าว่าจะรองรับทราฟฟิกของ exit node และส่งต่ออีเมลแจ้งการละเมิด (abuse mail) มาให้คุณโดยไม่มีการแก้ไข สำหรับ VPS วัตถุประสงค์ทั่วไป รวมถึงของเราด้วย ที่อยู่ IP นั้นทำหน้าที่อื่นอยู่แล้วและอยู่ในกลุ่มเดียวกับลูกค้าที่รันบริการปกติ ให้คุณรัน non-exit relay หรือ obfs4 bridge บนเครื่องที่คุณมีอยู่แทน บริการเหล่านี้มีประโยชน์จริง ไม่ค่อยได้รับเรื่องร้องเรียน และไม่ต้องการอะไรมากไปกว่าเครื่องที่คุณจ่ายเงินเช่าอยู่แล้ว
Tor exit relay ได้รับอีเมลแจ้งการละเมิดมากน้อยเพียงใด และใครเป็นผู้รับ?
ขึ้นอยู่กับนโยบายการออก (exit policy) ของคุณ หากใช้ ReducedExitPolicy 1 โดยปฏิเสธพอร์ต 25 และยกเว้นพอร์ตสำหรับการแชร์ไฟล์ ส่วนใหญ่ที่เข้ามาจะเป็นรายงานการสแกนอัตโนมัติและการพยายามเจาะระบบ (brute-force) แนวทางของ Tor ระบุว่ารายงานอัตโนมัติคิดเป็นประมาณ 80% ของทั้งหมด อีเมลจะถูกส่งไปยังผู้ที่แผนก abuse ของผู้ให้บริการส่งต่อให้ ซึ่งเป็นเหตุผลว่าทำไมคุณต้องสอบถามก่อนสั่งซื้อว่าพวกเขาจะส่งต่ออีเมลให้คุณโดยที่ที่อยู่ของผู้รายงานยังคงอยู่ครบถ้วนหรือไม่ ให้เผยแพร่ที่อยู่อีเมลเดียวกันใน ContactInfo และบนหน้าประกาศที่พอร์ต 80 และตอบกลับภายในหนึ่งวันทำการ
ฉันต้องเปิดเผยชื่อจริงและที่อยู่อีเมลของฉันหรือไม่?
ใช่ ContactInfo จะถูกเผยแพร่ในไดเรกทอรี relay สาธารณะและทุกคนสามารถดาวน์โหลดได้ ชื่อ reverse DNS จะประกาศว่าเครื่องนี้คืออะไร และหน้าประกาศที่พอร์ต 80 จะระบุซ้ำอีกครั้ง ความโปร่งใสนี้คือการออกแบบ ไม่ใช่ผลข้างเคียง Exit node ที่ไม่มีช่องทางติดต่อที่ใช้งานได้จะถูกมองว่าเป็นตัวสร้างความรำคาญแบบนิรนาม และไคลเอนต์บางรายจะยกเว้น exit node ที่ไม่เปิดเผยข้อมูลติดต่อเลย ให้เพิ่ม proof:uri-familyid-ed25519 และไฟล์ /.well-known/tor-relay/ed25519-family-id.txt บนโดเมนที่คุณควบคุม เพื่อให้ข้อมูลติดต่อสามารถตรวจสอบได้จริง ไม่ใช่เพียงแค่การกล่าวอ้าง
ทำไม exit relay ใหม่ของฉันถึงแทบไม่มีทราฟฟิกเลย?
ขั้นแรกให้ตรวจสอบว่า journalctl -u tor@default มี Self-testing indicates your ORPort is reachable from the outside. Excellent. อยู่หรือไม่ เพราะ relay ที่ไม่ผ่านการทดสอบการเข้าถึง (reachability test) จะไม่ถูกเผยแพร่และจะไม่มีทราฟฟิกเลย หากมีบรรทัดนั้นอยู่แล้ว คำตอบมักจะเป็นเรื่องของเวลา Relay จะปรากฏใน Relay Search ประมาณสามชั่วโมงหลังจากเริ่มทำงาน และไคลเอนต์จะส่งทราฟฟิกที่มีนัยสำคัญให้ก็ต่อเมื่อระบบวัดแบนด์วิดท์ของเครือข่ายได้ตรวจสอบแล้ว ซึ่งต้องใช้เวลาหลายวัน นอกจากนี้ยังจำเป็นต้องมีนโยบายที่อนุญาตพอร์ต 80 และ 443 ก่อนที่ relay ของคุณจะถูกจัดว่าเป็น exit node อย่างสมบูรณ์