This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
technical:vpn:tinc [2022/09/12 19:16] – jc | technical:vpn:tinc [2023/05/13 18:14] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
< | < | ||
- | # Install | + | # Tinc VPN |
- | # Generate Keys | + | |
- | # Config | + | ## Install |
- | # Startup | + | |
- | # Shell Script | + | ### Arch Linux |
+ | |||
+ | ```bash | ||
+ | sudo pacman -S tinc | ||
+ | ``` | ||
+ | |||
+ | ### Slackware Linux | ||
+ | |||
+ | ```bash | ||
+ | wget https:// | ||
+ | tar xzvf tinc.tar.gz | ||
+ | cd tinc | ||
+ | source tinc.info | ||
+ | wget $DOWNLOAD | ||
+ | sudo ./ | ||
+ | sudo installpkg tinc-1.0.36-x86_64-1_SBo.tgz | ||
+ | ``` | ||
+ | |||
+ | ## Generate Keys | ||
+ | |||
+ | ```bash | ||
+ | tincd -n < | ||
+ | ``` | ||
+ | |||
+ | ## Config | ||
+ | |||
+ | Copy keys to `/ | ||
+ | |||
+ | |||
+ | ```bash | ||
+ | sudo mkdir -p / | ||
+ | cp rsa_key.* / | ||
+ | ``` | ||
+ | |||
+ | |||
+ | Create tinc-up and tinc-down scripts. | ||
+ | |||
+ | `/ | ||
+ | |||
+ | ``` | ||
+ | # | ||
+ | TUN="< | ||
+ | SUB="< | ||
+ | IP="< | ||
+ | |||
+ | ip link set $TUN up | ||
+ | ip addr add $IP dev tinc0 | ||
+ | ip route add $SUB dev tinc0 | ||
+ | ``` | ||
+ | |||
+ | `/ | ||
+ | |||
+ | ``` | ||
+ | # | ||
+ | TUN="< | ||
+ | SUB="< | ||
+ | IP="< | ||
+ | |||
+ | ip link set $TUN down | ||
+ | ip route del $SUB dev $TUN | ||
+ | ip addr del $IP dev $TUN | ||
+ | ``` | ||
+ | |||
+ | Create tinc configuration | ||
+ | |||
+ | `/ | ||
+ | |||
+ | ``` | ||
+ | Name = < | ||
+ | Device = / | ||
+ | AddressFamily = ipv4 | ||
+ | ConnectTo = < | ||
+ | Interface = < | ||
+ | Mode = router | ||
+ | Port = < | ||
+ | ``` | ||
+ | |||
+ | Add tinc peers | ||
+ | |||
+ | `/ | ||
+ | |||
+ | ``` | ||
+ | Subnet = < | ||
+ | Address = < | ||
+ | |||
+ | < | ||
+ | ``` | ||
+ | |||
+ | ## Startup | ||
+ | |||
+ | Start tincd | ||
+ | |||
+ | ```bash | ||
+ | VPN=$(ls / | ||
+ | for VPN in $VPNS; do | ||
+ | echo " | ||
+ | / | ||
+ | done | ||
+ | ``` | ||
+ | |||
+ | ## Shell Script | ||
+ | |||
+ | ```bash | ||
+ | #!/bin/sh | ||
+ | |||
+ | VPNS=$(ls / | ||
+ | |||
+ | start () { | ||
+ | for VPN in $VPNS; do | ||
+ | echo " | ||
+ | / | ||
+ | done | ||
+ | } | ||
+ | |||
+ | stop () { | ||
+ | for VPN in $VPNS; do | ||
+ | echo " | ||
+ | / | ||
+ | done | ||
+ | } | ||
+ | |||
+ | restart () { | ||
+ | stop | ||
+ | sleep 1 | ||
+ | start | ||
+ | } | ||
+ | |||
+ | case " | ||
+ | (" | ||
+ | start | ||
+ | ;; | ||
+ | (" | ||
+ | stop | ||
+ | ;; | ||
+ | (" | ||
+ | restart | ||
+ | ;; | ||
+ | (*) | ||
+ | echo " | ||
+ | exit 1 | ||
+ | esac | ||
+ | |||
+ | exit 0 | ||
+ | |||
+ | ``` | ||
</ | </ | ||
+ |