求助大神,PVE服务器套Wireguard,端口转发失效怎么办
由于某些原因,家里面有个软路由刷了PVE做主系统,通过PPPOE拨号获取公网IP。PVE后面连了几个客户端,通过vmbr0网卡获取内网IP。然后NAT成公网IP上网。
然后我想把里面的端口转发到公网IP上,
使用命令iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 18080 -j DNAT --to-destination 192.168.1.2:80 和iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.2 --dport 18080 -j MASQUERADE转发后没问题,公网IP:18080可以访问。
但是PVE在国内,需要上网代理,想给客户端也顺便代理上。当我开启Wireguard后,端口转发直接连不上了。
我怀疑是路由问题,想使用 ip rule添加策略路由,把DNAT的回包打标,从哪来就从哪回,然而并不行,要么客户端不走代理,要么端口转发不通,要么两个都不行。
为了使用策略路由,我在wg配置文件里加上了”Table = Off“,通过ip route和ip rule设置路由表,但始终有问题。
我估计就是回程数据包走扶墙出去,然后源IP和之前不同,导致握手失败。
但是拿Openwrt试了下,链路层都全局代理的情况下,端口转发还可以使用,这是为什么?
我觉得大概率和默认路由有关,Op是怎么区分的?
折腾两天了都没搞定,特来发帖求助各位大神。
如果DNAT再加上SNAT,把源IP NAT成PVE的内网IP(192.168.1.1)再加一条静态路由ip route add 192.168.1.0/24 dev vmbr0 table direct似乎可以,但是SSH或者是其他的软件应该就看不见访客的真实IP了,但Openwrt还可以…… 应该要调路由,源地址为你的客户端的ip,源端口为80端口,目的地址任意的网关设为你的路由器的ip地址。
这样不会走wireguard就行了。 感谢大佬,我明天再看看。需要在客户端都手动调吗,还是路由器(PVE)宿主机,我试过根据和源IP还有流入网卡来打标签在设置路由之类的,没成功,明天再试试。
不知道是不是因为Wireguard是网络层协议导致的,但Op套Warp就可以…… 我理解,3向1回,然后1发现不是2回,握手失败。
肯定有办法避免,因为openwrt套上wg就还能正常回复,哪怕是真全局代理。
但是其他linux没有专门为路由器优化过,肯定需要调一些设置,只是我不知道怎么做。
我试过用iptabls标记回程数据包,试图走进来时使用的接口(ip2)但是不行:我再折腾折腾。
页:
[1]