ส่งสัญญาณแพ็กเก็ต UDP ระหว่างเครื่องคู่หนึ่งเพื่อเปิดใช้งานการเข้าถึงระยะไกลของคอนโทรลเลอร์ UHPPOTE
ในทางเทคนิคแล้ว มันไม่ใช่อุโมงค์จริงๆ ยกเว้นในแง่ที่ว่า เมื่อคุณเข้าไปในหลุมต้องห้ามอันมืดมิด สิ่งที่ลึกลับและอาจอธิบายไม่ได้ก็เกิดขึ้น และในเวลาต่อมาคุณก็ปรากฏตัวท่ามกลางแสงสว่างในสถานที่ที่แตกต่างไปจากเดิมอย่างสิ้นเชิง ดังนั้นอาจเป็นรีเลย์หรือพร็อกซีมากกว่า .. แต่เราจะไปกับ ทันเนล อยู่แล้ว
การใช้งานประกอบด้วยตัวเชื่อมต่อต่อไปนี้:
สำหรับช่วงเวลา ที่ น่ารำคาญเหล่านั้น เมื่อเป็นการดีที่จะเรียกใช้แอปพลิเคชัน UHPPOTE AccessControl แต่ตัวควบคุมอยู่ในที่เดียวและเครื่องโฮสต์อยู่ในอีกที่หนึ่ง (หรือบางทีบน VPS ในนอร์เวย์) ซึ่งหมายความว่าการออกอากาศ UDP ไม่เพียงทำงานเท่านั้น และการเจาะรูในไฟร์วอลล์และการปรับแต่ง NAT หรือการตั้งค่า VPN จะไม่เกิดขึ้นหรือเป็นปัญหามากกว่าที่ควรจะเป็น
ยังมีประโยชน์สำหรับการใช้งานระยะไกล
และเป็นทางเลือกที่ง่ายกว่าสำหรับ:
ระบบปฏิบัติการที่รองรับ:
**v0.8.9 - 06-09-2024
ไฟล์ปฏิบัติการสำหรับระบบปฏิบัติการที่รองรับทั้งหมดจะรวมอยู่ในรุ่นต่างๆ:
Tarball ที่วางจำหน่ายประกอบด้วยไฟล์ปฏิบัติการสำหรับระบบปฏิบัติการทั้งหมด - Tarball เฉพาะระบบปฏิบัติการที่มีส่วนประกอบ uhppoted ทั้งหมดสามารถพบได้ใน uhpppoted release
การติดตั้งทำได้ตรงไปตรงมา - ดาวน์โหลดไฟล์เก็บถาวรและแยกไปยังไดเร็กทอรีที่คุณเลือก หากต้องการติดตั้ง uhppoted-tunnel
เป็นบริการระบบ:
cd <uhppoted directory>
sudo uhppoted-tunnel daemonize --in <connector> --out <connector> --label <label>
uhppoted-tunnel help
จะแสดงรายการคำสั่งที่มีอยู่และตัวเลือกที่เกี่ยวข้อง (ตามเอกสารด้านล่าง)
เครื่องมือที่จำเป็น:
วิธีสร้างโดยใช้ Makefile ที่รวมอยู่:
git clone https://github.com/uhppoted/uhppoted-tunnel.git
cd uhppoted-tunnel
make build
โดยไม่ต้องใช้ make
:
git clone https://github.com/uhppoted/uhppoted-tunnel.git
cd uhppoted-tunnel
go build -trimpath -o bin/ ./...
คำสั่งข้างต้นสร้างไฟล์ปฏิบัติการ uhppoted-tunnel
ไปยังไดเร็กทอรี bin
การพึ่งพาอาศัยกัน | คำอธิบาย |
---|---|
uhppote-core | การใช้งาน API ระดับอุปกรณ์ |
uhppoted-lib | ฟังก์ชั่นห้องสมุดทั่วไป |
golang.org/x/sys | (สำหรับการรวมบริการ Windows) |
tailscale.com | ไลบรารี tsnet สำหรับตัวเชื่อมต่อ Tailscale |
การใช้งาน: uhppoted-tunnel <command> --in <connector> --out <connector> <options>
คำสั่งที่รองรับ:
help
version
run
daemonize
undaemonize
ค่าเริ่มต้นที่จะ run
หากไม่ได้ระบุคำสั่งไว้ เช่น uhppoted-tunnel --in <connector> --out <connector> <options>
เทียบเท่ากับ uhppoted-tunnel run --in <connector> --out <connector> <options>
.
สำหรับ uhppoted-tunnel v0.8.3+ การกำหนดค่ารันไทม์ถูกกำหนดไว้ในไฟล์ TOML (มีเอกสารอยู่ที่นี่) และการปรับปรุงในอนาคตใดๆ จะสามารถกำหนดค่าได้ในไฟล์ TOML เท่านั้น
อาร์กิวเมนต์บรรทัดคำสั่งที่อธิบายด้านล่างนี้มีไว้สำหรับการสนับสนุนแบบเดิมและการแทนที่การตั้งค่าเฉพาะในการกำหนดค่า TOML
run
รันบริการ uhppoted-tunnel
คำสั่งเริ่มต้น มีไว้สำหรับใช้เป็นบริการระบบที่ทำงานอยู่เบื้องหลัง
บรรทัดคำสั่ง:
uhppoted-tunnel [--debug] [--console] --config <configuration> --in <connector> --out <connector> [options]
--config <configuration> Sets the TOML file and section to use for runtime configuration settings. The
configuration may be:
- fully specified, e.g. "--config /etc/uhppoted/uhppoted-tunnel.toml#client"
- file only e.g. "--config /etc/uhppoted/uhppoted-tunnel.toml" (uses the [defaults] section)
- section only e.g. "--config #client" (uses the default TOML file and [client] section)
If the --config argument not supplied, the default TOML file will be used if it exists.
--in <connector> Defines the connector that accepts incoming commands. Overrides the 'IN' connector in the TOML
configuration if it exists. Valid 'in' connectors include:
- udp/listen:<bind address> (e.g. udp/listen:0.0.0.0:60000)
- udp/event:<bind address> (e.g. udp/listen:0.0.0.0:60000)
- tcp/server:<bind address> (e.g. tcp/server:0.0.0.0:12345)
- tcp/client:<host address> (e.g. tcp/client:192.168.1.100:12345)
- tls/server:<bind address> (e.g. tls/server:0.0.0.0:12345)
- tls/client:<host address> (e.g. tls/client:192.168.1.100:12345)
- tailscale/server:<server address> (e.g.uhppoted:12345,nolog)
- http/<bind address> (e.g. http/0.0.0.0:8080)
- https/<bind address> (e.g. https/0.0.0.0:8443)
Under Linux and MacOS TCP and UDP _in_ connectors can be bound to a specific interface by prefixing
the address with ::<interface> e.g. tcp/client::en3:192.168.1.100:12345. The _Tailscale_ connector
syntax is described below.
--out <connector> Defines the connector that forwards received commands. Overrides the 'OUT' connector in the TOML
configuration if it exists. Valid 'out' connectors include:
- udp/broadcast:<broadcast address> (e.g. udp/broadcast:255.255.255.255:60000)
- udp/event:<broadcast address> (e.g. udp/broadcast:255.255.255.255:60000)
- tcp/server:<bind address> (e.g. tcp/server:0.0.0.0:12345)
- tcp/client:<host address> (e.g. tcp/client:192.168.1.100:12345)
- tls/server:<bind address> (e.g. tls/server:0.0.0.0:12345)
- tls/client:<host address> (e.g. tls/client:192.168.1.100:12345)
- tailscale/client:<client address> (e.g. tailscale/client::makerspace:uhppoted:12345,nolog)
Under Linux and MacOS TCP and UDP _out_ connectors can be bound to a specific interface by prefixing
the address with ::<interface> e.g. udp/broadcast::lo0:127.0.0.01:12345. The _Tailscale_ connector
syntax is described below.
--console Runs the UDP tunnel as a console application, logging events to the console.
--debug Displays verbose debugging information, in particular the communications with the
UHPPOTE controllers
Options:
--max-retries <retries> Maximum number of failed bind/connect attempts before failing with a fatal error.
Defaults to 32, set to -1 for infinite retry.
--max-retry-delay <delay> Retries use an exponential backoff (starting at 5 seconds) up to the delay (in
human readable time format e.g. 60s or 5m). Defaults to 5 minutes.
--lockfile <file> Overrides the default lockfile name for use in e.g. bash scripts. The default lockfile
name is generated from the hash of the 'in' and 'out' connectors.
--log-level <level> Lowest level log messages to include in logging output ('debug', 'info', 'warn' or 'error').
Defaults to 'info'
--ca-cert <file> (TLS only) File path for CA certificate PEM file. Defaults to ./ca.cert
--cert <file> (TLS only) File path for client/server certificate PEM file. Defaults to./client.cert ('IN'
connectors) or ./server.cert (OUT connectors)
--key <file> (TLS only) File path for client/server key PEM file. Defaults to ./client.key ('IN' connectors)
or ./server.key ('OUT' connectors)
--client-auth (TLS only) Mandates client authentication. Defaults to false
--html (HTTP only) Folder with HTML, CSS, images, etc. Defaults to./html
โดยทั่วไป ช่องสัญญาณจะทำงานเป็นคู่ - ช่องหนึ่งบน โฮสต์ โดยฟังคำสั่งจากเช่น แอปพลิเคชัน AccessControl หรือ uhppote-cli และอีกช่องบน ไคลเอ็นต์ ภายในเครื่องไปยังตัวควบคุม ซึ่งจะส่งคำสั่งไปยังตัวควบคุมและส่งคืนการตอบกลับ ถึง เจ้าภาพ อย่างไรก็ตาม มีความเป็นไปได้ที่จะโยงอุโมงค์หลายอันเพื่อเชื่อมข้ามเครื่องจักรหลายเครื่อง
ตัวเชื่อมต่อ เหตุการณ์ เป็นความเชี่ยวชาญพิเศษของตัวเชื่อมต่อ การฟัง และ การออกอากาศ UDP โดยที่เหตุการณ์จะถูกถ่ายทอดในทิศทางเดียวเท่านั้น โดยไม่ต้องคาดหวังว่าจะได้รับการตอบกลับ ค่อนข้างเป็นไปได้ที่จะใช้ตัวเชื่อมต่อ การฟัง และ การออกอากาศ เพื่อถ่ายทอดเหตุการณ์ แต่ตัวเชื่อมต่อแบบพิเศษนั้นได้รับการปรับให้เหมาะสมเล็กน้อยสำหรับกรณีการใช้งาน และยังได้รับการติดตั้งเพื่อรองรับการปรับปรุงในอนาคตที่อาจต้องใช้ตัวเชื่อมต่อแบบพิเศษ
daemonize
ลงทะเบียน uhppoted-tunnel
เป็นบริการระบบที่จะเริ่มทำงานเมื่อบูตระบบ คำสั่งสร้างไฟล์การกำหนดค่าบริการเฉพาะระบบที่จำเป็นและรายการตัวจัดการบริการ
บนลินุกซ์:
uhppoted:uhppoted
user:group - สามารถเปลี่ยนแปลงได้ด้วยตัวเลือก --user
sudo systemctl enable uhppoted-tunnel-xxx
หลังจาก daemonizing เพื่อรับบริการ uhppoted-tunnel เพื่อเริ่มการบูต ทั้งนี้ขึ้นอยู่กับระบบnetwork-online.target
(อ้างอิง https://systemd.io/NETWORK_ONLINE) หากต้องการรออินเทอร์เฟซเฉพาะ ให้แก้ไขไฟล์หน่วย ( /etc/systemd/system/uhpppoted-tunnel-xxx ) เพื่อรอ systemd-networkd-wait-online.serviceบรรทัดคำสั่ง:
uhppoted-tunnel daemonize --config <configuration> --in <connector> --out <connector> [--label <label>] [--user <user>]
--config <configuration> Sets the TOML file and section to use for runtime configuration settings. The
configuration may be:
- fully specified, e.g. "--config /etc/uhppoted/uhppoted-tunnel.toml#client"
- file only e.g. "--config /etc/uhppoted/uhppoted-tunnel.toml" (uses the [defaults] section)
- section only e.g. "--config #client" (uses the default TOML file and [client] section)
If the --config argument not supplied, the default TOML file will be used if it exists.
--in <connector> Defines the connector that accepts incoming commands. Overrides the 'in' connector in the TOML
configuration. Valid 'in' connectors include:
- udp/listen:<bind address> (e.g. udp/listen:0.0.0.0:60000)
- tcp/server:<bind address> (e.g. tcp/server:0.0.0.0:12345)
- tcp/client:<host address> (e.g. tcp/client:192.168.1.100:12345)
- tls/server:<bind address> (e.g. tls/server:0.0.0.0:12345)
- tls/client:<host address> (e.g. tls/client:192.168.1.100:12345)
- http/<bind address> (e.g. http/0.0.0.0:8080)
- https/<bind address> (e.g. https/0.0.0.0:8443)
--out <connector> Defines the connector that forwards received commands. Overrides the 'out' connector in the TOML
configuration. Valid 'out' connectors include:
- udp/broadcast:<broadcast address> (e.g. udp/broadcast:255.255.255.255:60000)
- tcp/server:<bind address> (e.g. tcp/server:0.0.0.0:12345)
- tcp/client:<host address> (e.g. tcp/client:192.168.1.100:12345)
- tls/server:<bind address> (e.g. tls/server:0.0.0.0:12345)
- tls/client:<host address> (e.g. tls/client:192.168.1.100:12345)
--label <label> Identifying label for the tunnel daemon/service, used to identify the tunnel in logs and when
uninstalling the daemon/service. Imperative if running multiple tunnel daemons on the same machine,
optional but recommended otherwise. Defaults to uhppoted-tunnel if not provided.
--user <uid:group> (Linux only) uid:group pair to use for service. Defaults to uhppoted:uhppoted.
undaemonize
ยกเลิกการลงทะเบียน uhppoted-tunnel
เป็นบริการของระบบ แต่จะไม่ลบไฟล์บันทึกหรือไฟล์การกำหนดค่าที่สร้างขึ้น
บรรทัดคำสั่ง:
uhppoted-tunnel undaemonize [--label <label>]
--label <label> Identifying label for the tunnel daemon/service to be uninstalled. Defaults to uhppoted-tunnel if
not provided.
uhppoted-tunnel มีการรองรับตัวเชื่อมต่อหลายตัว ซึ่งโดยทั่วไปสามารถผสมและจับคู่ได้ โดยมีข้อจำกัดบางประการ:
ขั้วต่อ IN :
ขั้ว ต่อออก :
รับฟังแพ็กเก็ต UDP ขาเข้าบน ที่อยู่การเชื่อมโยง ซึ่งทำหน้าที่เป็นพร็อกซีโดยตรงสำหรับรีโมทคอนโทรลได้อย่างมีประสิทธิภาพ
--in udp/listen[::<interface>]:<bind address>
e.g.
--in udp/listen:0.0.0.0:60000
--in udp/listen::en3:0.0.0.0:60000
ส่งแพ็กเก็ตที่ได้รับออกมาเป็นข้อความ UDP บน ที่อยู่ออกอากาศ และส่งต่อการตอบกลับใดๆ ไปยังผู้ร้องขอดั้งเดิม โดยทำหน้าที่เป็นพร็อกซีสำหรับแอปพลิเคชันระยะไกลอย่างมีประสิทธิภาพ
--out udp/broadcast[::<interface>]:<broadcast address> [--udp-timeout <timeout>]
The broadcast address is typically (but not necessarily) the UDP broadcast for the network adapter for the controllers'
network segment. However it can be any valid IPv4 address:port combination to accomodate the requirements of the
installation.
--udp-timeout <timeout> Sets the maximum time to wait for replies to a broadcast message, in human readable format
e.g. 15s, 1250ms, etc. Defaults to 5 seconds if not provided.
e.g.
--out udp/broadcast:255.255.255.255:60000 --udp-timeout 5s
--out udp/broadcast::en3:255.255.255.255:60000 --udp-timeout 5s
ตัวเชื่อมต่อเซิร์ฟเวอร์ TCP ยอมรับการเชื่อมต่อจากไคลเอ็นต์ TCP หนึ่งรายการขึ้นไป และสามารถทำหน้าที่เป็นทั้งตัวเชื่อมต่อ IN และตัวเชื่อมต่อ OUT คำขอที่เข้ามาจะถูกส่งต่อไปยังไคลเอนต์ที่เชื่อมต่อทั้งหมด
--in tcp/server[::<interface>]:<bind address>
e.g.
--in tcp/server:0.0.0.0:12345
--in tcp/server::en3:0.0.0.0:12345
ตัวเชื่อมต่อไคลเอ็นต์ TCP เชื่อมต่อกับเซิร์ฟเวอร์ TCP และสามารถทำหน้าที่เป็นทั้งตัวเชื่อมต่อ IN และตัวเชื่อมต่อ OUT คำขอ/ตอบกลับที่เข้ามาจะถูกส่งต่อไปยังเซิร์ฟเวอร์ระยะไกล
--in tcp/client[::<interface>]:<host address>
e.g.
--in tcp/host:192.168.1.100:12345
--in tcp/host::lo0:127.0.0.1:12345
ตัวเชื่อมต่อเซิร์ฟเวอร์ TLS คือตัวเชื่อมต่อเซิร์ฟเวอร์ TCP ที่ยอมรับเฉพาะการเชื่อมต่อไคลเอนต์ที่ปลอดภัยของ TLS
--in tls/server[::<interface>]:<bind address> [--ca-cert <file>] [--cert <file>] [--key <file>] [--client-auth]
--ca-cert CA certificate used to verify client certificates (defaults to ca.cert)
--cert server TLS certificate in PEM format (defaults to server.cert)
--key server TLS key in PEM format (defaults to server.key)
--client-auth requires client mutual authentication if supplied
e.g.
--in tls/server:0.0.0.0:12345 --ca-cert tunnel.ca --cert tunnel.cert --key tunnel.key --client-auth
--in tls/server::en3:0.0.0.0:12345 --ca-cert tunnel.ca --cert tunnel.cert --key tunnel.key --client-auth
ตัวเชื่อมต่อไคลเอ็นต์ TLS คือตัวเชื่อมต่อไคลเอ็นต์ TCP ที่เชื่อมต่อกับเซิร์ฟเวอร์ที่มีการรักษาความปลอดภัย TLS เท่านั้น
--in tls/client[::<interface>]:<host address> [--ca-cert <file>] [--cert <file>] [--key <file>] [--client-auth]
--ca-cert CA certificate used to verify server certificates (defaults to ca.cert)
--cert client TLS certificate in PEM format. Optional, only required if the TLS server
has mutual authentication enabled.
--key client TLS key in PEM format. Optional, only required if the TLS server
has mutual authentication enabled.
e.g.
--in tls/client:192.168.1.100:12345 --ca-cert tunnel.ca --cert client.cert --key client.key
--in tls/client::en3:192.168.1.100:12345 --ca-cert tunnel.ca --cert client.cert --key client.key
ตัวเชื่อมต่อ HTTP POST ยอมรับคำขอ JSON POST และส่งต่อการตอบกลับไปยังไคลเอนต์ที่ร้องขอ โดยหลักแล้วเพื่อรองรับแอปพลิเคชันที่ใช้เบราว์เซอร์ที่รวดเร็วและสกปรก (ตัวอย่างเล็ก ๆ รวมอยู่ในโฟลเดอร์ ตัวอย่าง )
--in http/<bind address> [--html <folder>]
--html <folder> Folder containing the HTML served to the browser on the bind address.
e.g.
--in http:/0.0.0.0:8080 --html examples/html
คำขอโพสต์:
{
ID: <request ID>,
wait: <UDP timeout>,
request: <UDP request byte array>
}
e.g.
{
ID: 19,
wait: "5s",
request: [0x17,0x94,0x00,0x00,0x90,0x53,0xfb,0x0b,0x00,,...]
}
ตอบ:
{
ID: <request ID>,
replies: <array of UDP byte array>
}
e.g.
{
ID: 19,
replies: [
[0x17,0x94,0x00,0x00,0x90,0x53,0xfb,0x0b,0xc0,0xa8,...],
[0x17,0x94,0x00,0x00,0x41,0x78,0x1e,0x12,0xc0,0xa8,...],
]
}
ตัวเชื่อมต่อ HTTPS POST คือตัวเชื่อมต่อ HTTP POST ที่ยอมรับเฉพาะการเชื่อมต่อไคลเอ็นต์ TLS เท่านั้น
--in https/<bind address> [--html <folder>] [--ca-cert <file>] [--cert <file>] [--key <file>] [--client-auth]
--html <folder> Folder containing the HTML served to the browser on the bind address.
--ca-cert CA certificate used to verify client certificates (defaults to ca.cert)
--cert server TLS certificate in PEM format (defaults to server.cert)
--key server TLS key in PEM format (defaults to server.key)
--client-auth requires client mutual authentication if supplied
e.g.
--in https:/0.0.0.0:8080 --html examples/html
คำขอโพสต์:
{
ID: <request ID>,
wait: <UDP timeout>,
request: <UDP request byte array>
}
e.g.
{
ID: 19,
wait: "5s",
request: [0x17,0x94,0x00,0x00,0x90,0x53,0xfb,0x0b,0x00,,...]
}
ตอบ:
{
ID: <request ID>,
replies: <array of UDP byte array>
}
e.g.
{
ID: 19,
replies: [
[0x17,0x94,0x00,0x00,0x90,0x53,0xfb,0x0b,0xc0,0xa8,...],
[0x17,0x94,0x00,0x00,0x41,0x78,0x1e,0x12,0xc0,0xa8,...],
]
}
ตัวเชื่อมต่อเซิร์ฟเวอร์ Tailscale สร้างการเชื่อมต่อ Tailscale ที่รับฟังซึ่งยอมรับการเชื่อมต่อจากไคลเอ็นต์ Tailscale หนึ่งรายการขึ้นไป ต่างจากตัวเชื่อมต่อ TCP ที่ได้รับการออกแบบให้ทำหน้าที่เป็นตัวเชื่อมต่อ IN เท่านั้น คำขอที่เข้ามาจะถูกส่งต่อไปยังไคลเอนต์ที่เชื่อมต่อทั้งหมด
ที่อยู่ เซิร์ฟเวอร์ Tailscale ประกอบด้วย:
machine
tailnet ที่จะใช้สำหรับเซิร์ฟเวอร์ (จำเป็น)debug
ทางเลือกเพื่อแสดงการบันทึกการเชื่อมต่อส่วนท้าย ค่าเริ่มต้นเป็น 'ไม่มีบันทึก' เนื่องจากการบันทึก Tailscale มีรายละเอียดมาก แต่บางครั้งก็มีประโยชน์หรือจำเป็นสำหรับการแก้ไขข้อบกพร่องของปัญหาการเชื่อมต่อ ค่าที่ถูกต้องเพียงค่าเดียวคือ debug
- ค่าอื่นๆ (เช่น nolog) สามารถใช้เป็นตัวช่วยจำตัวยึดตำแหน่งได้ --in tailscale/server:<device>:<port>[,debug]
e.g.
--in tailscale/server:uhppoted:12345,debug
--in tailscale/server:uhppoted:12345,nolog
โปรดทราบว่าขณะนี้ Tailscale ไม่รองรับการเชื่อมโยงกับอินเทอร์เฟซเฉพาะ (Ref. tailscale/tailscale#1552)
ตัวเชื่อมต่อไคลเอ็นต์ Tailscale เชื่อมต่อกับการเชื่อมต่อเซิร์ฟเวอร์ Tailscale ที่รับฟัง ต่างจากตัวเชื่อมต่อไคลเอ็นต์ TCP และ UDP ตัวเชื่อมต่อไคลเอ็นต์ Tailscale สามารถกำหนดค่าเป็นตัวเชื่อม ต่อ OUT เท่านั้น กล่าวคือ คาดว่าจะได้รับคำสั่งบนพอร์ต UDP IN และส่งต่อคำสั่งไปยังเซิร์ฟเวอร์ Tailscale ที่เชื่อมต่อกับตัวควบคุมการเข้าถึง
ที่อยู่ ไคลเอ็นต์ Tailscale ประกอบด้วย:
machine
tailnet ที่จะใช้สำหรับเซิร์ฟเวอร์ (ไม่บังคับ แต่แนะนำ)debug
ทางเลือกเพื่อแสดงการบันทึกการเชื่อมต่อส่วนท้าย ค่าเริ่มต้นเป็น 'ไม่มีบันทึก' เนื่องจากการบันทึก Tailscale มีรายละเอียดมาก แต่บางครั้งก็มีประโยชน์หรือจำเป็นสำหรับการแก้ไขข้อบกพร่องของปัญหาการเชื่อมต่อ ค่าที่ถูกต้องเพียงค่าเดียวคือ debug
- ค่าอื่นๆ (เช่น nolog) สามารถใช้เป็นตัวช่วยจำตัวยึดตำแหน่งได้ --in tailscale/client[::<machine>]:<server address>[,debug]
e.g.
--out tailscale/client:uhppoted:12345
--out tailscale/client::qwerty:uhppoted:12345,debug
--out tailscale/client::qwerty:uhppoted:12345,nolog
โปรดทราบว่าขณะนี้ Tailscale ไม่รองรับการเชื่อมโยงกับอินเทอร์เฟซเฉพาะ (Ref. tailscale/tailscale#1552)
ตามค่าเริ่มต้น การเชื่อมต่อกับ Tailscale tailnet จะใช้คีย์การอนุญาตในตัวแปรสภาพแวดล้อม TS_AUTHKEY หากไม่ได้กำหนดตัวแปรสภาพแวดล้อมหรือเว้นว่างไว้ คุณจะได้รับแจ้งพร้อม URL การอนุญาต
วิธีการอนุญาตทางเลือกอื่นสามารถกำหนดค่าได้ในไฟล์การกำหนดค่า TOML (ระบุโดยใช้ตัวเลือกบรรทัดคำสั่ง --config
):
env:<variable name>
เช่น [tailscale-server]
...
authorisation = "env:TS_WORKSHOP"
...
นี่เป็นอีกทางเลือกหนึ่งนอกเหนือจากการใช้คีย์การอนุญาตที่นำมาใช้ซ้ำได้ในตัวแปรสภาพแวดล้อม TS_AUTHKEY เมื่อใช้งานช่องสัญญาณตั้งแต่สองช่องขึ้นไปบนเครื่องเดียวกัน
authkey:<key>
เช่น [tailscale-server]
...
authorisation = "authkey:tskey-auth-xxxxxxxxxxxx-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
...
oauth2:<credentials>
เช่น [tailscale-server]
...
authorisation = "oauth2:.credentials.workship"
...
credentials
เป็นไฟล์ JSON ที่มีข้อมูลรับรอง OAuth2 สำหรับไคลเอ็นต์ OAuth2 เช่น
{
"tailscale": {
"oauth2": {
"client-id": "xxxxxxxxxxxx",
"client-secret": "tskey-client-xxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"auth-url": "https://api.tailscale.com/api/v2/oauth/token",
"tailnet": "[email protected]",
"tag": "development",
"key-expiry": 300
}
}
}
client-id
และ client-secret
คือคีย์ที่สร้างขึ้นเมื่อสร้างไคลเอ็นต์ OAuth2 บนคอนโซลผู้ดูแลระบบ Tailscaletailnet
คือชื่อบัญชีผู้ใช้/องค์กร ( ไม่ใช่ ชื่อ DNS ของ Tailnet) แต่สามารถตั้งค่าเริ่มต้นเป็น '-' ได้ เนื่องจากคีย์ API เป็นแบบเฉพาะองค์กร/ไคลเอ็นต์ขั้วต่อ IP/out รองรับการเชื่อมต่อกับคอนโทรลเลอร์ต่อไปนี้:
การเชื่อมต่อเริ่มต้นคือการออกอากาศ UDP แต่ตัวควบคุมเฉพาะในไฟล์การกำหนดค่า TOML สามารถกำหนดค่าสำหรับการเชื่อมต่อ 'sendto' หรือ TCP ของ UDP ทำให้เป็นตัวเชื่อมต่อ 'TOML' เท่านั้นสำหรับวัตถุประสงค์ในทางปฏิบัติทั้งหมด:
uhppoted-tunnel --config "uhppoted-tunnel.toml#ip"
where the TOML 'ip' section comprises:
...
[ip]
in = "udp/listen:0.0.0.0:60000"
out = "ip/out:192.168.1.255:60005"
console=true
debug = true
[ip.controllers]
405419896 = "udp::192.168.1.100:60005"
303986753 = "tcp::192.168.1.100:60005"
...
- the 'in' connection is any supported IN connection
- the 'out' connection defines the default UDP broadcast connection
- the [controllers] subsection lists the controllers with transport protocol and IPv4 address
uhppoted-tunnel มีขีดจำกัดอัตราภายในที่จำกัดจำนวนคำขอต่อวินาทีที่สามารถประมวลผลได้ การตั้งค่าเริ่มต้นค่อนข้างอนุรักษ์นิยม:
ขีดจำกัดเหล่านี้สามารถเปลี่ยนแปลงได้ในไฟล์การกำหนดค่า TOML เช่น:
...
rate-limit = 5
rate-limit-burst = 300
...
รองรับขีดจำกัดอัตราเศษส่วน เช่น rate-limit = 0.1