wireguard windows\linux版本client\server的配置

1 篇文章 0 订阅
1 篇文章 0 订阅

本文实现三台机器的互联,一台server端,二台客户端,系统均为win,server win10, client 一台win7,一台win10,开源地址:可以下载windows ,mac ,linux ,android各种版本

WireGuard · GitHub

 我们下使用的是wireguard-windows版本

windows版本这个既可以当服务端,也可以当客户端来用。首先我们配置一下服务端

配置如下:

 服务段配置如下:

[Interface]
PrivateKey = gKyDkJ17/xrc/8X7RQDiJpnVMQoCMGkXGbvonLntxXg=
ListenPort = 55555
Address = 10.254.0.1/24
[Peer]
PublicKey = +iYeKrWo54FskCVmix1rLOXWfnnO4FPnS0J2SNZcWkU=
AllowedIPs = 10.254.0.2/32

[Peer]
PublicKey = osB5o/qRjglwcnmCCHEAPk23G23l/XAWJoRCnjfnDAI=
AllowedIPs = 10.254.0.3/32

 Client2端如下

[Interface]
PrivateKey = 4Gp4c+SNuZ2HAfD2qQ4JxyTF+OhW+WqE0A/mKLUZa3Y=
Address = 10.254.0.2/32
DNS = 114.114.114.114
[Peer]
PublicKey = wpCeLCeoTsV9Q3VG7vJnklNxf3qAt53S0vyMPSVaGwA=
AllowedIPs = 0.0.0.0/0
Endpoint = 10.10.10.11:55555
PersistentKeepalive = 25

Client3端如下

[Interface]
PrivateKey = qANM2T7N/675+zFyRucuOGBtRIegLoTJphdXoKiJAXo=
Address = 10.254.0.3/32
DNS = 114.114.114.114
[Peer]
PublicKey = wpCeLCeoTsV9Q3VG7vJnklNxf3qAt53S0vyMPSVaGwA=
AllowedIPs = 0.0.0.0/0
Endpoint = 10.10.10.11:55555
PersistentKeepalive = 25

这样当client2,3连通时,他们所有的IP就都走server了。但是发现打开baidu.com打不开,还要在server上面设定一下

1, 管理员 身份打开PowerShell(一定是powershell哦)

2,查找刚创建的虚拟交换机的接口索引。

可以通过运行 Get-NetAdapter 来查找接口索引

你的输出应类似下面的形式:

3,使用 New-NetIPAddress 配置 NAT 网关。 

New-NetIPAddress -IPAddress <NAT Gateway IP> -PrefixLength <NAT Subnet Prefix Length> -InterfaceIndex <ifIndex>

若要配置网关,你将需要一些有关你的网络的信息:

  • IPAddress - NAT 网关 IP 指定要用作 NAT 网关 IP 的 IPv4 或 IPv6 地址。
    常规形式将为 a.b.c.1(例如 172.16.0.1)。 尽管最后一个位置不一定必须是.1,但通常是(基于前缀长度)

    通用网关 IP 为 192.168.0.1

  • PrefixLength -- NAT 子网前缀长度定义的 NAT 本地子网大小(子网掩码)。 子网前缀长度将介于 0 到 32 之间的一个整数值。

    0 将映射整个 Internet,32 则只允许一个映射的 IP。 常用值范围从 24 到 12,具体要取决于多少 IP 需要附加到 NAT。

    常用 PrefixLength 为 24 -- 这是子网掩码 255.255.255.0

  • InterfaceIndex -- ifIndex 是你在上一步中确定的虚拟交换机的接口索引。

运行以下内容来创建 NAT 网关:

New-NetIPAddress -IPAddress 10.254.0.2 -PrefixLength 24 -InterfaceIndex 79

这时查看server配置ipv4时 就会有了ip地址

使用 New-NetNat 配置 NAT 网络。

下面是常规命令:

PowerShell复制

New-NetNat -Name <NATOutsideName> -InternalIPInterfaceAddressPrefix <NAT subnet prefix>

若要配置网关,你将需要提供一些有关网络和 NAT 网关的信息:

  • Name - NATOutsideName 描述 NAT 网络的名称。 将使用此参数删除 NAT 网络。

  • InternalIPInterfaceAddressPrefix - NAT 子网前缀同时描述上述 NAT 网关 IP 前缀和上述 NAT 子网前缀长度。

常规形式将为 a.b.c.0/NAT 子网前缀长度

综上所述,对于本示例,我们将使用 192.168.0.0/24

对于我们的示例,运行以下命令以设置 NAT 网络

New-NetNat  -Name MyNATnetwork -InternalIPInterfaceAddressPrefix 10.254.0.0/24

 

 当再次执行下面命令时

New-NetNat  -Name MyNATnetwork -InternalIPInterfaceAddressPrefix 10.254.0.0/24

会报错,因为已经生成了

 使用NetNat可以查看已经建立好的 NAT 网络

使用Remove-NetNat可以清空Nat网络

 

 这样,客户端所有上网的访问都是经过了10.10.10.11来上网了。

如果有些网站不想经过10.10.10.11来使用可以改进

