dangoron 发表于 2021-2-10 00:14

求助外网访问Hyper-V虚拟机中OpenWrt

前段时间自己组了个NAS,因为主板自带双网卡加上自己想通过DDNS从外部访问NAS于是准备在Hyper-V里面搞个软路由虚拟机内装的OpenWrt,对两个网卡分别创建了两个外部虚拟交换机,一个当作WAN口一个当作LAN口
其中WAN口连接上游的K2P路由器的LAN口,K2P的WAN口直连光猫
现在需求是在外网通过IPv6连接虚拟机中的OpenWrt(80端口被封改成了11111端口)
自己尝试了在K2P和OpenWrt的防火墙中分别添加了下面的通信规则


然而现在的情况是,K2P可以通过IPv6访问11111端口但Hyper-V内的OpenWrt始终无法通过其IPv6地址访问
PC区个个都是人才,请大家集思广益帮我想想解决方案

台球论坛网友 发表于 2021-2-10 12:30

dongjuanyong 发表于 2021-2-10 12:37

本帖最后由 dongjuanyong 于 2021-2-10 12:40 编辑

连接openwrt的话应该在openwrt的防火墙上算input而不是forward
forward指的是转发到下行(openwrt的lan)上的其他设备

— from Xiaomi Redmi K20 Pro, Android 11 of S1 Next Goose v2.4.4

oskneo 发表于 2021-2-10 13:18

dangoron 发表于 2021-2-10 15:21

本帖最后由 dangoron 于 2021-2-10 15:23 编辑

dongjuanyong 发表于 2021-2-10 12:37
连接openwrt的话应该在openwrt的防火墙上算input而不是forward
forward指的是转发到下行(openwrt的lan)上 ...
有道理,不过连接K2P也是在K2P的防火墙上做了WAN到LAN的转发

dangoron 发表于 2021-2-10 15:27

oskneo 发表于 2021-2-10 13:18
这些不是只有能直通网卡的虚拟机,如wunserver版的hyper
v才能做到?


用的就是win server 2019

oskneo 发表于 2021-2-10 15:27

nessaj 发表于 2021-2-10 15:50

dangoron 发表于 2021-2-10 16:06

nessaj 发表于 2021-2-10 15:50
什么叫访问openwrt啊?你只有在openwrt里开了服务才能访问服务
譬如你说的80端口,这是http的默认端口,那 ...

就是访问openwrt的配置界面,本来是80端口我改成11111端口,现在目标就是想访问这个端口
k2p同样也是80改成11111,现在k2p按照主楼的配置是可以用它的IPv6在外网访问的,但是k2p下游的openwrt采用同样配置无效

dangoron 发表于 2021-2-10 16:11

oskneo 发表于 2021-2-10 15:27
那么lz结果如何。
为了以后搞软路由,偶现在搞esxi直通和nested虚拟化搞得非常头疼。如果win10的二级虚拟机 ...

还是不行,现在连openwrt都无法从外网连接,我之前还想通过openwrt上的ddns直接RDP连宿主机来着。。

nessaj 发表于 2021-2-10 16:21

枪王黑泽翔 发表于 2021-2-10 16:34

同样是hyperv虚拟openwrt做旁路由的路过说下,首先是openwrt做旁路由不需要虚拟两个网口,只要lan口能跟主路由通信即可;其次openwrt访问web界面不需要防火墙设置,默认input规则是放行的,可以保持80端口,因为并不实际暴露80至外网。

建议的检查步骤是先内后外
1.内网直接访问openwrt ip:port,确认可达
2.主路由设置端口转发,外部端口to openwrt端口,检查可达

ipv6的部分我没试过,原理是一样的,目前ddns访问正常,外部8088端口直接转发到openwrt80

-- 傲娇地来自 Stage1未知客户端

dangoron 发表于 2021-2-10 16:40

nessaj 发表于 2021-2-10 16:21
哦,配置界面啊,你主楼的规则只是allow了外网对11111的访问
但你要访问内网的端口要设置forwarding规则 ...

那完了,K2P这边也装的openwrt,端口转发只支持IPv4

dangoron 发表于 2021-2-10 16:42

