传统的frp、ngrok虽然可以达到内网穿透的效果,但是对于全端口映射是非常不方便的,因此想到使用Wireguard和RouterOS将服务器的ip分配给本地的方案。
参考这个大佬的链接:https://aoyouer.com/posts/wireguard-l3-forward/
主要分为以下几个过程:
1、开启net.ipv4.ip_forward
2、安装wireguard
3、配置wireguard服务端
4、更改ssh端口
5、routeros配置wireguard
6、添加路由规则
7、测试
1、开启net.ipv4.ip_forward
echo "net.ipv4.ip_forward=1">>/etc/sysctl.conf
sysctl -p
2、安装wireguard
apt install wireguard iptables -y#安装wireguardmodprobe wireguard && lsmod | grep wireguard#验证安装是否成功
2、配置wireguard服务端
cd /etc/wireguard# 首先进入配置文件目录wg genkey | tee sprivatekey | wg pubkey > spublickey
wg genkey | tee cprivatekey | wg pubkey > cpublickey#生成公钥和私钥
echo "[Interface]
# 服务器的私匙,对应客户端配置中的公匙(自动读取上面刚刚生成的密匙内容)
PrivateKey = $(cat sprivatekey)# 本机的内网IP地址,一般默认即可,除非和你服务器或客户端设备本地网段冲突
Address = 192.168.145.1/24
PostUp = iptables -t nat -A PREROUTING -d 10.0.24.11 -p tcp -m multiport --dports 65533,65534 -j ACCEPT; iptables -t nat -A PREROUTING -d 10.0.24.11 -p udp -m multiport --dports 65533,65534 -j ACCEPT; iptables -t nat -A PREROUTING -d 10.0.24.11 -j DNAT --to-destination 10.10.0.34; iptables -t nat -A POSTROUTING -s 10.10.0.34 -j SNAT --to-source 10.0.24.11;
#10.0.24.11替换为你自己的网卡地址 65533为ssh端口 65534为wireguard端口
PostDown = iptables -t nat -D PREROUTING -d 10.0.24.11 -p tcp -m multiport --dports 65533,65534 -j ACCEPT; iptables -t nat -D PREROUTING -d 10.0.24.11 -p udp -m multiport --dports 65533,65534 -j ACCEPT; iptables -t nat -D PREROUTING -d 10.0.24.11 -j DNAT --to-destination 10.10.0.34; iptables -t nat -D POSTROUTING -s 10.10.0.34 -j SNAT --to-source 10.0.24.11;
#10.0.24.11替换为你自己的网卡地址
# 服务端监听端口,可以自行修改
ListenPort = 65534
# 保持默认
MTU = 1420
# [Peer] 代表客户端配置,每增加一段 [Peer] 就是增加一个客户端账号。
[Peer]
# 该客户端账号的公匙,对应客户端配置中的私匙
PublicKey = $(cat cpublickey)# 该客户端账号的内网IP地址
AllowedIPs = 192.168.145.0/24,10.10.0.0/16"|sed '/^#/d;/^\s*$/d' > wg0.conf
vim /etc/ssh/sshd_config
修改
Port 22
改为
Port 65533
systemctl restart sshd
wg-quick up wg0
4、routeros配置wireguard
echo "[Interface]
# 客户端的私匙,对应服务器配置中的客户端公匙(自动读取上面刚刚生成的密匙内容)
PrivateKey = $(cat cprivatekey)# 客户端的内网IP地址
Address = 10.0.0.2/24
# 解析域名用的DNS
DNS = 8.8.8.8
# 保持默认
MTU = 1420
[Peer]
# 服务器的公匙,对应服务器的私匙(自动读取上面刚刚生成的密匙内容)
PublicKey = $(cat spublickey)# 服务器地址和端口
Endpoint = X.X.X.X:443
# 因为是客户端,所以这个设置为全部IP段即可
AllowedIPs = 0.0.0.0/0, ::0/0
# 保持连接
PersistentKeepalive = 25"|sed '/^#/d;/^\s*$/d' > client.conf
interface/wireguard/add name="wireguard1" mtu=1300 private-key="你的interface私钥"/interface/wireguard/peers/add interface="wireguard1" public-key="你的peers公钥" endpoint-address="服务端ip" endpoint-port=端口 allowed-address="0.0.0.0/0" persistent-keepalive=5
/ip/address/add address="wireguard网卡网段" interface="wireguard1"routing/table/add name="wgt" fib
/ip/route/add dst-address="0.0.0.0/0" gateway="wireguard1" routing-table="wgt"/routing/rule/add src-address="本地目标主机" routing-mark=main action=lookup-only-in-table table=wgt
/ip/firewall/nat/add chain="srcnat" action=masquerade
正常ping值 通过wireguard把ip分配给本地延迟
延迟增加了一倍,因此最好大家使用离自己区域进的地方使用。
由于使用的是腾讯云8M轻量,因此测试带宽只有8M,算是把服务器网速跑满了。
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://hqyman.cn/post/8537.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
打赏微信支付宝扫一扫,打赏作者吧~
休息一下~~