VPN配置

OpenVPN

docker-compose启动

原始连接见1,知乎相关配置见2

  • Add a new service in docker-compose.yml
# 更新时区

FROM kylemanna/openvpn:latest

RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/' /etc/apk/repositories
RUN apk add --no-cache tzdata
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' > /etc/timezone
version: '2'
services:
  openvpn:
    build:
	    context: .
	    dockerfile: Dockerfile
    environment:
     - TZ=Asia/Shanghai
    cap_add:
     - NET_ADMIN
    container_name: openvpn
    network_mode: bridge # 目前要是bridge模式而不是重新创建的network
    ports:
     - "1194:1194/udp"
    restart: always
    volumes:
     - ./openvpn-data/conf:/etc/openvpn
  • Initialize the configuration files and certificates
# 注意-N,需要有-N才能开启Nat,使得可以访问外部网络
docker-compose run --rm openvpn ovpn_genconfig -N -u udp://your_host -2 -C AES-256-CBC
docker-compose run --rm openvpn ovpn_initpki
  • Start OpenVPN server process
docker-compose up -d openvpn
  • You can access the container logs with
docker-compose logs -f
  • Generate a client certificate
export CLIENTNAME="your_client_name"
# with a passphrase (recommended)
docker-compose run --rm openvpn easyrsa build-client-full $CLIENTNAME
# without a passphrase (not recommended)
docker-compose run --rm openvpn easyrsa build-client-full $CLIENTNAME nopass
  • Retrieve the client configuration with embedded certificates
docker-compose run --rm openvpn ovpn_getclient $CLIENTNAME > $CLIENTNAME.ovpn
  • Generate OTP configuration
docker-compose run --rm openvpn ovpn_otp_user <user>
# 相当于
google-authenticator --time-based --disallow-reuse --force --rate-limit=3 --rate-time=30 --window-size=3 -l "<user>@${OVPN_CN}" -s /etc/openvpn/otp/<user>.google_authenticator
/etc/openvpn/otp/<user>.google_authenticator的用户和组必须是root,并且权限为0400,否则会一直出现验证失败。
  • Test OTP
pamtester -v openvpn <user> authenticate
  • Revoke a client certificate
# Keep the corresponding crt, key and req files.
docker-compose run --rm openvpn ovpn_revokeclient $CLIENTNAME
# Remove the corresponding crt, key and req files.
docker-compose run --rm openvpn ovpn_revokeclient $CLIENTNAME remove

Debugging Tips

  • Create an environment variable with the name DEBUG and value of 1 to enable debug output (using “docker -e”).
docker-compose run -e DEBUG=1 -p 1194:1194/udp openvpn

PAM 2FA配置

3

实践

services:
  openvpn:
    image: kylemanna/openvpn:latest
    cap_add:
     - NET_ADMIN
    environment:
      - TZ=Asia/Shanghai
    container_name: openvpn
    network_mode: host
    restart: always
    privileged: true
    volumes:
     - ./data/openvpn:/etc/openvpn
     - /etc/localtime:/etc/localtime:ro
     - /etc/timezone:/etc/timezone:ro
#!/bin/bash
sudo docker-compose run --rm openvpn ovpn_genconfig -N -u udp://<IP>:<PORT> -2 -C AES-256-CBC
sudo docker-compose run --rm openvpn ovpn_initpki
sudo docker-compose up -d openvpn
#!/bin/bash

set -x

if [ -n "$1" ]; then
  CLIENT_NAME=$1
  echo "Adding user: $CLIENT_NAME"
  # generate the crt
  sudo docker-compose run --rm openvpn easyrsa build-client-full $CLIENT_NAME nopass
  sudo docker-compose run --rm openvpn ovpn_getclient $CLIENT_NAME > $CLIENT_NAME.ovpn

  # generate the otp token
  sudo docker-compose run --rm openvpn ovpn_otp_user $CLIENT_NAME

  # ATTENTION: change the token mode
  sudo docker-compose run --rm openvpn chmod 0400 /etc/openvpn/otp/${CLIENT_NAME}.google_authenticator

  SAVE_DIR=./user_infos/$CLIENT_NAME
  mkdir -p $SAVE_DIR

  mv $CLIENT_NAME.ovpn $SAVE_DIR
  sudo cp ./data/openvpn/otp/${CLIENT_NAME}.google_authenticator $SAVE_DIR

  cd $SAVE_DIR
  sudo chmod a+wr ${CLIENT_NAME}.google_authenticator

  zip -m $CLIENT_NAME.zip $CLIENT_NAME.ovpn ${CLIENT_NAME}.google_authenticator

