WireGuard因端口问题引起无法连接的解决方法

技术运维 5033

WireGuard因端口问题引起的无法连接的解决方法

如果wireGuard无法握手建立连接,一直出现etrying handshake, attempt 2...这样的错误,这时我们可以用telnet诊断wireGuard服务器的端口通讯情况,如果不出意外的话应该是telnet不通的,这时候可以尝试更换端口来解决这个问题。

不知道如何部署wireGuard的童鞋可以参考:

如何更换wireGuard的端口?

其实端口更换非常简单,只需要编辑对应的配置文件:/etc/wireguard/wg0.conf

找到ListenPort这一项修改成相应端口即可。

注意修改完成后用wg-quick down/up wg0重启wireguard服务

设置防火墙给wireGuard服务放行

修改防火墙端口规则:/etc/firewalld/services/wireguard.xml

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>wireguard</short>
  <description>WireGuard (wg) custom installation</description>
  <port protocol="udp" port="YOUR PORTS"/>
</service>

如果你在架设wireGuard的时候设置过给wireguard服务放行这里就不用再做设置了,具体查看方法:

# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: dhcpv6-client ssh wireguard
  ports: 
  protocols: 
  masquerade: yes
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

注意services一栏中是否有wireguard,如果没有请按照下面方法来设置

firewall-cmd --add-service=wireguard --zone=public --permanent
firewall-cmd --zone=public --add-masquerade --permanent

最后重启防火墙服务并验证

firewall-cmd --reload
firewall-cmd --list-all

更改客户端端口

服务端搞定后别忘了在客户端修改Endpoint中的端口,打开配置文件找到这一项做一致的端口修改即可。

写在最后

今天早上笔者发现wireGuard无法握手建立连接,后通过更改端口的方法解决了问题,后面再遇到其他未知问题再继续补充吧。

关于端口的一点安全策略

V2EX的这篇内容值得一试

看到這,我把我在臺灣家中搭建 wireguard 伺服器的經驗分享給 PO 主吧,以下是一些安全措施。我去年七月搭建的現在還能用。每天傳數量有 500G 左右。

1.禁止入方向的 ping 。

-A INPUT -p icmp --icmp-type echo-request -j DROP

2.禁止伺服器回覆 icmp port unreachable 和 host unreachable 訊息。

-A OUTPUT -p icmp --icmp-type port-unreachable -j DROP
-A OUTPUT -p icmp --icmp-type host-unreachable -j DROP

3.禁止伺服器回覆 no listen port 的 tcp reset 訊息(標誌位爲 rst,ack )

-A OUTPUT -p tcp --tcp-flags ALL RST,ACK -j DROP

4.儘量不要直接採用 ssh 直接連線管理伺服器。

5.將 port 置於 16384-16389 之間是較好的選擇。

6.萬萬不可使用默認 PORT ,否則 30 秒內連接就會被阻斷。

Post Comment