无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 35915|回复: 102
打印 上一主题 下一主题

[原创] dnsmasq设置bios和uefi双启动多引导菜单(完美)

  [复制链接]
跳转到指定楼层
#
发表于 2019-10-9 13:50:44 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 星体投射 于 2019-10-11 07:48 编辑

按F8手动选菜单,不按自动加载第一项,并实现自动ipxe加载菜单(网启目录下放ipxemenu.txt),ipxe可以直接用官方的文件,无需编译内置菜单

dnsmasq的UEFI网启非常古怪,反复捉摸网上的各种别人写的菜单,最终总结只能这么写

小技巧:openwrt 路由器上一般都是u盘和sd卡上放网启目录,可以把该目录软链接到/www下就实现了http服务,方便用ipxe的http启动
  1.        ln -s /mnt/sda1/pxeboot /www/pxeboot
复制代码


dnsmasq版本2.76以上
dnsmasq.conf配置
  1. enable-tftp
  2. tftp-lowercase
  3. dhcp-no-override
  4. tftp-root=/mnt/sda1/pxeboot

  5. dhcp-match=set:iPXE,175

  6. dhcp-vendorclass=set:flag,PXEClient:Arch:00000
  7. dhcp-vendorclass=set:flag,PXEClient:Arch:00006
  8. dhcp-vendorclass=set:flag,PXEClient:Arch:00007
  9. dhcp-vendorclass=set:flag,PXEClient:Arch:00009

  10. tag-if=set:load,tag:!iPXE,tag:flag

  11. pxe-prompt="Press F8 or Enter key for PXE menu.", 5
  12. #BIOS MENU
  13. pxe-service=tag:load,X86PC, "BIOS ipxe undionly", undionly.kpxe
  14. pxe-service=tag:load,X86PC, "BIOS ipxe.pxe", ipxe.pxe
  15. pxe-service=tag:load,X86PC, "BIOS Microsoft PXE", pxeboot.n12
  16. pxe-service=tag:load,X86PC, "boot from local", 0
  17. #UEFI MENU
  18. pxe-service=tag:load,IA32_EFI, "Microsoft UEFI (IA32_EFI)", bootia32.efi
  19. pxe-service=tag:load,X86-64_EFI, "Microsoft UEFI (X86-64_EFI)", bootx64.efi
  20. pxe-service=tag:load,BC_EFI, "Microsoft UEFI(BC-EFI)", bootx64.efi
  21. pxe-service=tag:load,6, "iPXE snponly UEFI32(6)", snponly32.efi
  22. pxe-service=tag:load,7, "iPXE snponly UEFI(7)", snponly.efi
  23. pxe-service=tag:load,9, "iPXE snponly UEFI(9)", snponly.efi
  24. pxe-service=tag:load,06,  "iPXE UEFI32(06)", ipxe32.efi
  25. pxe-service=tag:load,07,  "iPXE UEFI(07)", ipxe.efi
  26. pxe-service=tag:load,09,  "iPXE UEFI(09)", ipxe.efi

  27. dhcp-boot=tag:iPXE,ipxemenu.txt
复制代码


bios加菜单很简单
uefi加菜单方法:
比如添加grub2的64位efi,如下多加个0
pxe-service=tag:load,007,  "GRUB2 UEFI(007)", grub2.efi
pxe-service=tag:load,009,  "GRUB2 UEFI(009)", grub2.efi

评分

参与人数 1无忧币 +1 收起 理由
tansuo + 1 为不断探索学习赞一个!

查看全部评分

93#
发表于 2023-12-4 23:49:10 | 只看该作者
收藏,然后学习了
回复

使用道具 举报

92#
发表于 2022-4-17 19:46:59 | 只看该作者
用这个方法,成功实现了dnsmasq加载ipxe菜单文件。非常感谢
回复

使用道具 举报

91#
发表于 2022-4-17 00:28:04 | 只看该作者
liquanyi 发表于 2021-10-16 15:16
我的方法很简单,在/etc/dnsmasq.conf里面添加如下内容,不用修改ipxe的内置菜单,直接加载ipxe后第二次加 ...

我的是群晖,怎么改?
回复

使用道具 举报