else
  echo "Input a user name."
fi
#!/bin/bash

set -x

if [ -n "$1" ]; then
  CLIENT_NAME=$1
  echo "Deleting openvpn user: ${CLIENT_NAME}"
  sudo docker-compose run --rm openvpn ovpn_revokeclient ${CLIENT_NAME} remove
  sudo docker-compose run --rm openvpn rm /etc/openvpn/otp/${CLIENT_NAME}.google_authenticator
  rm -r ./user_infos/$CLIENT_NAME
else
  echo "Input a user name."
fi

配置

服务端

找到openvpn.conf文件,按照如下修改

server 192.168.255.0 255.255.255.0
verb 3
key /etc/openvpn/pki/private/xxxxxx.key
ca /etc/openvpn/pki/ca.crt
cert /etc/openvpn/pki/issued/xxxxxx.crt
dh /etc/openvpn/pki/dh.pem
tls-auth /etc/openvpn/pki/ta.key
key-direction 0
keepalive 10 60
persist-key
persist-tun

proto udp
# Rely on Docker to do port mapping, internally always 1194
port 29999
dev tun0
status /tmp/openvpn-status.log

user nobody
group nogroup
cipher AES-256-CBC
comp-lzo no

### Route Configurations Below
route 192.168.254.0 255.255.255.0

# push路由到客户端,使得只重定向以下子网的流量
push "route 192.168.111.0 255.255.255.0"
push "route 192.168.110.0 255.255.255.0"

# 注释掉dns相关配置,使得客户端可以实用本地的dns解析,而不是非要走代理
### Push Configurations Below
# push "block-outside-dns"
# push "dhcp-option DNS 114.114.114.114"
# push "dhcp-option DNS 8.8.8.8"
push "comp-lzo no"


# Enable OTP+PAM for user authentication
plugin /usr/lib/openvpn/plugins/openvpn-plugin-auth-pam.so openvpn
reneg-sec 0

客户端

默认OpenVPN的配置文件是全局流量都走VPN的,这导致OpenVPN服务器会很卡,通常需要修改配置文件,是的特定的路由走VPN。

OpenVPN Windows客户端的配置文件在%APPDATA%\OpenVPN Connect\profiles中,打开并修改:

# 注释掉这行,这行的意思是所有流量都走vpn
# redirect-gateway def1

# DEPRECATED: 从服务端部分已经配置过push配置了,以下配置不需要了(新版openvpn客户端不支持了)
# 添加这行,用于避免从server拉取配置,
# route-nopull
# 随后添加路由,指定特定网段的流量走VPN
# route <目标IP> <子网掩码>
# 举个例子,一下写法表示网段192.168.111.0/24的流量都走VPN
# route 192.168.111.0 255.255.255.0

Windows下,没有开启VPN的情况下,路由状况查询:

# 首先查看网络接口情况
ipconfig
Windows IP 配置


未知适配器 本地连接:

   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::779d:c298:bfdd:6529%10
   IPv4 地址 . . . . . . . . . . . . : 2.0.0.1
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . :

未知适配器 本地连接 2:

   媒体状态  . . . . . . . . . . . . : 媒体已断开连接
   连接特定的 DNS 后缀 . . . . . . . :

以太网适配器 vEthernet (Default Switch):

   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::1544:dc78:ee99:7278%24
   IPv4 地址 . . . . . . . . . . . . : 172.22.112.1
   子网掩码  . . . . . . . . . . . . : 255.255.240.0
   默认网关. . . . . . . . . . . . . :

以太网适配器 vEthernet (WslBridge):

   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::a3a2:450d:c89e:dabe%4
   自动配置 IPv4 地址  . . . . . . . : 169.254.140.62
   子网掩码  . . . . . . . . . . . . : 255.255.0.0
   默认网关. . . . . . . . . . . . . :

未知适配器 OpenVPN Connect DCO Adapter:

   媒体状态  . . . . . . . . . . . . : 媒体已断开连接
   连接特定的 DNS 后缀 . . . . . . . :

