月度归档: 2021 年 11 月

  • openwrt通过wireguard组网

    openwrt通过wireguard组网

    [c-alert type=”success”]原文地址:孤岛 – openwrt通过wireguard组网[/c-alert]

    概念

    网上找的图很好理解应该

    wireguard原理就不多做解释了,我们只是人为的分客户端与服务端,因为国情在这,有时候两端不可都是可以互相访问的公网。这是理论上最好的访问模型,但实际上使用也就服务端访问这种模式。

    2021年5月21日更新

    公网环境

    wireguard实际是支持ipv6的而我的环境是ipv4动态公网就不多做关于ipv6的介绍了,在2018年CN已经全面覆盖改造ipv6了,至少移动手机端与家庭宽带都支持ipv6了。

    设备环境

    • OpenWrt R21.2.1
    • 公网IPv4
    • 移动手机端

    openwrt端配置

    软件源 系统-软件包-发行版软件源

    src/gz openwrt_core https://mirrors.cloud.tencent.com/lede/snapshots/targets/x86/64/packages
    src/gz openwrt_base https://mirrors.cloud.tencent.com/lede/snapshots/packages/x86_64/base
    src/gz openwrt_freifunk https://mirrors.cloud.tencent.com/lede/snapshots/packages/x86_64/freifunk
    src/gz openwrt_helloworld https://mirrors.cloud.tencent.com/lede/snapshots/packages/x86_64/helloworld
    src/gz openwrt_lienol https://mirrors.cloud.tencent.com/lede/snapshots/packages/x86_64/lienol
    src/gz openwrt_luci https://mirrors.cloud.tencent.com/lede/releases/18.06.8/packages/x86_64/luci
    src/gz openwrt_packages https://mirrors.cloud.tencent.com/lede/snapshots/packages/x86_64/packages
    src/gz openwrt_routing https://mirrors.cloud.tencent.com/lede/snapshots/packages/x86_64/routing
    src/gz openwrt_telephony https://mirrors.cloud.tencent.com/lede/snapshots/packages/x86_64/telephony

    安装WG

    opkg update
    opkg install wireguard luci-app-wireguard luci-i18n-wireguard-zh-cn wireguard-tools

    生成密钥

    可以在终端下生成 也可以在各客户端下生成 privatekey=私钥 publickey=公钥

    mkdir /etc/wireguard
    cd /etc/wireguard
    wg genkey | tee privatekey | wg pubkey > publickey

    以下更直观:OpenWRT 配置 WireGuard 服务端及客户端连接配置 – 静谧时光 – silencetime

    mkdir wg
    # 创建目录存放公钥私钥
    cd wg
    # 进入文件夹
    umask 077
    # 配置创建密钥的权限
    wg genpsk > sharekey
    # 创建预共享密钥
    cat sharekey
    # 获取密钥复制保存
    
    wg genkey | tee server_privatekey | wg pubkey > server_publickey
    # 创建服务端公钥和私钥
    cat server_privatekey
    # 获取服务端私钥复制保存
    cat server_publickey
    # 获取服务端公钥复制保存
    
    
    wg genkey | tee ios_privatekey | wg pubkey > ios_publickey
    # 创建 IOS 客户端公钥和私钥
    cat ios_privatekey
    # 获取 IOS 客户端私钥复制保存
    cat ios_publickey
    # 获取 IOS 客户端公钥复制保存

     

    配置接口 依次找到网络->接口 ->添加新接口,设置内容如下

    • 新接口名称:WG1
    • 新接口协议:Wireguard VPN
    创建接口

    接口基本设置

    • 私钥 程序生成
    • 监听接口 100
    • IP地址 就是接口的地址

    Peers设置

    • 公钥 就是 客户端的公钥 特别注意不是OPenwrt的对应的公钥
    • 允许的 IP 设置VPN的路由
    • 路由允许的 IP 勾选

    防火墙设置

    • 选择LAN
    防火墙设置

    防火墙 – 区域设置

    防火墙区域设置

    建立通信规则添加端口

    网络->防火墙->通信规则->添加,打开的页面为防火墙 – 通信规则 – 未命名规则,在基本设置中只需修改如下几项,其他项默认即可

    • 名称:自定义
    • 协议:UDP
    • 源区域:任意区域
    • 目标区域: 设备
    • 目标端口: 100 这个端口与上面设置端口一样
    图片1
    图片2

    最后一步步骤最最最重要的步骤一定需要做的 重启接口 重启接口 重启接口

    最后一步步骤最最最重要的步骤一定需要做的 重启接口 重启接口 重启接口

    最后一步步骤最最最重要的步骤一定需要做的 重启接口 重启接口 重启接口

    最后一步步骤最最最重要的步骤一定需要做的 重启接口 重启接口 重启接口

    先点关闭再点连接

    客户端

    另一端就好弄了,直接可以导入配置文件下面是一个典型的例子

    [Interface]
    Address =  
    ListenPort =  
    PrivateKey =  
    DNS =  
    
    [Peer]
    AllowedIPs =  
    Endpoint =  
    PublicKey =  
    PersistentKeepalive =  25

    1.1 [Interface] 部分介绍

    1. Address:设置虚拟网卡的内网地址(可选子网掩码),填写规则:
      • 可以填写任何符合规范(内网地址可选范围见链接 1,2)的内网地址,但要保证不与虚拟局域网内其它电脑的内网地址相同;
      • 可以写两行;(可选)可以写成自己的IPV6地址: Address = fd86:ea04:1115::1/64 。
    2. ListenPort:设置 udp 监听端口,可选范围为 49152 到 65535 。
    3. PrivateKey:填写本机的私钥,默认存储在本机的 /etc/wireguard/private.key 文本中。
    4. PostUp:wg-quick up wg0 启动后执行的内核防火墙( iptables )规则,可以打通 VPN ,服务器端需此参数。
    5. PostDown:wg-quick down wg0 执行删除启动时定义的内核防火墙( iptables )规则 ,服务器端需此参数。
    6. DNS ,设置 DNS ,不正确设置客户端浏览器网页会无法访问外网地址。
    7. SaveConfig:设为 true 之后,每次重启服务(stop service时)都会自动保存 config 。
    8. MTU:一般不用改,1500没问题

    1.2 [Peer] 部分介绍

    1. PublicKey :连接来节点的公钥,默认存储在其它电脑的 /etc/wireguard/public.key 文本中。
    2. AllowedIPs:允许连接的内网 ip 地址。
      • 服务器与客户端应该在同一网段,如客户端的IP为 10.0.2.1/24 ,那么这里可以设置为 10.0.2.0/24 ;
      • 可以写多个,用逗号隔开。
      • 如果写为 0.0.0.0/0 表示允许任何节点连接。
    3. Endpoint :节点的外网 IP 及端口号,服务器端不需要填写。
    4. PersistentKeepalive:用来保持连接检查的,每过25s会自动检查连通性,

    虚拟网络的启动与关闭

    启动虚拟网络执行 wg-quick up wg0

    关闭虚拟网络执行 wg-quick down wg0

     

    [c-alert type=”success”]补充:如果按照上面的操作,不可以访问局域网内的其他主机。建议增加这条试一下[/c-alert]

    OpenWRT 配置 WireGuard 服务端及客户端配置教程 | 个人杂记 (flysch.cn)

    1.2.3 防火墙
    网络 – 防火墙 – 自定义防火墙 – 添加以下防火墙 – 重启防火墙

    iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o br-lan -j MASQUERADE
    # 注意此条防火墙网段 192.168.100.0/24 需和上文服务端 IP 网段保持一致。

    [c-alert type=”success”]或者新建SNAT规则[/c-alert]

    OpenWRT+Wireguard打通异地局域网_路由器_什么值得买 (smzdm.com)

    [c-alert type=”success”]又或者添加一条静态路由,感觉也是可行的。但是没测试[/c-alert]

     

  • 举一反三,Debian利用buster-backports源更新

    举一反三,Debian利用buster-backports源更新

    近期好多PT站貌似都进行了升级,或者是cloudflare的部分CDN节点被封了

    Flexget突然间不能访问PT站的RSS的,tracker也连接不正常,提示

    curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to tracker.XXXX.XXX:443

    有说是curl版本的问题,所以想升级下curl,结果debian10默认源的curl为最新

    搜了下,发现buster-backports源里的版本比较新

    所以找到了下面的文章,直接上步骤

    添加buster-backports源-更新源-安装

    nano /etc/apt/sources.list
    #deb http://deb.debian.org/debian buster-backports main
    apt update
    apt install -t buster-backports curl /curl你要安装的软件名

     

    PS:更新crul、openssl对于修复PT站的RSS和tracker都没帮助

    原文参考:新手教程 Debian 10 如何升级官方buster-backports源5.10.X内核版本