90#
发表于 2021-10-21 04:31:45 | 只看该作者
liquanyi 发表于 2021-10-20 08:44
winre.wim或boot.wim的Windows\Boot目录下面的各个目录去找,BCD我附件上传的有

还是多谢你!

又要考虑去哪里下载Boot目录里的启动文件,想想还是算了,一个问题有牵涉到另外一个问题,要是有人能一次性提供除WinPE外所有启动文件就好了

我另起一个悬赏帖吧,希望有人能实现我的要求。
http://bbs.wuyou.net/forum.php?m ... &extra=page%3D1
回复

使用道具 举报

89#
发表于 2021-10-20 08:44:29 | 只看该作者
tigerhuang 发表于 2021-10-20 06:04
请问bootmgr.exe,bootmgfw.efi,BCD,boot.sdi这些文件要到哪里去下载?任何一个Win10里面的可以吗?现在头 ...

winre.wim或boot.wim的Windows\Boot目录下面的各个目录去找,BCD我附件上传的有

点评

还是多谢你! 又要考虑去哪里下载Boot目录里的启动文件,想想还是算了,一个问题有牵涉到另外一个问题,要是有人能一次性提供除WinPE外所有启动文件就好了 我另起一个悬赏帖吧,希望有人能实现我的要  详情 回复 发表于 2021-10-21 04:31
回复

使用道具 举报

88#
发表于 2021-10-20 06:04:04 | 只看该作者
liquanyi 发表于 2021-10-19 17:56
附件包里面有snponly.efi,undionly.kpxe啊,另外最新的snponly.efi,undionly.kpxe可以在官网下载http://b ...

请问bootmgr.exe,bootmgfw.efi,BCD,boot.sdi这些文件要到哪里去下载?任何一个Win10里面的可以吗?现在头疼是不知道去哪里找所需要的文件。

点评

winre.wim或boot.wim的Windows\Boot目录下面的各个目录去找,BCD我附件上传的有  详情 回复 发表于 2021-10-20 08:44
回复

使用道具 举报

87#
发表于 2021-10-19 17:56:04 | 只看该作者
本帖最后由 liquanyi 于 2021-10-19 17:59 编辑
tigerhuang 发表于 2021-10-18 20:50
抱歉,前两天在忙,没上网。

请问,你的附件里我只看到snponly32.efi,没有snponly.efi这个文件,如何 ...

附件包里面有snponly.efi,undionly.kpxe啊,另外最新的snponly.efi,undionly.kpxe可以在官网下载http://boot.ipxe.org/,snponly32.efi由于官网默认没编译提供需要自己下载源码编译,启动iso的大概这样,你可以自己试试。memdisk从syslinux包里面找
  1. :win10x32
  2. kernel ${dirpath}/win10/memdisk raw iso
  3. initrd ${dirpath}/win10/W10X32_CN_PE.iso
  4. boot || goto failed
复制代码

点评

请问bootmgr.exe,bootmgfw.efi,BCD,boot.sdi这些文件要到哪里去下载?任何一个Win10里面的可以吗?现在头疼是不知道去哪里找所需要的文件。  详情 回复 发表于 2021-10-20 06:04
回复

使用道具 举报

86#
发表于 2021-10-18 20:50:25 | 只看该作者
本帖最后由 tigerhuang 于 2021-10-18 23:28 编辑
liquanyi 发表于 2021-10-17 02:09
应该可以的,你把set base-url http://openwrt.lan/wwwboot改成set base-url ftp://你的ftp目录试试

抱歉,前两天在忙,没上网。

请问,你的附件里我只看到snponly32.efi,没有snponly.efi这个文件,如何能实现以下的这个功能?
    dhcp-boot=tag:!ipxe,tag:efi-x86_64,"snponly.efi"
    dhcp-boot=tag:!ipxe,tag:efi-x86,"snponly32.efi"

还有,能麻烦你将boot目录的模板也打包后提供下载吗?

最后请教,如果是BIOS启动,你的模板可以直接支持启动ISO文件吗?我在你的menu.ipxe里面没有找到任何启动ISO文件的语句。

点评

snponly.efi,undionly.kpxe可以在官网下载http://boot.ipxe.org/,snponly32.efi由于官网默认没提供所以我上传了,启动iso的大概这样,你可以自己试试。memdisk从syslinux包里面找  详情 回复 发表于 2021-10-19 17:56
回复

