找回密码
 注册
查看: 1747|回复: 1

neutron相关文件介绍

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2021-10-8 17:15:33 | 显示全部楼层 |阅读模式
配置neutron.conf
2 k# y  R  J" O, y, Q复制代码" r$ |* F# |, L, X
# 在全部控制节点操作,以controller01节点为例;
, |6 G) P8 d6 p  }: ^( z# 注意”bind_host”参数,根据节点修改;0 d  y+ y1 u3 V: M' O. ]" |
# 注意neutron.conf文件的权限:root:neutron
, [$ E3 J: N3 ^3 |6 h4 X, g- o" Z[root@controller01 ~]# cp /etc/neutron/neutron.conf /etc/neutron/neutron.conf.bak2 }4 |* `' Q# s
[root@controller01 ~]# egrep -v "^$|^#" /etc/neutron/neutron.conf, ^; l: Y7 Z! Z; }0 ?4 x
[DEFAULT]) u+ Y; x6 l  K+ i) A4 L
bind_host = 172.30.200.31
3 I+ w! S: m9 B7 W' Jauth_strategy = keystone( {! |& f. M! k  W3 o, g; }4 r7 b
core_plugin = ml2
- ^! x5 w3 x/ ^/ B5 p1 d& Q$ _9 jservice_plugins = router8 Y1 T* H1 s' ~3 H
allow_overlapping_ips = True( l1 v- X/ I/ z; p( z/ `
notify_nova_on_port_status_changes = true' z: i1 N$ U$ `; l0 f8 j4 {
notify_nova_on_port_data_changes = true
% d" C) T" S. m, ^( {( H# l3高可用,可以采用vrrp模式或者dvr模式;
1 T- N# [, X6 z5 ~, ]9 t" d2 r4 J# vrrp模式下,在各网络节点(此处网络节点与控制节点混合部署)以vrrp的模式设置主备virtual router;mater故障时,virtual router不会迁移,而是将router对外服务的vip漂移到standby router上;
7 R7 {" Q( ]9 q- R" w" K8 j# dvr模式下,三层的转发(L3 Forwarding)与nat功能都会被分布到计算节点上,即计算节点也有了网络节点的功能;但是,dvr依然不能消除集中式的virtual router,为了节省IPV4公网地址,仍将snat放在网络节点上提供;9 k% g1 g( F" N8 X# {" w- }0 o
# vrrp模式与dvr模式不可同时使用6 A, T( d' H+ v# j" n4 o
# Neutron L3 Agent HA 之 虚拟路由冗余协议(VRRP): http://www.cnblogs.com/sammyliu/p/4692081.html: q1 P" `# `; d
# Neutron 分布式虚拟路由(Neutron Distributed Virtual Routing): http://www.cnblogs.com/sammyliu/p/4713562.html' c$ ~/ y" n/ Y) v! ]8 N
# “l3_ha = true“参数即启用l3 ha功能4 l0 I2 b* C" t9 j3 B0 a" h5 |* |
l3_ha = true
. v$ m* Q- F" S7 T& U$ o# 最多在几个l3 agent上创建ha router+ V2 `# V9 f  ~4 H& @9 t" d2 B
max_l3_agents_per_router = 3; w1 {. H8 N. s  h, q
# 可创建ha router的最少正常运行的l3 agnet数量* J  f8 }( M/ g- D/ H) Y+ f5 A: \$ i
min_l3_agents_per_router = 2
2 u/ S+ Z$ v4 _6 K, u: M# vrrp广播网络
0 x9 O( x1 H, Z0 C. b5 pl3_ha_net_cidr = 169.254.192.0/185 L1 \- L- ]9 |( j
# ”router_distributed “参数本身的含义是普通用户创建路由器时,是否默认创建dvr;此参数默认值为“false”,这里采用vrrp模式,可注释此参数4 o2 I" g0 G* @' V, Y- k2 c; o
# 虽然此参数在mitaka(含)版本后,可与l3_ha参数同时打开,但设置dvr模式还同时需要设置网络节点与计算节点的l3_agent.ini与ml2_conf.ini文件1 ^/ V, x' H2 Q6 s7 L1 v% [. M6 i: {. v
# router_distributed = true
+ S! k4 n0 W6 i  o* T# dhcp高可用,在3个网络节点各生成1个dhcp服务器! `7 J+ c7 c4 @
dhcp_agents_per_network = 3: b3 e5 T6 h2 C$ n9 s
# 前端采用haproxy时,服务连接rabbitmq会出现连接超时重连的情况,可通过各服务与rabbitmq的日志查看;  d1 p$ J# Y- s+ x3 y; X- x4 m6 n
# transport_url = rabbit://openstack:rabbitmq_pass@controller:5673/ {0 Y8 m+ X2 b3 H( N) T
# rabbitmq本身具备集群机制,官方文档建议直接连接rabbitmq集群;但采用此方式时服务启动有时会报错,原因不明;如果没有此现象,强烈建议连接rabbitmq直接对接集群而非通过前端haproxy
6 O/ X7 r+ v) J- \. `8 Q' a! Ytransport_url=rabbit://openstack:rabbitmq_pass@controller01:5672,controller02:5672,controller03:5672( ~% g/ j! K# v  e& v8 z
[agent]
: {* h* S' ]( J2 X+ K2 ~) ^[cors]
6 F5 O* d' N' q5 f3 [[database]6 }# L9 G+ Z: B( a* D3 B
connection = mysql+pymysql://neutron:neutron_dbpass@controller/neutron
7 h+ X. ~/ T9 ~+ ]6 a- B[keystone_authtoken]
- ~5 ]$ |( j0 K/ c3 Cauth_uri = http://controller:5000$ k" c3 t9 r0 o* ]( s
auth_url = http://controller:35357
- {2 V; C% m3 r, Imemcached_servers = controller01:11211,controller:11211,controller:112110 _3 b5 ~. R# I2 Q, G
auth_type = password* w% m8 w: s" K$ `( p% Z$ y
project_domain_name = default
: z1 E7 \0 d7 b5 b- N! Nuser_domain_name = default5 @# ]/ N+ n! u8 V
project_name = service6 h3 M- G5 U0 e4 D. }
username = neutron
% Y+ b9 ~6 Z" ?7 epassword = neutron_pass
; J% t  v6 a! a( k[matchmaker_redis]
) M7 h# j! T! i+ A2 C5 ^" I[nova]3 H* q, ^+ Z5 H
auth_url = http://controller:35357
6 t% f) x  Y/ z/ K# Y$ w; tauth_type = password& E6 M3 i. t/ s+ V! I( P! b1 y
project_domain_name = default
2 G! c6 t2 k. z7 w: ^user_domain_name = default" Y( X# W: U; O) B4 L+ n9 i
region_name = RegionTest
, G  u9 ?/ [# G0 Dproject_name = service) U2 t- o3 I8 G2 W+ g. v  ]% c
username = nova$ P# T, |. n4 k" s1 T) ?
password = nova_pass
, e, t+ N% n* I[oslo_concurrency]
( [# X# O9 P  S+ v! S2 tlock_path = /var/lib/neutron/tmp) P  q3 Q5 y' l# q
[oslo_messaging_amqp]
, l: P+ D( T1 z5 Z& P# D[oslo_messaging_kafka]
; L  _2 K$ c4 s& x5 J[oslo_messaging_notifications]
  \7 R+ C: B& ^; ~) _: `[oslo_messaging_rabbit]7 h0 H3 ]0 E  C4 V
[oslo_messaging_zmq]
1 N! j: @5 O( l  m[oslo_middleware]
( f" e5 M$ H+ T0 I' Z# r[oslo_policy]- N/ J/ g' L- e) [* v% \) X9 f+ ~0 m
[quotas]/ \+ N4 R. Y( ~1 W% |
[ssl]
9 x, }! {* G% h! F复制代码  f% X$ o  c3 Z! H2 ?4 g$ W  J
5. 配置ml2_conf.ini
0 t% `6 _" ]( }' n, t2 ~复制代码- c' v0 k9 ^" Z+ a3 [5 z+ p8 f, D, K
# 在全部控制节点操作,以controller01节点为例;  D! \1 e1 B8 R5 z9 U6 X& C( q! b
# ml2_conf.ini文件的权限:root:neutron1 d( X, e! {" w) N) b! w
[root@controller01 ~]# cp /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugins/ml2/ml2_conf.ini.bak
( ?5 @* Q2 F2 I5 c& M) v+ r[root@controller01 ~]# egrep -v "^$|^#" /etc/neutron/plugins/ml2/ml2_conf.ini
2 }, L) Q% w% Z1 w: T" F/ b) s[DEFAULT]
9 T& N4 o$ F6 K[l2pop]9 @2 c* v3 ^+ k# }/ L
[ml2]  C+ t* Y+ o1 x. e* e: O+ j
type_drivers = flat,vlan,vxlan
$ D" m& e1 W7 h- a+ W# ml2 mechanism_driver 列表,l2population对gre/vxlan租户网络有效
' i9 b' u5 w% W6 O  Lmechanism_drivers = linuxbridge,l2population3 Q" W) Z8 N7 r" x- D& }' o5 s& d2 T
# 可同时设置多种租户网络类型,第一个值是常规租户创建网络时的默认值,同时也默认是master router心跳信号的传递网络类型
8 l3 Z# `2 b4 i! o) F1 {5 _( Jtenant_network_types = vlan,vxlan,flat5 Y8 n9 ~- O" t* d9 s! x5 A
extension_drivers = port_security
* z' O6 p2 b+ T[ml2_type_flat]
' D. t5 K. Q( ]" W# 指定flat网络类型名称为”external”,”*”表示任意网络,空值表示禁用flat网络
3 P' p7 y6 j% s0 Uflat_networks = external+ j$ K6 q( q& r9 z0 m
[ml2_type_geneve]
) P0 G( M. m) n) f7 l5 A8 l[ml2_type_gre]& i3 }1 c. s" h6 Y/ n& G
[ml2_type_vlan]
1 R. k2 d' M6 G$ D: M- v# 指定vlan网络类型的网络名称为”vlan”;如果不设置vlan id则表示不受限
, l* K- y: l" ~! `; x2 ]) _network_vlan_ranges = vlan:3001:3500
" {4 t  v9 F* W[ml2_type_vxlan]+ z# d! j# h' I8 j
vni_ranges = 10001:20000
% I) X2 m1 W: |[securitygroup]
, S( O* ~; \) t$ Q" qenable_ipset = true
; f, R+ K+ V2 A$ U9 k* ?# 服务初始化调用ml2_conf.ini中的配置,但指向/etc/neutron/olugin.ini文件# j8 M( J+ X; @( ]4 U$ P9 E
[root@controller01 ~]# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
) c% K! R5 U) a' Z( t) _2 z复制代码
# x; z4 ~# B, {# x' _6. 配置linuxbridge_agent.ini
' R6 U. ?- A; D" j# u1)配置linuxbridge_agent.ini
2 m' M3 {  P0 g8 v& B8 A% i复制代码/ d5 g$ _! V, b% ]3 F
# 在全部控制节点操作,以controller01节点为例;
$ m3 ?% Y0 b: w+ B# linuxbridge_agent.ini文件的权限:root:neutron' o2 s* j( n. T5 c( c  n+ d! |
[root@controller01 ~]# cp /etc/neutron/plugins/ml2/linuxbridge_agent.ini /etc/neutron/plugins/ml2/linuxbridge_agent.ini.bak! o9 N1 k8 d+ p; a, K3 ~( \
[root@controller01 ~]# egrep -v "^$|^#" /etc/neutron/plugins/ml2/linuxbridge_agent.ini
$ i; g+ J# W0 @/ e+ d8 U: b5 ~[DEFAULT]8 i$ l6 E! m" y0 u/ R" K/ D6 o7 {
[agent]: Z" V8 ~  |. m# q1 I/ R5 L2 ?! z
[linux_bridge]' w' c) j' A$ Y, X8 B
# 网络类型名称与物理网卡对应,这里flat external网络对应规划的eth1,vlan租户网络对应规划的eth3,在创建相应网络时采用的是网络名称而非网卡名称;! W# U6 ]9 T' P7 g
# 需要明确的是物理网卡是本地有效,根据主机实际使用的网卡名确定;
8 c0 u6 W  i; b) }4 T! e/ u# 另有” bridge_mappings”参数对应网桥
  i# d4 Y7 H" |% @( G3 L) A# |8 Ephysical_interface_mappings = external:eth1,vlan:eth3