nessaj 发表于 2021-2-10 16:21
哦,配置界面啊,你主楼的规则只是allow了外网对11111的访问
但你要访问内网的端口要设置forwarding规则 ...

按理说IPv6不需要做端口转发,可能我理解不对?

dangoron 发表于 2021-2-10 16:49

枪王黑泽翔 发表于 2021-2-10 16:34
同样是hyperv虚拟openwrt做旁路由的路过说下,首先是openwrt做旁路由不需要虚拟两个网口,只要lan口能跟主 ...

嗯嗯,如果做旁路由是没问题,考虑到以后可能搬去学校做主路由所以现在先设置了两个网口
现在家里的宽带没有分配公网IPv4所以在IPv4上做端口转发没有意义,IPv6原则上是不需要做端口转发的吧?我自己觉得可能还是防火墙的问题

nessaj 发表于 2021-2-10 16:53

dangoron 发表于 2021-2-10 17:04

本帖最后由 dangoron 于 2021-2-10 17:06 编辑

nessaj 发表于 2021-2-10 16:53
你的v6地址开头是啥?v6也分内外网地址的,你的v6地址如果是公网地址才不需要转发 ...
是公网地址没错,k2p的是240e:381:549b:1600xxxx\128,openwrt的是240e:381:549b:1610xxxx\64
k2p这个已经能够通过:11111访问到了,就openwrt不行




nessaj 发表于 2021-2-10 17:06

dangoron 发表于 2021-2-10 17:07

nessaj 发表于 2021-2-10 17:06
那就是你虚拟机那里是不是开了防火墙,记得也要allow 11111才行

主楼第二张图就是了,我也很无奈。。明明是同样的设置

nessaj 发表于 2021-2-10 17:12

dangoron 发表于 2021-2-10 20:02

nessaj 发表于 2021-2-10 17:12
你主楼那个是防火墙吗…我怎么看着不像啊?
你试试把第一条规则删了看是不是依旧正常访问k2p ...

啊这。。我手机用流量发现k2p其实外部也连不上,之前以为连上实际上是因为家里用的局域网。。这就比较尴尬了
但是这设置确实是防火墙里的流量规则啊

—— 来自 S1Fun

nessaj 发表于 2021-2-10 20:10

dongjuanyong 发表于 2021-2-10 20:18

本帖最后由 dongjuanyong 于 2021-2-10 20:20 编辑



看一下这两条防火墙设置:第一条的作用是允许访问本机(openwrt路由)的某个端口,哪个设备需要被访问,哪个设备上需要有这一条
第二条的作用是允许通过访问下层设备某个端口的请求,哪个设备需要被访问,它上层的设备需要有这一条

而且,前提是你设备的服务和端口监听(监听在哪个ip上?0.0.0.0还是::)没弄错



nessaj 发表于 2021-2-10 20:26

mickoo 发表于 2021-2-10 20:39

貌似我openwrt不用设置防火墙就可以访问,只要在这里设置下https://p.sda1.dev/1/f5932e8a415741292378e165c6f13e85/QQ图片20210210203828.png

dongjuanyong 发表于 2021-2-10 20:41

nessaj 发表于 2021-2-10 20:26
第一条是指开放对外的443端口,地址如果没指定就是0,0,0,0,也就是所有地址对该端口皆放行
第二条是放行f ...

好吧,本来想说的简单一点,被误会成不懂端口……某张NA的证书在一旁哭泣
关键是openwrt的firewall默认这样:


来自wan zone的包无论目标是路由(v4和v6)还是下层设备(v4被nat了,应该只有v6)全被drop
所以上面第一条accept input的作用是不drop目标是路由的包(特定端口),也就是能从外网访问路由在某个端口的应用,与下层设备没有任何关系
第二条accept forward的作用是不drop目标是下层设备的包(特定端口),也就是能从外网访问路由下面的设备在某个端口的应用,与路由在这个端口干什么没有关系
第二条只有ipv6的时候有用,v4靠的是port forwarding,而ipv6没有nat和port forwarding

还有哪里有问题么

nessaj 发表于 2021-2-10 20:59

nessaj 发表于 2021-2-10 20:59

dongjuanyong 发表于 2021-2-10 21:17