使用道具 举报

85#
发表于 2021-10-17 02:09:26 | 只看该作者
tigerhuang 发表于 2021-10-17 00:40
我知道tftp是启动以及拿配置用的,不能少。我的HTTP有其他用途,能改为支持FTP(不是tftp)下载镜像文件吗 ...

应该可以的,你把set base-url http://openwrt.lan/wwwboot改成set base-url ftp://你的ftp目录试试

点评

这两天在忙,没上网。 谢谢,我尽快测试后再汇报结果。  详情 回复 发表于 2021-10-18 20:50
回复

使用道具 举报

84#
发表于 2021-10-17 00:40:37 | 只看该作者
本帖最后由 tigerhuang 于 2021-10-17 01:04 编辑
liquanyi 发表于 2021-10-16 23:28
pxe启动ipxe与拿配置文件用tftp,后面用http

我知道tftp是启动以及拿配置用的,不能少。我的HTTP有其他用途,能改为支持FTP(不是tftp)下载镜像文件吗?

点评

应该审计可以的,你把set base-url http://openwrt.lan/wwwboot改成set base-url ftp://你的ftp目录试试  详情 回复 发表于 2021-10-17 02:09
回复

使用道具 举报

83#
发表于 2021-10-16 23:53:59 | 只看该作者
tigerhuang 发表于 2021-10-16 22:28
大佬,太感谢你了,这正是我要找的。能提供包括ipxe的模板文件下载吗?另外能否支持ftp?

启动PE由于大多数PE精简了启动所需文件,所以需要从官方winre.wim或boot.wim里面提取后放http目录
注意把32位的bootmgfw.efi改名为bootmgfw32.efi
tftpboot.7z (261.45 KB, 下载次数: 5)

bcd.7z (1.42 KB, 下载次数: 2)


回复

使用道具 举报

82#
发表于 2021-10-16 23:28:47 | 只看该作者
tigerhuang 发表于 2021-10-16 22:28
大佬,太感谢你了,这正是我要找的。能提供包括ipxe的模板文件下载吗?另外能否支持ftp?

pxe启动ipxe与拿配置文件用tftp,后面用http

点评

我的HTTP有其他用途,不支持FTP吗?  详情 回复 发表于 2021-10-17 00:40
回复

使用道具 举报

81#
发表于 2021-10-16 22:28:00 | 只看该作者
liquanyi 发表于 2021-10-16 15:16
我的方法很简单,在/etc/dnsmasq.conf里面添加如下内容,不用修改ipxe的内置菜单,直接加载ipxe后第二次加 ...

大佬,太感谢你了,这正是我要找的。能提供包括ipxe的模板文件下载吗?另外能否支持ftp?

点评

启动PE由于大多数PE精简了启动所需文件,所以需要从官方winre.wim或boot.wim里面提取后放http目录 注意把32位的bootmgfw.efi改名为bootmgfw32.efi  详情 回复 发表于 2021-10-16 23:53
pxe启动ipxe与拿配置文件用tftp,后面用http  详情 回复 发表于 2021-10-16 23:28
回复

使用道具 举报

80#
发表于 2021-10-16 15:45:35 | 只看该作者
效果








回复

使用道具 举报

79#
发表于 2021-10-16 15:16:38 | 只看该作者
本帖最后由 liquanyi 于 2021-10-16 15:33 编辑

我的方法很简单,在/etc/dnsmasq.conf里面添加如下内容,不用修改ipxe的内置菜单,直接加载ipxe后第二次加载menu.ipxe菜单,然后菜单根据变量判断生成BIOS或EFI32或EFI64的菜单
  1. enable-tftp
  2. tftp-root=/opt/tftpboot
  3. dhcp-userclass=set:ipxe,iPXE
  4. dhcp-match=set:pcbios,option:client-arch,0
  5. dhcp-match=set:efi-x86,option:client-arch,6
  6. dhcp-match=set:efi-x86_64,option:client-arch,7
  7. dhcp-match=set:efi-x86_64,option:client-arch,9
  8. dhcp-match=set:efi-arm32,option:client-arch,10
  9. dhcp-match=set:efi-arm64,option:client-arch,11
  10. dhcp-boot=tag:!ipxe,tag:pcbios,"undionly.kpxe"
  11. dhcp-boot=tag:!ipxe,tag:efi-x86_64,"snponly.efi"
  12. dhcp-boot=tag:!ipxe,tag:efi-x86,"snponly32.efi"
  13. dhcp-boot=tag:ipxe,tag:pcbios,"menu.ipxe"
  14. dhcp-boot=tag:ipxe,tag:efi-x86_64,"menu.ipxe"
  15. dhcp-boot=tag:ipxe,tag:efi-x86,"menu.ipxe"