以太网适配器 以太网:

   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::6dea:7db:df37:dc41%16
   IPv4 地址 . . . . . . . . . . . . : 192.168.0.52
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . : 192.168.0.1

以太网适配器 蓝牙网络连接:

   媒体状态  . . . . . . . . . . . . : 媒体已断开连接
   连接特定的 DNS 后缀 . . . . . . . :

# `Windows`下使用`route print`可以查看当前的路由表:
===========================================================================
接口列表
 10...00 ff 64 9d 12 2d ......Sangfor aTrust VNIC
 18...00 ff b2 3c e1 34 ......TAP-Windows Adapter V9 for OpenVPN Connect
 24...00 15 5d 2a 44 01 ......Hyper-V Virtual Ethernet Adapter
  4...00 15 5d 00 34 00 ......Hyper-V Virtual Ethernet Adapter #3
  6...........................OpenVPN Data Channel Offload
 16...d8 5e d3 21 53 b0 ......Intel(R) Ethernet Connection (12) I219-V
 17...f4 4e fc e1 83 49 ......Bluetooth Device (Personal Area Network)
  1...........................Software Loopback Interface 1
===========================================================================

IPv4 路由表
===========================================================================
活动路由:
网络目标        网络掩码          网关       接口   跃点数
          0.0.0.0          0.0.0.0      192.168.0.1     192.168.0.52    291
          2.0.0.0    255.255.255.0            在链路上           2.0.0.1    257
          2.0.0.1  255.255.255.255            在链路上           2.0.0.1    257
        2.0.0.255  255.255.255.255            在链路上           2.0.0.1    257
        127.0.0.0        255.0.0.0            在链路上         127.0.0.1    331
        127.0.0.1  255.255.255.255            在链路上         127.0.0.1    331
  127.255.255.255  255.255.255.255            在链路上         127.0.0.1    331
      169.254.0.0      255.255.0.0            在链路上    169.254.140.62    271
   169.254.140.62  255.255.255.255            在链路上    169.254.140.62    271
  169.254.255.255  255.255.255.255            在链路上    169.254.140.62    271
     172.22.112.0    255.255.240.0            在链路上      172.22.112.1    271
     172.22.112.1  255.255.255.255            在链路上      172.22.112.1    271
   172.22.127.255  255.255.255.255            在链路上      172.22.112.1    271
      192.168.0.0    255.255.255.0            在链路上      192.168.0.52    291
     192.168.0.52  255.255.255.255            在链路上      192.168.0.52    291
    192.168.0.255  255.255.255.255            在链路上      192.168.0.52    291
        224.0.0.0        240.0.0.0            在链路上         127.0.0.1    331
        224.0.0.0        240.0.0.0            在链路上      192.168.0.52    291
        224.0.0.0        240.0.0.0            在链路上    169.254.140.62    271
        224.0.0.0        240.0.0.0            在链路上      172.22.112.1    271
  255.255.255.255  255.255.255.255            在链路上         127.0.0.1    331
  255.255.255.255  255.255.255.255            在链路上      192.168.0.52    291
  255.255.255.255  255.255.255.255            在链路上    169.254.140.62    271
  255.255.255.255  255.255.255.255            在链路上      172.22.112.1    271
===========================================================================
永久路由:
  网络地址          网络掩码  网关地址  跃点数
          0.0.0.0          0.0.0.0      192.168.0.1     默认
===========================================================================

IPv6 路由表
===========================================================================
活动路由:
 接口跃点数网络目标                网关
  1    331 ::1/128                  在链路上
 10    281 fe80::/64                在链路上
 16    291 fe80::/64                在链路上
  4    271 fe80::/64                在链路上
 24    271 fe80::/64                在链路上
 24    271 fe80::1544:dc78:ee99:7278/128
                                    在链路上
 16    291 fe80::6dea:7db:df37:dc41/128
                                    在链路上
 10    281 fe80::779d:c298:bfdd:6529/128
                                    在链路上
  4    271 fe80::a3a2:450d:c89e:dabe/128
                                    在链路上
  1    331 ff00::/8                 在链路上
 10    281 ff00::/8                 在链路上
 16    291 ff00::/8                 在链路上
  4    271 ff00::/8                 在链路上
 24    271 ff00::/8                 在链路上
===========================================================================
永久路由:

打开VPN之后(没有修改redirect-gateway情况下):

Windows IP 配置