7 U  {) ]7 R; Q. B2 y6 ~7 b& H[network_log]
- p& w) T- b0 M$ \[securitygroup]
5 O: o8 U6 P+ u! Hfirewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
" d1 ^/ d! ~" senable_security_group = true. ]9 K" r- j' z# U& P! [
[vxlan]
* Q! N' T* K7 u% R+ Xenable_vxlan = true- ]6 j% \* l; ?0 q2 h7 D
# tunnel租户网络(vxlan)vtep端点,这里对应规划的eth2(的地址),根据节点做相应修改
" ~* C! ]+ f) q+ I9 ilocal_ip = 10.0.0.319 l9 U' j% A1 [1 A  o/ f' @8 B
l2_population = true
, d: o- p/ s5 ~, }& f" o复制代码8 X1 U- d4 ^! f1 C; `$ `" X  N7 _
2)配置内核参数6 m: s3 R4 e! c# E2 w3 z
复制代码5 `/ p8 Y& c  i0 {3 f: B  ~3 z
# bridge:是否允许桥接;
% N7 L, u% k% D# 如果“sysctl -p”加载不成功,报” No such file or directory”错误,需要加载内核模块“br_netfilter”;6 O% `3 B, G+ ?: S+ I2 M+ |! {
# 命令“modinfo br_netfilter”查看内核模块信息;
& J# f  D5 r3 [( [" y# 命令“modprobe br_netfilter”加载内核模块- J7 {" h2 X# [
[root@controller01 ~]# echo "# bridge" >> /etc/sysctl.conf7 ^5 D7 Q1 D1 v& l% Z5 a" n# j9 F
[root@controller01 ~]# echo "net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf% f. x( ~  }: P, M8 x! f
[root@controller01 ~]# echo "net.bridge.bridge-nf-call-ip6tables = 1" >> /etc/sysctl.conf
" s; F2 b2 K1 i[root@controller01 ~]# sysctl -p+ V7 {2 |  h2 t; z, m- Z# l
复制代码
# K4 m' \* H1 v! P0 A" d7. 配置l3_agent.ini(self-networking)7 F, H3 B& I- R* q1 k3 E" @
复制代码
: a2 T1 u+ ^+ _8 [# ?# 在全部控制节点操作,以controller01节点为例;) |7 _) E" v; }1 u
# l3_agent.ini文件的权限:root:neutron
! |9 p7 I' N1 f  ][root@controller01 ~]# cp /etc/neutron/l3_agent.ini /etc/neutron/l3_agent.ini.bak) _3 b' W% B4 W* {$ R3 i! M# y
[root@controller01 ~]# egrep -v "^$|^#"  /etc/neutron/l3_agent.ini' r" j7 x  Q: g0 u2 c5 i3 y) ?
[DEFAULT]
7 @8 W' C) l$ }! e2 zinterface_driver = linuxbridge
# c+ Z, s+ c4 m* R[agent]
: g+ l& d* s% }( r; V[ovs]
7 N0 }# e5 s, u6 A" u6 `, g: C复制代码1 o$ b: i* d7 t( ?- \
8. 配置dhcp_agent.ini: V# U3 w& |% O6 U
复制代码2 R9 p1 T: c) w: z7 D) H% O6 {
# 在全部控制节点操作,以controller01节点为例;( G4 e1 [$ B$ w" ~5 m* m
# 使用dnsmasp提供dhcp服务;. i) l4 c. }# @) }
# dhcp_agent.ini文件的权限:root:neutron
  E* w2 [* b5 G% S2 A% N[root@controller01 ~]# cp /etc/neutron/dhcp_agent.ini /etc/neutron/dhcp_agent.ini.bak2 u# J; S9 ^$ k# |2 Y. y) c7 ~
[root@controller01 ~]# egrep -v "^$|^#" /etc/neutron/dhcp_agent.ini
  l) O0 l( o" l" C[DEFAULT]
$ o1 I6 C) Q2 H' [) \interface_driver = linuxbridge0 E* s. }' I5 W! H% K2 }" H
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
, W# I8 J" V. m9 K. Senable_isolated_metadata = true
. q9 N/ n3 D% `/ F; x( u, r8 x) g1 ][agent]
0 A2 g; [( J; S' u2 z[ovs]
) _5 b( u. q: Q* x/ `/ J复制代码
8 _7 j1 h$ \7 W# o  t# A9. 配置metadata_agent.ini9 m+ T7 M; Q* _* a; i7 L
复制代码$ ~2 i1 S/ C6 Y! J' S8 |
# 在全部控制节点操作,以controller01节点为例;$ N4 k8 d% J- R5 l6 L2 B( \
# metadata_proxy_shared_secret:与/etc/nova/nova.conf文件中参数一致;
9 ?6 A7 e: ?. H# metadata_agent.ini文件的权限:root:neutron8 i2 W; z3 p  s" ]- J9 P& z
[root@controller01 ~]# cp /etc/neutron/metadata_agent.ini  /etc/neutron/metadata_agent.ini.bak  a  M; Y2 a4 l0 |8 O" ]$ _
[root@controller01 ~]# egrep -v "^$|^#"  /etc/neutron/metadata_agent.ini( R8 u* O8 [$ E
[DEFAULT]
- s8 I' K; g- o% t7 p& }+ ynova_metadata_host = controller
8 j2 w0 s7 s! tmetadata_proxy_shared_secret = neutron_metadata_secret
7 Q  M% t8 g* a9 V[agent]
* Z, X6 k# ^3 z( E% h$ x7 e3 b- H- l, ~( ?[cache]+ k/ }+ ]1 i6 F5 x4 V2 J
复制代码
! ?" z2 n  A3 L/ R10. 配置nova.conf# Y: b9 e8 `) m8 c3 V- `$ s
复制代码; M" W0 K' x: Q( B4 z( W
# 在全部控制节点操作,以controller01节点为例;
9 U4 |$ |8 I* f) Y- v0 F- O# 配置只涉及nova.conf的”[neutron]”字段;
1 z$ w) b* h8 E& S  P# metadata_proxy_shared_secret:与/etc/neutron/metadata_agent.ini文件中参数一致" S: [8 d% H( l' N& B8 v: S& F
[root@controller01 ~]# vim /etc/nova/nova.conf
% ]/ U9 h3 z& _0 {0 B, t[neutron]
0 m) p6 S  B& X3 M% gurl = http://controller:9696
3 |! B1 ^; q, i# U9 jauth_url = http://controller:35357
( F: u/ r- [2 q" i7 i6 e* u6 dauth_type = password
6 e  b& L, H1 ^project_domain_name = default/ r$ t3 I7 f" A4 P: z$ b) l
user_domain_name = default
$ ?3 Q+ ~3 R+ @9 [: _1 i/ iregion_name = RegionTest+ z5 g! S4 S( [1 M" o7 ~  n7 Z
project_name = service( Y2 L8 P+ }5 p7 |  h
username = neutron
" P! V2 D% I' S& o& Lpassword = neutron_pass
2 z. E4 K: v/ Z9 yservice_metadata_proxy = true
& O* D2 F- ?; bmetadata_proxy_shared_secret = neutron_metadata_secret
( F( O/ I. b( A) O, D3 e8 }复制代码
' x$ C& x+ x, D4 G( M6 S% w11. 同步neutron数据库
7 R7 C7 n& F5 C/ G" B: b' F: M# I3 Q+ e( a# 任意控制节点操作;% q1 ^' [" l8 S+ e/ o
[root@controller01 ~]# su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron
( a! x1 i9 l+ V- O# 验证
+ B3 ]! K) Z) ~4 `6 @[root@controller01 ~]# mysql -h controller01 -u neutron -pneutron_dbpass -e "use neutron;show tables;"
3 k7 d! l9 E( _6 ~) ?4 F( y; @+ q* Z12. 启动服务
1 L& H2 T# F. `' n% D  F9 ]8 W复制代码
) B) K- [+ a# v0 O1 l  N9 w# 全部控制节点操作;
, ?, F+ y7 j9 R( v: z# 变更nova配置文件,首先需要重启nova服务
( B4 d  k) J4 I0 g7 T/ `[root@controller01 ~]# systemctl restart openstack-nova-api.service# u3 W6 a$ M/ h/ ]1 @

' D' M9 s( Q% a* W# 开机启动' F" U$ G5 e7 q5 h' @
[root@controller01 ~]# systemctl enable neutron-server.service \
0 A/ g( o" V# c$ h6 w7 K% b$ X( E neutron-linuxbridge-agent.service \' Z2 j7 ?2 f6 i" T
neutron-l3-agent.service \  y) o- J. b2 D1 m
neutron-dhcp-agent.service \
& f8 J; D$ \5 x. z neutron-metadata-agent.service( [& c0 M3 V) w; Q
# 启动, Y4 M/ ~4 a, c% c8 t
[root@controller01 ~]# systemctl restart neutron-server.service
1 ~% T6 k: I) n, O# @7 {; y  L[root@controller01 ~]# systemctl restart neutron-linuxbridge-agent.service. g  |' J2 X" V1 X6 W; f% _' Y
[root@controller01 ~]# systemctl restart neutron-l3-agent.service4 |; e9 q  \( b5 y/ k% J5 f3 Y
[root@controller01 ~]# systemctl restart neutron-dhcp-agent.service
. d/ Q0 r1 I& ~[root@controller01 ~]# systemctl restart neutron-metadata-agent.service
$ a% g$ d% T. |7 ]2 t" l* L复制代码6 }8 d& ^* x4 J
13. 验证
1 E3 j1 l: q# V# K( v复制代码$ L0 i2 f9 O( C& Y8 f# }( k7 Y1 h
[root@controller01 ~]# . admin-openrc
! g0 @, j9 B# _# 查看加载的扩展服务4 D4 c7 l: }4 g1 E1 c0 U) w" q% ?9 Z
[root@controller01 ~]# openstack extension list --network5 `1 |. g* P/ u8 [: z2 E2 @& |( g
# 查看agent服务
8 o) v" n9 a0 I7 o) D9 |[root@controller01 ~]# openstack network agent list
0 {( h0 w: ~# }0 v6 e8 P2 D复制代码
; Y; b" o6 b  I
, I2 k/ Y! H3 Y. i14. 设置pcs资源
( L# P$ l/ y9 d. c复制代码
) N# l( Z( J* _" W  l/ r# 在任意控制节点操作;
. S" }: N, V  W* O$ @5 m  c# 添加资源neutron-server,neutron-linuxbridge-agent,neutron-l3-agent,neutron-dhcp-agent与neutron-metadata-agent
  w; ^- c9 W. b! t) X$ I[root@controller01 ~]# pcs resource create neutron-server systemd:neutron-server --clone interleave=true
# b, s; _. N3 y8 E1 l9 \8 h[root@controller01 ~]# pcs resource create neutron-linuxbridge-agent systemd:neutron-linuxbridge-agent --clone interleave=true4 k, E+ R" q( Y5 S  B( B, T
[root@controller01 ~]# pcs resource create neutron-l3-agent systemd:neutron-l3-agent --clone interleave=true! Y/ }/ x5 H1 _  W* k1 t+ k6 J
[root@controller01 ~]# pcs resource create neutron-dhcp-agent systemd:neutron-dhcp-agent --clone interleave=true& x  `" a' J7 X4 R( F9 {. S9 d
[root@controller01 ~]# pcs resource create neutron-metadata-agent systemd:neutron-metadata-agent --clone interleave=true- o7 w" f- R4 E7 p* h
# 查看pcs资源) i$ w1 x3 }1 B' u
[root@controller01 ~]# pcs resource) C; ]" n2 ^; b+ F2 F: G" _

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2021-10-8 17:17:29 | 显示全部楼层
# 在全部控制节点安装neutron相关服务,以controller01节点为例) |% y; X" x: J( V/ f6 Z
[root@controller01 ~]# yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge python-neutronclient ebtables ipset -y
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 02:24 , Processed in 0.018905 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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