WireGuard因端口问题引起无法连接的解决方法
如果wireGuard无法握手建立连接,一直出现etrying handshake, attempt 2...
这样的错误,这时我们可以用telnet
诊断wireGuard服务器的端口通讯情况,如果不出意外的话应该是telnet不通的,这时候可以尝试更换端口来解决这个问题。
不知道如何部署wireGuard的童鞋可以参考:在CentOS7上安装部署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 秒內連接就會被阻斷。