未知适配器 本地连接:

   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::779d:c298:bfdd:6529%10
   IPv4 地址 . . . . . . . . . . . . : 2.0.0.1
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . :

未知适配器 本地连接 2:

   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::6c02:a4c5:db79:b989%18
   IPv4 地址 . . . . . . . . . . . . : 192.168.255.6
   子网掩码  . . . . . . . . . . . . : 255.255.255.252
   默认网关. . . . . . . . . . . . . :

以太网适配器 vEthernet (Default Switch):

   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::32fc:ac63:bc01:fba5%24
   IPv4 地址 . . . . . . . . . . . . : 172.22.112.1
   子网掩码  . . . . . . . . . . . . : 255.255.240.0
   默认网关. . . . . . . . . . . . . :

以太网适配器 vEthernet (WslBridge):

   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::a3a2:450d:c89e:dabe%4
   自动配置 IPv4 地址  . . . . . . . : 169.254.140.62
   子网掩码  . . . . . . . . . . . . : 255.255.0.0
   默认网关. . . . . . . . . . . . . :

未知适配器 OpenVPN Connect DCO Adapter:

   媒体状态  . . . . . . . . . . . . : 媒体已断开连接
   连接特定的 DNS 后缀 . . . . . . . :

以太网适配器 以太网:

   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::6dea:7db:df37:dc41%16
   IPv4 地址 . . . . . . . . . . . . : 192.168.0.52
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . : 192.168.0.1

以太网适配器 蓝牙网络连接:

   媒体状态  . . . . . . . . . . . . : 媒体已断开连接
   连接特定的 DNS 后缀 . . . . . . . :
===========================================================================
接口列表
 10...00 ff 64 9d 12 2d ......Sangfor aTrust VNIC
 18...00 ff b2 3c e1 34 ......TAP-Windows Adapter V9 for OpenVPN Connect
 24...00 15 5d 16 a5 35 ......Hyper-V Virtual Ethernet Adapter
  4...00 15 5d 00 34 00 ......Hyper-V Virtual Ethernet Adapter #3
  6...........................OpenVPN Data Channel Offload
 16...d8 5e d3 21 53 b0 ......Intel(R) Ethernet Connection (12) I219-V
 17...f4 4e fc e1 83 49 ......Bluetooth Device (Personal Area Network)
  1...........................Software Loopback Interface 1
===========================================================================

IPv4 路由表
===========================================================================
活动路由:
网络目标        网络掩码          网关       接口   跃点数
          0.0.0.0          0.0.0.0      192.168.0.1     192.168.0.52    291
          0.0.0.0        128.0.0.0    192.168.255.5    192.168.255.6    257
          2.0.0.0    255.255.255.0            在链路上           2.0.0.1    257
          2.0.0.1  255.255.255.255            在链路上           2.0.0.1    257
        2.0.0.255  255.255.255.255            在链路上           2.0.0.1    257
        127.0.0.0        255.0.0.0            在链路上         127.0.0.1    331
        127.0.0.1  255.255.255.255            在链路上         127.0.0.1    331
  127.255.255.255  255.255.255.255            在链路上         127.0.0.1    331
        128.0.0.0        128.0.0.0    192.168.255.5    192.168.255.6    257
      169.254.0.0      255.255.0.0            在链路上    169.254.140.62    271
   169.254.140.62  255.255.255.255            在链路上    169.254.140.62    271
  169.254.255.255  255.255.255.255            在链路上    169.254.140.62    271
     172.22.112.0    255.255.240.0            在链路上      172.22.112.1    271
     172.22.112.1  255.255.255.255            在链路上      172.22.112.1    271
   172.22.127.255  255.255.255.255            在链路上      172.22.112.1    271
   183.128.234.53  255.255.255.255      192.168.0.1     192.168.0.52    291
      192.168.0.0    255.255.255.0            在链路上      192.168.0.52    291
     192.168.0.52  255.255.255.255            在链路上      192.168.0.52    291
    192.168.0.255  255.255.255.255            在链路上      192.168.0.52    291
    192.168.255.1  255.255.255.255    192.168.255.5    192.168.255.6    257
    192.168.255.4  255.255.255.252            在链路上     192.168.255.6    257
    192.168.255.6  255.255.255.255            在链路上     192.168.255.6    257
    192.168.255.7  255.255.255.255            在链路上     192.168.255.6    257
        224.0.0.0        240.0.0.0            在链路上         127.0.0.1    331
        224.0.0.0        240.0.0.0            在链路上     192.168.255.6    257
        224.0.0.0        240.0.0.0            在链路上      192.168.0.52    291
        224.0.0.0        240.0.0.0            在链路上    169.254.140.62    271
        224.0.0.0        240.0.0.0            在链路上      172.22.112.1    271
  255.255.255.255  255.255.255.255            在链路上         127.0.0.1    331
  255.255.255.255  255.255.255.255            在链路上     192.168.255.6    257
  255.255.255.255  255.255.255.255            在链路上      192.168.0.52    291
  255.255.255.255  255.255.255.255            在链路上    169.254.140.62    271
  255.255.255.255  255.255.255.255            在链路上      172.22.112.1    271