本帖最后由 dongjuanyong 于 2021-2-10 21:22 编辑

nessaj 发表于 2021-2-10 20:59
Accept意思是允许通过
Drop意思是接收但拦截不让转发
reject是不接收

你搞混了iptables和openwrt的firewall的关系
你说的accept和drop是针对iptables的
而firewall这个特定的openwrt package,虽然他是建立在iptables之上的,相当于一个iptables的配置工具,但它里面的accept和drop的含义是有指代区别的

所以我的描述都是基于openwrt的firewall package,因为lz在主路由和底下的设备都用的是openwrt。而你的描述是基于iptables的也就是基本任何一个linux redistribution的。教会lz用iptables配置不是不行,是真没这个必要
ps 上面的确写错了reject和drop,不过区分对于lz意义不大,因为只要没accpet就连不上

nessaj 发表于 2021-2-10 21:27

dongjuanyong 发表于 2021-2-10 21:42

nessaj 发表于 2021-2-10 21:27
意思一样的
你也知道是iptables配置工具而已那它显然不可能把这三个最重要的关键词对应作用改掉 ...

非较这个真:ALLOW (aka ACCEPT)
Pemit a packet to traverse the firewall. This would be the behaviour if the firewall was not present.
REJECT
Prohibit a packet from passing. Send an ICMP destination-unreachable back to the source host .
DROP (aka DENY, BLACKHOLE)
Prohibit a packet from passing. Send no response.REJECT和DROP的意思你理解错了,跟转发没有任何关系,全都是扔了不处理,REJECT告你一声“我扔了”,DROP不吭声罢了
ALLOW:你敲门,门开了——正常访问
REJECT:你敲门,门里告你:“找错人了”——destination-unreachable
DROP:你敲门,门里没回应——timeout

nessaj 发表于 2021-2-10 21:47

dongjuanyong 发表于 2021-2-10 21:57

nessaj 发表于 2021-2-10 21:47
我就是这个意思啊

Drop意思是接收但拦截不让转发
reject是不接收
drop并不是收不到,只是收到了不转发
所以我的意思是别扯跟转发的关系
lz的问题不止跟forward chain有关系,也和input chain有关系

2stage 发表于 2021-2-10 22:00

我觉得开放端口远程访问,不如打开主路由上的openv?n,然后想访问内网什么的都可以了。安全性也好一些,这样你在外网和内网通讯的数据也都是加密的。

— from OnePlus GM1917, Android 10 of S1 Next Goose v2.4.4.1

dangoron 发表于 2021-2-11 00:10

dongjuanyong 发表于 2021-2-10 20:18
看一下这两条防火墙设置:第一条的作用是允许访问本机(openwrt路由)的某个端口,哪个设备需要被访问, ...

应该是我对防火墙设置的理解不到位,谢谢你的解释

—— 来自 S1Fun

dangoron 发表于 2021-2-11 00:13

mickoo 发表于 2021-2-10 20:39
貌似我openwrt不用设置防火墙就可以访问,只要在这里设置下

谢谢你,不过这样感觉不是很安全?不过也可以作为参考~

—— 来自 S1Fun

dangoron 发表于 2021-2-11 00:44

nessaj 发表于 2021-2-10 20:26
第一条是指开放对外的443端口,地址如果没指定就是0,0,0,0,也就是所有地址对该端口皆放行
第二条是放行f ...

已经成功连上了,谢谢~

dangoron 发表于 2021-2-11 00:59

oskneo 发表于 2021-2-10 15:27
那么lz结果如何。
为了以后搞软路由,偶现在搞esxi直通和nested虚拟化搞得非常头疼。如果win10的二级虚拟机 ...

可以参考23L的配置,把转发LAN改成转发本设备就好了~

oskneo 发表于 2021-2-11 08:46

dangoron 发表于 2021-2-11 10:34

oskneo 发表于 2021-2-11 08:46
所以你的网卡是直通的吗?不是的话偶还是继续研究一下esxi

—— 来自 Sony XQ-AT52, Android 10上的 S1N ...

Win server 2019的hyper v可以的

—— 来自 S1Fun
页: [1] 2
查看完整版本: 求助外网访问Hyper-V虚拟机中OpenWrt