[Interface]
PrivateKey = 4Gp4c+SNuZ2HAfD2qQ4JxyTF+OhW+WqE0A/mKLUZa3Y=
Address = 10.254.0.2/32

[Peer]
PublicKey = wpCeLCeoTsV9Q3VG7vJnklNxf3qAt53S0vyMPSVaGwA=
AllowedIPs = 0.0.0.0/0
Endpoint = 10.10.10.11:55555
PersistentKeepalive = 25
 

注意替换PublicKey为计算机A的公钥,Endpoint为计算机A的IP地址,PersistentKeepalive为保持连接的时间,单位为秒。

AllowedIPs设置为0.0.0.0/0的含义为路由此计算机的所有流量至私有网络。

PersistentKeepalive该参数可不设置,但设置了该参数,则客户端会在每次连接后发送心跳包,保持连接。

LINUX 版本

服务端:

  1. apt update
  2. apt install wireguard
  3. apt install resolvconf
  4. 验证是否安装成功:
    modprobe wireguard && lsmod | grep wireguard
    

  5. cd /etc/wireguard/
  6. 生成服务端和客户端的公钥私钥
    # 服务端私钥
    wg genkey > server_privatekey
    # 服务端公钥
    wg pubkey < server_privatekey > server_publickey
    # 其他客户端私钥
    wg genkey > client_privatekey
    wg pubkey < client_privatekey > client_publickey
    ls -l

    spublickey 是服务端的公钥 sprivatekey是服务端的私钥, cpublickey 是客户端的公钥 cprivatekey是客户端的私钥

  7. 打开防火墙转发功能
echo 1 > /proc/sys/net/ipv4/ip_forward
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p

        8.生成服务端配置文件

echo "[Interface]
PrivateKey = $(cat server_privatekey)
Address = 10.254.0.1/24 
#如果你的服务器主网卡名称不是 eth0 ,那么请修改下面防火墙规则中最后的 eth0 为你的主网卡名称,可用ens33或者用ip a 命令进行查看
PostUp   = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
#端口号55555是随意的,但是要在防火墙上打开
ListenPort = 55555
DNS = 114.114.114.114
MTU = 1420
#[Peer] 代表客户端配置,每增加一段 [Peer] 就是增加一个客户端账号
[Peer]
PublicKey = $(cat client_publickey)
AllowedIPs = 10.254.0.2/32"|sed '/^#/d;/^\s*$/d' > wg0.conf

 

 由于我的linux服务器没有eth0,相关的设定要改为如下

echo "[Interface]
PrivateKey = $(cat server_privatekey)
Address = 10.254.0.1/24 
#如果你的服务器主网卡名称不是 eth0 ,那么请修改下面防火墙规则中最后的 eth0 为你的主网卡名称,可用ens33或者用ip a 命令进行查看
PostUp   = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o enp4s0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o enp4s0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
#端口号55555是随意的,但是要在防火墙上打开
ListenPort = 55555
DNS = 114.114.114.114
MTU = 1420
#[Peer] 代表客户端配置,每增加一段 [Peer] 就是增加一个客户端账号
[Peer]
PublicKey = $(cat client_publickey)
AllowedIPs = 10.254.0.2/32"|sed '/^#/d;/^\s*$/d' > wg0.conf

 9,生成客户端配置文件

echo "[Interface]
PrivateKey = $(cat client_privatekey)
Address = 10.254.0.2/24
DNS = 114.114.114.114
MTU = 1420
[Peer]
PublicKey = $(cat server_publickey)
# 服务器地址和端口,下面的 10.10.10.136 记得更换为你的服务器公网IP,端口请填写服务端配置时的监听端口
Endpoint = 10.10.10.136:55555
AllowedIPs = 0.0.0.0/0, ::0/0
PersistentKeepalive = 25"|sed '/^#/d;/^\s*$/d' > client.conf

10,启动Wireguard

wg-quick up wg0

11,停止Wireguard 

wg-quick down wg0

 12,查看Wireguard状态

wg

 13,如果是云服务器,安全规则记得增加对应端口55555

14,配置多用户

#重新生成一对客户端密匙
#cprivatekey1 为客户端私匙,cpublickey1 为客户端公匙

wg genkey | tee client_privatekey1 | wg pubkey > client_publickey1
wg genkey | tee client_privatekey2 | wg pubkey > client_publickey2

#服务器上执行添加客户端配置代码(新增一个 [peer]):
#$(cat cpublickey1) 这个是客户端公匙,10.254.0.3/32 这个是客户端内网IP地址,按序递增最后一位(.3),不要重复

wg set wg0 peer $(cat client_publickey) allowed-ips 10.254.0.2/32
wg-quick save wg0
wg set wg0 peer $(cat client_publickey1) allowed-ips 10.254.0.3/32
wg-quick save wg0
wg set wg0 peer $(cat client_publickey2) allowed-ips 10.254.0.4/32
wg-quick save wg0

 查看设定的结果 

wg showconf wg0

 

#生成客户端配置文件1