===========================================================================
永久路由:
  网络地址          网络掩码  网关地址  跃点数
          0.0.0.0          0.0.0.0      192.168.0.1     默认
===========================================================================

IPv6 路由表
===========================================================================
活动路由:
 接口跃点数网络目标                网关
  1    331 ::1/128                  在链路上
 10    281 fe80::/64                在链路上
 18    281 fe80::/64                在链路上
 16    291 fe80::/64                在链路上
  4    271 fe80::/64                在链路上
 24    271 fe80::/64                在链路上
 24    271 fe80::32fc:ac63:bc01:fba5/128
                                    在链路上
 18    281 fe80::6c02:a4c5:db79:b989/128
                                    在链路上
 16    291 fe80::6dea:7db:df37:dc41/128
                                    在链路上
 10    281 fe80::779d:c298:bfdd:6529/128
                                    在链路上
  4    271 fe80::a3a2:450d:c89e:dabe/128
                                    在链路上
  1    331 ff00::/8                 在链路上
 10    281 ff00::/8                 在链路上
 18    281 ff00::/8                 在链路上
 16    291 ff00::/8                 在链路上
  4    271 ff00::/8                 在链路上
 24    271 ff00::/8                 在链路上
===========================================================================
永久路由:

当OpenVPN配置route之后:

===========================================================================
接口列表
 10...00 ff 64 9d 12 2d ......Sangfor aTrust VNIC
 18...00 ff b2 3c e1 34 ......TAP-Windows Adapter V9 for OpenVPN Connect
 24...00 15 5d 2a 44 01 ......Hyper-V Virtual Ethernet Adapter
  4...00 15 5d 00 34 00 ......Hyper-V Virtual Ethernet Adapter #3
  6...........................OpenVPN Data Channel Offload
 16...d8 5e d3 21 53 b0 ......Intel(R) Ethernet Connection (12) I219-V
 17...f4 4e fc e1 83 49 ......Bluetooth Device (Personal Area Network)
  1...........................Software Loopback Interface 1
===========================================================================

IPv4 路由表
===========================================================================
活动路由:
网络目标        网络掩码          网关       接口   跃点数
          0.0.0.0          0.0.0.0      192.168.0.1     192.168.0.52    291
          2.0.0.0    255.255.255.0            在链路上           2.0.0.1    257
          2.0.0.1  255.255.255.255            在链路上           2.0.0.1    257
        2.0.0.255  255.255.255.255            在链路上           2.0.0.1    257
        127.0.0.0        255.0.0.0            在链路上         127.0.0.1    331
        127.0.0.1  255.255.255.255            在链路上         127.0.0.1    331
  127.255.255.255  255.255.255.255            在链路上         127.0.0.1    331
      169.254.0.0      255.255.0.0            在链路上    169.254.140.62    271
   169.254.140.62  255.255.255.255            在链路上    169.254.140.62    271
  169.254.255.255  255.255.255.255            在链路上    169.254.140.62    271
     172.22.112.0    255.255.240.0            在链路上      172.22.112.1    271
     172.22.112.1  255.255.255.255            在链路上      172.22.112.1    271
   172.22.127.255  255.255.255.255            在链路上      172.22.112.1    271
   183.128.234.53  255.255.255.255      192.168.0.1     192.168.0.52    291
      192.168.0.0    255.255.255.0            在链路上      192.168.0.52    291
     192.168.0.52  255.255.255.255            在链路上      192.168.0.52    291
    192.168.0.255  255.255.255.255            在链路上      192.168.0.52    291
    192.168.111.0    255.255.255.0    192.168.255.5    192.168.255.6    257
    192.168.255.1  255.255.255.255    192.168.255.5    192.168.255.6    257
    192.168.255.4  255.255.255.252            在链路上     192.168.255.6    257
    192.168.255.6  255.255.255.255            在链路上     192.168.255.6    257
    192.168.255.7  255.255.255.255            在链路上     192.168.255.6    257
        224.0.0.0        240.0.0.0            在链路上         127.0.0.1    331
        224.0.0.0        240.0.0.0            在链路上     192.168.255.6    257
        224.0.0.0        240.0.0.0            在链路上      192.168.0.52    291
        224.0.0.0        240.0.0.0            在链路上    169.254.140.62    271
        224.0.0.0        240.0.0.0            在链路上      172.22.112.1    271
  255.255.255.255  255.255.255.255            在链路上         127.0.0.1    331
  255.255.255.255  255.255.255.255            在链路上     192.168.255.6    257
  255.255.255.255  255.255.255.255            在链路上      192.168.0.52    291
  255.255.255.255  255.255.255.255            在链路上    169.254.140.62    271
  255.255.255.255  255.255.255.255            在链路上      172.22.112.1    271