复制代码


menu.ipxe菜单文件如下
  1. #!ipxe

  2. set base-url http://openwrt.lan/wwwboot
  3. set menu-timeout 10000
  4. set kspath ${base-url}/kickstarts
  5. cpuid --ext 29 && set arch x86_64 || set arch i386
  6. set start_menu ${platform}_${buildarch}_menu
  7. echo ${start_menu}
  8. goto ${start_menu}

  9. :pcbios_x86_64_menu
  10. goto pcbios_i386_menu

  11. :pcbios_i386_menu
  12. menu My iPXE Boot Menu ${buildarch}_${platform}
  13. set menu-default win10x64
  14. item --gap Linux series
  15. item centos7 --CentOS 7
  16. item debian10 --Debian 10
  17. item --gap Windows series
  18. item win8x32 --Win8 PE x32
  19. item win10x64 --Win10 PE x64
  20. item HardDisk --From hard disk
  21. item --gap Dos series
  22. item mhdd46 --mhdd4.6
  23. item custom_exit --Exit

  24. choose --timeout ${menu-timeout} --default ${menu-default} selected
  25. goto ${selected}

  26. :efi_x86_64_menu
  27. menu My iPXE Boot Menu ${buildarch}_${platform}
  28. set menu-default win10x64
  29. item --gap Linux series
  30. item centos7 --CentOS 7
  31. item debian10 --Debian 10
  32. item --gap Windows series
  33. item win10x64 --Win10 PE x64
  34. item grub2 --Grub2 Shell
  35. item HardDisk --From hard disk

  36. choose --timeout ${menu-timeout} --default ${menu-default} selected
  37. goto ${selected}

  38. :efi_i386_menu
  39. menu My iPXE Boot Menu ${buildarch}_${platform}
  40. set menu-default win8x32
  41. item --gap Windows series
  42. item win8x32 --Win8 PE x32
  43. item HardDisk --From hard disk

  44. choose --timeout ${menu-timeout} --default ${menu-default} selected
  45. goto ${selected}

  46. :shell
  47. echo Type 'Exit' to get the back to the menu
  48. shell
  49. goto ${start_menu}

  50. :failed
  51. echo Booting failed, dropping to shell
  52. goto shell

  53. :reboot
  54. reboot

  55. :HardDisk
  56. exit

  57. :localdisk
  58. sanboot --no-describe --drive 0x80

  59. :centos7
  60. kernel ${base-url}/centos7.4/isolinux/vmlinuz ip=dhcp ks=${kspath}/Centos-7.x-min.cfg repo=${base-url}/centos7.4
  61. initrd ${base-url}/centos7.4/isolinux/initrd.img
  62. boot || goto failed

  63. :debian10
  64. kernel ${base-url}/debian/buster/amd64/linux initrd=initrd.gz
  65. initrd ${base-url}/debian/buster/amd64/initrd.gz
  66. boot || goto failed

  67. :debian10-i386
  68. kernel ${base-url}/debian/buster/i386/linux initrd=initrd.gz
  69. initrd ${base-url}/debian/buster/i386/initrd.gz
  70. boot || goto failed

  71. :win8x32
  72. kernel wimboot.${buildarch}
  73. initrd --name bootmgr.exe ${base-url}/boot/bootmgr.exe bootmgr.exe
  74. initrd --name bootmgfw.efi ${base-url}/boot/bootmgfw32.efi bootmgfw.efi
  75. initrd --name BCD ${base-url}/boot/bcd BCD
  76. initrd --name boot.sdi ${base-url}/boot/boot.sdi boot.sdi
  77. initrd --name boot.wim ${base-url}/sources/WEPE32.WIM boot.wim
  78. boot || goto failed

  79. :win10x64
  80. kernel wimboot.${buildarch}
  81. initrd --name bootmgr.exe ${base-url}/boot/bootmgr.exe bootmgr.exe
  82. initrd --name bootmgfw.efi ${base-url}/boot/bootmgfw.efi bootmgfw.efi
  83. initrd --name BCD ${base-url}/boot/bcd BCD
  84. initrd --name boot.sdi ${base-url}/boot/boot.sdi boot.sdi
  85. initrd --name boot.wim ${base-url}/sources/WEPE64.WIM boot.wim
  86. boot || goto failed

  87. :grub2
  88. kernel ${base-url}/boot/GRUBShell.efi
  89. boot || goto failed

  90. :mhdd46
  91. kernel ${base-url}/boot/memdisk
  92. initrd ${base-url}/boot/mhdd46.ima
  93. boot || goto failed

