当前位置:首页 > 软件 > 正文内容

利用WireGuard建立IPv6隧道

ym023011个月前 (06-05)软件285

Debian9安装:

echo "deb http://deb.debian.org/debian/ unstable main" > /etc/apt/sources.list.d/unstable.list
apt -y update
apt -y install linux-headers-$(uname -r)
apt -y install openresolv
apt -y install resolvconf
apt -y install wireguard

CentOS7:

curl -Lo /etc/yum.repos.d/wireguard.repo https://copr.fedorainfracloud.org/coprs/jdoss/wireguard/repo/epel-7/jdoss-wireguard-epel-7.repo
yum -y install epel-release
yum -y install kernel-headers-$(uname -r) kernel-devel-$(uname -r)
yum -y install wireguard-dkms wireguard-tools

开IPv4和v6的转发:

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.all.forwarding = 1" >> /etc/sysctl.conf
sysctl -p

CentOS7要自己手动新建一个配置文件存放目录,Debian不需要:

mkdir -p /etc/wireguard

然后生成服务端的私钥/公钥

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

接着是客户端的私钥/公钥:

wg genkey | tee /etc/wireguard/clientprivatekey | wg pubkey > /etc/wireguard/clientpublickey

然后新建服务端的配置文件:

nano /etc/wireguard/wg0.conf

Debian9的配置如下:

[Interface]
PrivateKey = 服务端私钥
Address = 192.168.0.1/24, 2001:20:2333::1/28
ListenPort = 23333
DNS = 8.8.8.8, 2001:4860:4860::8888
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens18 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o ens18 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens18 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o ens18 -j MASQUERADE
SaveConfig = true

[Peer]
PublicKey = 客户端公钥
AllowedIPs = 192.168.0.0/24, 2001:20:2333::1/28

因为WireGuard在配置文件内支持这种PostUp/PostDown的语法,所以我们可以直接把iptables的转发规则写在配置文件内,这样每次开机只要WireGuard运行都会自动加载iptables配置。

如果是CentOS7,配置文件就这样写:

[Interface]
PrivateKey = 服务端私钥
Address = 192.168.0.1/24, 2001:20:2333::1/28
ListenPort = 23333
DNS = 8.8.8.8, 2001:4860:4860::8888

[Peer]
PublicKey = 客户端公钥
AllowedIPs = 192.168.0.0/24, 2001:20:2333::1/28

然后我们自己用firewall做转发:

firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=192.168.0.0/24 masquerade'
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i wg0 -o eth0 -j ACCEPT
firewall-cmd --permanent --add-rich-rule='rule family=ipv6 source address=2001:20:2333::1/28 masquerade'
firewall-cmd --permanent --direct --add-rule ipv6 filter FORWARD 0 -i wg0 -o eth0 -j ACCEPT
firewall-cmd --permanent --add-port=23333/udp
firewall-cmd --reload

属实无论是iptables还是firewalld这些防火墙真的难用的一批,我一般情况下,不是必须用到它的功能,我都是直接关闭的,或者自己装一个ufw。

还有我他妈前段时间在Proxmox上配防火墙把全端口封了(我把我自己强了),还好那机器有各种救援系统,登进去搞了几个小时算是恢复了,不然要出事。。。算了不扯这些没用的了。。

现在启动WireGuard:

wg-quick up wg0

没问题的话设置开机启动:

systemctl enable wg-quick@wg0

接下来就是客户端配置文件了,这个通用:

[Interface]
PrivateKey = 客户端私钥
Address = 192.168.0.2/24, 2001:20:2333::666/28
DNS = 8.8.8.8, 2001:4860:4860::8888

[Peer]
PublicKey = 服务端公钥
Endpoint = 服务端公网IP:23333
AllowedIPs = 0.0.0.0/0, ::0/0
PersistentKeepalive = 25

配置到TunSafe之后连接,你本地应该就可以用上服务器内的IPv6了,而且我发现走IPv6的流量没干扰,比如访问Google,用WireGuard走IPv4各种阻断,IPv6就畅通无阻。。。

烦躁的一批,想用个IPv6就这么难!还有那些公共的免费隧道,比如HE的那个,延迟太高了,没什么卵用。

firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=10.0.0.0/24 masquerade'

firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i wg0 -o ens160 -j ACCEPT

firewall-cmd --permanent --add-port=33142/udp

firewall-cmd --reload


扫描二维码推送至手机访问。

版权声明:本文由嘉睿博客发布,如需转载请注明出处。

本文链接:https://tius.cc/?id=34

标签: WireGuard
分享给朋友:

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。