===========================================================================
永久路由:
  网络地址          网络掩码  网关地址  跃点数
          0.0.0.0          0.0.0.0      192.168.0.1     默认
===========================================================================

IPv6 路由表
===========================================================================
活动路由:
 接口跃点数网络目标                网关
  1    331 ::1/128                  在链路上
 10    281 fe80::/64                在链路上
 18    281 fe80::/64                在链路上
 16    291 fe80::/64                在链路上
  4    271 fe80::/64                在链路上
 24    271 fe80::/64                在链路上
 24    271 fe80::1544:dc78:ee99:7278/128
                                    在链路上
 18    281 fe80::6c02:a4c5:db79:b989/128
                                    在链路上
 16    291 fe80::6dea:7db:df37:dc41/128
                                    在链路上
 10    281 fe80::779d:c298:bfdd:6529/128
                                    在链路上
  4    271 fe80::a3a2:450d:c89e:dabe/128
                                    在链路上
  1    331 ff00::/8                 在链路上
 10    281 ff00::/8                 在链路上
 18    281 ff00::/8                 在链路上
 16    291 ff00::/8                 在链路上
  4    271 ff00::/8                 在链路上
 24    271 ff00::/8                 在链路上
===========================================================================
永久路由:

路由表信息解释:

  • 跃点数:通常用于表示路由的成本,即从当前网络设备到目标网络的跳数,一般来说,跃点数越少,表示到达目标的路径越短,越优先
  • 网管字段中在链路上:表示目标流量可以直接在链路上传递,不需要外部网关。
  • 默认路由0.0.0.0:当目标地址不在任何其他路由条目中的时候,流量将通过该默认路由走。
  • 如何看出所有流量都走了VPN:看默认路由的配置,开启VPN之后多了一条0.0.0.0 128.0.0.0 192.168.255.5 192.168.255.6 257 ,并且这个默认路由的跃点数要低于前面的默认路由,所以优先级高。这条路由表示,默认流量通过192.168.255.6接口,流量192.168.255.5网关。
  • 当改了VPN的路由条件之后:没有多出默认路由,只是多了一条192.168.111.0 255.255.255.0 192.168.255.5 192.168.255.6 257也就是我指定的路由条件。

连接

  1. GUI:所有平台都有GUI。
  2. linux命令行
# 安装
sudo apt install openvpn
# 拷贝配置文件到~/.ovpn/xxxxxx.ovpn
# 连接
openvpn --config ~/.ovpn/xxxxx.ovpn

Wireguard

WireGuard: fast, modern, secure VPN tunnel

Tailscale

一个基于WireGuard协议的异地组网方案。

架构

Tailscale 的默认架构包括以下组件

  • 协调服务器(Coordination Server):用于设备注册、身份验证和节点发现。
  • DERP 服务器:用于在中继模式下帮助设备建立连接(尤其是在 NAT 穿透失败时)。 默认情况下,这些服务由 Tailscale 官方提供,但你可以替换为自己的实现。
  • tailscale工作原理:Tailscale: How it works

全自建过程

https://zhuanlan.zhihu.com/p/720934326