复制代码

点评

大佬,太感谢你了,这正是我要找的。能提供包括ipxe的模板文件下载吗?另外能否支持ftp?  详情 回复 发表于 2021-10-16 22:28
回复

使用道具 举报

78#
发表于 2021-5-13 22:19:37 | 只看该作者
学习了,多谢分享。
回复

使用道具 举报

77#
发表于 2021-5-13 22:11:23 | 只看该作者
非常感谢!我第一次接触ipxe,有小白问题要请教。

1.你说ipxe可以直接用官方的文件,但我点击了http://boot.ipxe.org/,并没有发现bootia32.efi,bootx64.efi和ipxe32.efi。
2.在哪里配置菜单文件,能否提供一个样本用于启动win10pe.iso(或win10pe.wim。
回复

使用道具 举报

76#
发表于 2020-4-23 00:03:02 | 只看该作者
使用局域网(非网关)tftp服务,要怎么修改配置?
回复

使用道具 举报

75#
发表于 2020-1-5 21:27:07 | 只看该作者
感谢大神
回复

使用道具 举报

74#
发表于 2020-1-5 18:28:40 | 只看该作者
2013dgyangxf 发表于 2020-1-5 16:06
这个不是用那个tiny来启动的,你只需要改openwrt的dnsmasq文件,就可以网启的时候自动选择bios或者uefi了 ...

嗯嗯 我已经改成功了 非常感谢!
回复

使用道具 举报

73#
发表于 2020-1-5 16:06:17 | 只看该作者
a1379388505 发表于 2019-12-12 14:58
我百度到的我用的Tiny PXE Serve是一个exe的windows程序,而我是用的openwrt里面的tftp启动的ipxe来无盘 ...

这个不是用那个tiny来启动的,你只需要改openwrt的dnsmasq文件,就可以网启的时候自动选择bios或者uefi了

点评

嗯嗯 我已经改成功了 非常感谢!  详情 回复 发表于 2020-1-5 18:28
回复

使用道具 举报

72#
发表于 2019-12-26 22:04:26 | 只看该作者
chenall 发表于 2019-10-11 14:39
我目前使用的配置.(后面的192.168.103.15是因为我DHCP和TFTP服务器是分开的,同一台可以不用)

使用VMWARE ...

dhcp-vendorclass跟dhcp-match有啥区别 我看语法有点差别但是功能都一样  我群晖内置的默认是dhcp-vendorclass 我纠结是按照dhcp-vendorclass继续写还是都注释掉改成dhcp-match
回复

使用道具 举报

71#
发表于 2019-12-22 20:43:09 | 只看该作者
本帖最后由 a1379388505 于 2019-12-22 21:52 编辑
江南一根葱 发表于 2019-12-22 20:23
以前是上不了网找原因,现在是上得了网找原因啊。。

哈哈哈哈哈哈哈哈 被阿里逼的,这边电商部门的特殊需求,有几个电脑需要分别登陆不能的店铺账号,要求外网ip不能是相同的,本来网线拉了好几条但是麻烦在于这几个电脑都是无盘系统 这个无盘系统的网关还给其他电脑提供连接外网的服务。。。所以要禁掉无盘的这跟网线的外网 使用专线连接外网
回复

使用道具 举报

70#
发表于 2019-12-22 20:23:37 | 只看该作者
a1379388505 发表于 2019-12-22 19:23
今天我另一台电脑需要禁网
我用了
route delete 0.0.0.0

以前是上不了网找原因,现在是上得了网找原因啊。。

点评

哈哈哈哈哈哈哈哈 被阿里逼的,这边电商部门的特殊需求,有几个电脑需要分别登陆不能的店铺账号,要求外网ip不能是相同的,本来网线拉了好几条但是麻烦在于这几个电脑都是无盘系统 这个无盘系统还给其他电脑提供连接  详情 回复 发表于 2019-12-22 20:43
回复

使用道具 举报

69#
发表于 2019-12-22 19:23:17 | 只看该作者
江南一根葱 发表于 2019-12-14 18:05
你电脑上执行
route delete 0.0.0.0
route add 0.0.0.0 mask 0.0.0.0 一个不存在的同网段ip -p

今天我另一台电脑需要禁网
我用了
route delete 0.0.0.0
route add 0.0.0.0 mask 0.0.0.0 10.0.0.254 -p

查看路由表0000ip的网关也只有 10.0.0.254 这一个了
但是网页还是可以打开 只是巨慢 而且网页残破不全,最后终于找到原因了,竟然是是走了ipv6

点评

以前是上不了网找原因,现在是上得了网找原因啊。。  详情 回复 发表于 2019-12-22 20:23
回复

使用道具 举报

68#
发表于 2019-12-15 15:07:26 | 只看该作者
a1379388505 发表于 2019-12-15 14:31
openwrt的firewall禁不住他 各种禁止都不行 可能跟底层pxe启动有关,最后按照你说的不分配网关和dns解决 ...

能用就好
回复

使用道具 举报

67#
发表于 2019-12-15 14:31:45 | 只看该作者
hkkitlee 发表于 2019-12-14 21:10
那你的openwrt有firewall,就可以用來「禁斷網絡」。

我之前說的protocol 指的是藍屏,不是斷網

openwrt的firewall禁不住他 各种禁止都不行 可能跟底层pxe启动有关,最后按照你说的不分配网关和dns解决的

点评

能用就好  详情 回复 发表于 2019-12-15 15:07
回复

使用道具 举报

66#
发表于 2019-12-14 21:10:51 | 只看该作者
a1379388505 发表于 2019-12-14 17:56
不对 哭死了
都禁到这样了,只是网址打不开了,iP还是可以打开网页!

那你的openwrt有firewall,就可以用來「禁斷網絡」。

我之前說的protocol 指的是藍屏,不是斷網
回复

使用道具 举报

65#
发表于 2019-12-14 18:14:27 | 只看该作者
本帖最后由 a1379388505 于 2019-12-14 18:16 编辑
江南一根葱 发表于 2019-12-14 18:05
你电脑上执行
route delete 0.0.0.0
route add 0.0.0.0 mask 0.0.0.0 一个不存在的同网段ip -p

哈哈哈哈 非常感谢你的提醒 我想起我以前为了断网好像设置过永久网关,我先用了route print 发现我以前真设置了永久网关  不过奇怪的是永久网关是10.0.0.6,并不是真正的网关10.0.0.1,但是确实可以上网,然后我route -f 重启电脑终于不能上网了
回复

使用道具 举报

64#
发表于 2019-12-14 18:05:43 | 只看该作者
a1379388505 发表于 2019-12-14 17:56
不对 哭死了
都禁到这样了,只是网址打不开了,iP还是可以打开网页!

你电脑上执行
route delete 0.0.0.0
route add 0.0.0.0 mask 0.0.0.0 一个不存在的同网段ip -p

我不信还能上网。。。



route delete 0.0.0.0
route add 0.0.0.0 mask 0.0.0.0 192.168.1.2 -p

点评

今天我另一台电脑需要禁网 我用了 route delete 0.0.0.0 route add 0.0.0.0 mask 0.0.0.0 10.0.0.254 -p 查看路由表0000ip的网关也只有 10.0.0.254 这一个了 但是网页还是可以打开 只是巨慢 而且网页残破不全  详情 回复 发表于 2019-12-22 19:23

评分

参与人数 1无忧币 +5 收起 理由
a1379388505 + 5 很给力!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-25 10:17

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表