echo "[Interface]
PrivateKey = $(cat client_privatekey1)
Address = 10.254.0.3/24
DNS = 114.114.114.114
MTU = 1420
[Peer]
PublicKey = $(cat server_publickey)
# 服务器地址和端口,下面的 10.10.10.136 记得更换为你的服务器公网IP,端口请填写服务端配置时的监听端口
Endpoint = 10.10.10.136:55555
AllowedIPs = 0.0.0.0/0, ::0/0
PersistentKeepalive = 25"|sed '/^#/d;/^\s*$/d' > client1.conf
echo "[Interface]
PrivateKey = $(cat client_privatekey2)
Address = 10.254.0.4/24
DNS = 114.114.114.114
MTU = 1420
[Peer]
PublicKey = $(cat server_publickey)
# 服务器地址和端口,下面的 10.10.10.136 记得更换为你的服务器公网IP,端口请填写服务端配置时的监听端口
Endpoint = 10.10.10.136:55555
AllowedIPs = 0.0.0.0/0, ::0/0
PersistentKeepalive = 25"|sed '/^#/d;/^\s*$/d' > client2.conf

将client.conf进行二维码发布,linux下

apt install qrencode

cat client.conf |qrencode -t UTF8

用手机版本的wireguard直接扫码就可以加入了 

 

 

AllowedIPs地址后边加个0.0.0.0/0 /8(16,24,32)是什么意思?

是掩码的位数   
    A类IP地址的默认子网掩码为255.0.0.0(由于255相当于二进制的8位1,所以也缩写成“/8”,表示网络号占了8位);
    B类的为255.255.0.0(/16);
    C类的为255.255.255.0(/24)
    /30就是255.255.255.252
    /32就是255.255.255.255

0.0.0.0/0就是全部流量都转发

 查看

配置后需要重启服务

wg-quick down wg0
wg-quick up wg0


设置开机启动

systemctl enable wg-quick@wg0


取消开机启动

systemctl disable wg-quick@wg0

另外如果ubuntu想当客户端配置如下 

[Interface]
PrivateKey = yP8FOt6/nnnNALkDoGPJK8IUP0rOK2PVzHankNb6H1Q=
Address = 10.254.0.4/24
DNS = 114.114.114.114
MTU = 1420

[Peer]
PublicKey = NJDZsvc7wCnXNpZ+3ofzMK1S7UPfPXId/OJauKCzbnk=
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = 10.10.10.136:55555
PersistentKeepalive = 25

 当运行上面的配置时,ubuntu里的firefox就会走10.10.10.136的流量,但是wget,curl,nc等还是走的内本地Ip.这时增加主机路由表。

运行route 

 发现10.10.10.0直接就到了ens33了,这里就要改动一下

 #删除一条路由 删除的时候不用写网关

route del -net 10.10.10.0 -netmask 255.255.255.0

 运行 ip a,获取 ens33 

Wireguard Client添加主机路由表(10.10.10.136根据你的实际公网来添加)

route add 10.10.10.136 dev ens33

这时查看路由表如下  


通过下面的策略来控制对应的地址是走哪个网

route add 10.10.10.136 dev ens33
route add 10.10.10.123 dev wg0


linux配置wirguard原文链接:https://blog.csdn.net/weixin_43805459/article/details/120163031

另外在腾讯云上使用上面的方法配制时有问题,因为腾讯云的服务器上的eth0对应的IP没有对应真实IP存在问题

  • 9
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Windows Server 2016 OPC Client DCOM 是指在 Windows Server 2016 操作系统上,使用 OPC Client 和 DCOM 技术进行数据通信的一种方式。 OPC(OLE for Process Control)是一种标准化的数据通信协议,用于在工业领域中实现设备之间的数据交互。在 OPC 客户端和 OPC 服务器之间,需要使用特定协议进行通信,以便获取实时数据或进行控制操作。 DCOM(Distributed Component Object Model)是一种分布式组件对象模型,用于在不同计算机之间进行通信和远程调用。DCOM 可以支持在网络上的不同计算机之间进行通信,使得 OPC 客户端可以与运行在远程计算机上的 OPC 服务器进行数据交互。 在 Windows Server 2016 上,如果需要使用 OPC Client 和 DCOM 进行通信,需要进行以下步骤: 1. 在 Windows Server 2016 上安装 OPC 客户端软件,并确保其与 OPC 服务器兼容。 2. 在 Windows Server 2016 的防火墙中开放端口以允许 DCOM 通信。默认情况下,DCOM 使用 TCP 端口135进行通信,需要确保此端口的通信不被阻止。 3. 配置 OPC 客户端软件的连接设置,指定 OPC 服务器的 IP 地址和端口号。这些设置通常在软件的配置文件或设置界面中进行。 4. 使用 OPC 客户端软件连接到远程的 OPC 服务器,并获取实时数据或执行所需的控制操作。 总之,Windows Server 2016 OPC Client DCOM 是为了在 Windows Server 2016 操作系统上实现 OPC 客户端与远程 OPC 服务器之间使用 DCOM 进行数据通信的方式。通过配置和连接设置,可以在 Windows Server 2016 上使用 OPC 客户端软件与远程 OPC 服务器进行数据交互。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值