螺蛳壳里做道场:老破机搭建的私人数据中心---Centos下Docker学习07(基于docker容器的防火墙及NAT企业实战)

news2024/10/9 7:52:59

7.1 网络准备

7.2 网络规划

1)虚拟网络编辑器

点击右下方“更改设置”,点击“添加网络”假如vmnet3和vmnet4,然后分别选择vmnet3和vmnet4,设置为“仅主机模式”,按③处处理,去掉“使用DHCP”,子网分别设置为192.168.126.0/24和202.202.202.0/24。

图7- 1

                   虚拟机设置,除了安装时的NAT网络外,还有一个wifi的vmnet0桥接,再添加vmnet3和vmnet4,如图7-2所示,vmnet3和vmnet都选择仅主机模式。

图7- 2

         将宿主物理主机的网络连接里vmnet3和vmnet4分别设置为192.168.126.99/24、202.202.202.99/24。

图7- 3

设置虚拟机新增网卡ens37ens38ip地址:

[root@localhost network-scripts]# ip a

1: ……

4: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

    link/ether 00:0c:29:d3:92:d6 brd ff:ff:ff:ff:ff:ff

    inet 192.168.126.33/24 brd 192.168.126.255 scope global noprefixroute ens37

       valid_lft forever preferred_lft forever

    inet6 fe80::7381:cf8f:5191:189b/64 scope link noprefixroute

       valid_lft forever preferred_lft forever

5: ens38: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

    link/ether 00:0c:29:d3:92:e0 brd ff:ff:ff:ff:ff:ff

    inet 202.202.202.33/24 brd 202.202.202.255 scope global noprefixroute ens38

       valid_lft forever preferred_lft forever

    inet6 fe80::3d32:1ff6:af6a:1a47/64 scope link noprefixroute

       valid_lft forever preferred_lft forever

……

测试一下和宿主机及外网的连通性:

[root@localhost network-scripts]# ping 202.202.202.99 -c 2

PING 202.202.202.99 (202.202.202.99) 56(84) bytes of data.

64 bytes from 202.202.202.99: icmp_seq=1 ttl=128 time=0.502 ms

64 bytes from 202.202.202.99: icmp_seq=2 ttl=128 time=0.532 ms

--- 202.202.202.99 ping statistics ---

2 packets transmitted, 2 received, 0% packet loss, time 1009ms

rtt min/avg/max/mdev = 0.502/0.517/0.532/0.015 ms

[root@localhost network-scripts]# ping 192.168.126.99 -c 2

PING 192.168.126.99 (192.168.126.99) 56(84) bytes of data.

64 bytes from 192.168.126.99: icmp_seq=1 ttl=128 time=0.278 ms

64 bytes from 192.168.126.99: icmp_seq=2 ttl=128 time=0.559 ms

--- 192.168.126.99 ping statistics ---

2 packets transmitted, 2 received, 0% packet loss, time 1008ms

rtt min/avg/max/mdev = 0.278/0.418/0.559/0.141 ms

[root@localhost network-scripts]# ping www.baidu.com -c 2

PING www.a.shifen.com (183.2.172.185) 56(84) bytes of data.

64 bytes from 183.2.172.185 (183.2.172.185): icmp_seq=1 ttl=128 time=31.9 ms

64 bytes from 183.2.172.185 (183.2.172.185): icmp_seq=2 ttl=128 time=31.1 ms

--- www.a.shifen.com ping statistics ---

2 packets transmitted, 2 received, 0% packet loss, time 1008ms

rtt min/avg/max/mdev = 31.183/31.555/31.927/0.372 ms

2)容器网络ip规划

7.1 IP规划

操作系统

IP地址

内网服务器intrasvr

Centos 8

192.168.100.221VMnet3

natsvr

Centos 8

IP1: 192.168.100.220VMnet3

IP2:202.202.202.1VMnet4

intersvr

Centos 8

202.202.202.113VMnet4

wifi               :       ens36       192.168.0.0/24

模拟内网nei:       ens37     192.168.100.0/24

模拟外网wai:      ens38     202.202.202.0/24

图7- 4

3)要求

1. 配置SNAT保证内网用户能够正常访问公网IP

2. 配置DNAT保证外网用户能够正常访问内网的SSH服务器。

3. 配置iptables防火墙

4)步骤:

   注意:请保证物理机连上互联网的情况下,在intrasvrnatsvr两台服务器上安装iptablesiptables-servies两个软件包,以便后续使用。intrasvr网关是natsvrnatsvr可以pingintersvr,但是intrasver无法pingintersvr

i准备工作

规划容器连接网络

192.168.100.0/24模拟内网,202.202.202.0/24模拟外网

7.2 对应的容器网络规划

网络/容器

Ip

连接特性

端口

安装包

neiw

192.168.100.0/24

macvlan/ens37

waiw

2i02.202.202.0/24

macvlan/ens38

intrasvr容器

192.168.100.221/24

Gateway:192.168.100.220

firewalldiptablesiptables-servies

natsvr容器

192.168.100.220/24

202.202.202.1/24

firewalldiptablesiptables-servies

intersvr容器

202.202.202.113/24

①创建与物理网wifi:192.168.0.0/24、neiw:192.168.126.0/24和waiw桥接的docker网络

docker network create -d macvlan --subnet=192.168.0.0/24 --gateway=192.168.0.1 -o parent=ens37 wifi

docker network create -d macvlan --subnet=192.168.126.0/24 --gateway=192.168.126.99 -o parent=ens39 neiw

docker network create -d macvlan --subnet=202.202.202.0/24 --gateway=202.202.202.99 -o parent=ens40 waiw

[root@localhost ~]# docker network create -d macvlan --subnet=192.168.0.0/24 --gateway=192.168.0.1 -o parent=ens36 wifi

ad56b3c0094aa88c08bca676dcd1980b6c92d7a9d4844f5ff44c7820edfd6790

[root@localhost ~]# docker network create -d macvlan --subnet=192.168.126.0/24 --gateway=192.168.126.99 -o parent=ens37 neiw

c26169d5782d3f3d9ea3a2c4ff09480ef3f958f51d13eeab6449d6a110d1f1a2

[root@localhost ~]# docker network create -d macvlan --subnet=202.202.202.0/24 --gateway=202.202.202.99 -o parent=ens38 waiw

9fcfb8b1d1f1ccf2c17c1381530e899297bf16ae36ffaebfe5f5f950574f2c40

[root@localhost ~]# docker network ls

NETWORK ID     NAME      DRIVER    SCOPE

e450e6350455   bridge    bridge    local

8cb34f3d18a1   host      host      local

c26169d5782d   neiw      macvlan   local

78b5e1889b1f   none      null      local

9fcfb8b1d1f1   waiw      macvlan   local

ad56b3c0094a   wifi      macvlan   local

②在/目录下创建/cts8etc/yum.repos.d,并将准备好存放在/wutool的CentOS-Base852111.repo的库文件拷进该文件夹,这是为centos8.5.2111容器准备库文件,然后创建表7.2所规划的三个容器intrasvr、natsvr、intersvr(暂时IP桥接到wifi上,初始化完成后,再按表7.2内容实施)

[root@localhost ~]# cp /wutool/CentOS-Base852111.repo   /cts8etc/CentOS-Base852111.repo

③先准备三个和wifi桥接的三台容器(CentOS:lastest):

docker run -itd -e “container=docker” --privileged=true -v /sys/fs/cgroup:/sys/fs/cgroup -v /wutool:/wutool -v /mnt:/mnt -v /cts8etc/yum.repos.d:/etc/yum.repos.d --net wifi --ip 192.168.0.21 --name intrasvr centos /usr/sbin/init

docker run -itd -e “container=docker” --privileged=true -v /sys/fs/cgroup:/sys/fs/cgroup -v /wutool:/wutool -v /mnt:/mnt -v /cts8etc/yum.repos.d:/etc/yum.repos.d --net wifi --ip 192.168.0.20 --name natsvr centos /usr/sbin/init

docker run -itd -e “container=docker” --privileged=true -v /sys/fs/cgroup:/sys/fs/cgroup -v /wutool:/wutool -v /mnt:/mnt -v /cts8etc/yum.repos.d:/etc/yum.repos.d --net wifi --ip 192.168.0.13 --name intersvr centos /usr/sbin/init

查看容器

图7- 5

④容器初始化

启动三个容器

[root@wuzz ~]# docker start intrasvr intersvr natsvr

intrasvr

intersvr

natsvr

复制3个ssh登录窗口,2、3、4,然后在三个窗口中分别登录容器

图7- 6

docker exec -it intrasvr /bin/bash

查看ip,更新yum源

图7- 7

失败了!看错误好像要到ali网站的docker中心去报到,而我们的容器都是虚拟网模拟的,无法连外网。

图7- 8

宿主机是可以连外网的,网络有个nat网络是连接外网的,我们在centos主机上给三个容器连外网:

[root@wuzz ~]# docker network connect nat intrasvr

图7- 9

更新

[root@8753cfda310e /]# yum clean all

Failed to set locale, defaulting to C.UTF-8

0 files removed

[root@8753cfda310e /]# yum makecache

Failed to set locale, defaulting to C.UTF-8

Docker CE Stable - x86_64                                                                            235 kB/s |  66 kB     00:00

LocalRepo_BaseOS                                                                                      60 MB/s | 2.6 MB     00:00

LocalRepository_AppStream                                                                             68 MB/s | 7.5 MB     00:00

Metadata cache created.

安装必要工具(最好所有的容器上都安)

[root@8753cfda310e /]# yum install -y yum-utils device-mapper-persistent-data lvm2 net-tools NetworkManager firewalld iptables-services openssh-clients passwd openssl openssh-server initscripts dhcp-server dhcp-relay

⑤给容器安装ssh服务

由于docker安装的容器不支持SSH登录,需要做ssh服务器架设:

[root@8753cfda310e /]# yum install passwd openssl openssh-server initscripts -y

编辑/etc/ssh/sshd_config,注意红色部分,没有的就自行添加

……

Port 22

AddressFamily any

ListenAddress 0.0.0.0

#ListenAddress ::

HostKey /etc/ssh/ssh_host_rsa_key

HostKey /etc/ssh/ssh_host_ecdsa_key

HostKey /etc/ssh/ssh_host_ed25519_key

# Ciphers and keying

#RekeyLimit default none

# This system is following system-wide crypto policy. The changes to

# crypto properties (Ciphers, MACs, ...) will not have any effect here.

# They will be overridden by command-line options passed to the server

# on command line.

# Please, check manual pages for update-crypto-policies(8) and sshd_config(5).

# Logging

#SyslogFacility AUTH

SyslogFacility AUTHPRIV

#LogLevel INFO

# Authentication:

#LoginGraceTime 2m

PermitRootLogin yes

PermitEmptyPasswords yes

#StrictModes yes

#MaxAuthTries 6

#MaxSessions 10

PubkeyAuthentication yes

#重启ssh

[root@8753cfda310e /]# service sshd restart

Redirecting to /bin/systemctl restart sshd.service

[root@8753cfda310e /]# systemctl start sshd.service

[root@8753cfda310e /]# systemctl enable sshd.service

[root@8753cfda310e /]# passwd root

Changing password for user root.

New password:

BAD PASSWORD: The password is shorter than 8 characters

Retype new password:

passwd: all authentication tokens updated successfully.

将容器中的/etc/ssh/sshd_config拷贝到宿主机的共享卷/wutool上,其他容器再从共享卷拷贝到/etc/ssh/目录,并按以上步骤重启sshd服务。

局域网中随便找个工具登陆容器,这里用MobaXterm登陆容器:

图7- 10

容器间相互登陆:

图7- 11

以表7.2规划的固定ipnatsvr连接neiwwaiwintrasvr连接neiwintersvr连接waiw

natsvr

docker network connect --ip=192.168.100.221 neiw natsvr

docker network connect --ip=202.202.202.1 waiw natsvr

intrasvr

docker network connect --ip=192.168.100.220 neiw intrasvr

intersvr

docker network connect --ip=202.202.202.113 waiw intersvr

给容器intrasvr增加网关192.168.100.221

route add default gw 192.168.100.221

在intrasvr上可以ping natsvr的两个ip但是无法ping通外网intersvr,即

[root@intrasvr~]# ping natsvr ()              //

[root@ intrasvr~]# ping natsvr ()              //

[root@ intrasvr~]# ping intersvr                //不通

[root@intrasvr /]# ping 192.168.100.221 -c 2

PING 192.168.100.221 (192.168.100.221) 56(84) bytes of data.

64 bytes from 192.168.100.221: icmp_seq=1 ttl=64 time=0.383 ms

64 bytes from 192.168.100.221: icmp_seq=2 ttl=64 time=0.120 ms

--- 192.168.100.221 ping statistics ---

2 packets transmitted, 2 received, 0% packet loss, time 1058ms

rtt min/avg/max/mdev = 0.120/0.251/0.383/0.132 ms

[root@intrasvr /]# ping 202.202.202.1 -c 2

PING 202.202.202.1 (202.202.202.1) 56(84) bytes of data.

64 bytes from 202.202.202.1: icmp_seq=1 ttl=64 time=0.072 ms

64 bytes from 202.202.202.1: icmp_seq=2 ttl=64 time=0.119 ms

--- 202.202.202.1 ping statistics ---

2 packets transmitted, 2 received, 0% packet loss, time 1009ms

rtt min/avg/max/mdev = 0.072/0.095/0.119/0.025 ms

[root@intrasvr /]# ping 202.202.202.113 -c 2

PING 202.202.202.113 (202.202.202.113) 56(84) bytes of data.

From 192.168.100.221 icmp_seq=1 Destination Host Prohibited

From 192.168.100.221 icmp_seq=2 Destination Host Prohibited

--- 202.202.202.113 ping statistics ---

2 packets transmitted, 0 received, +2 errors, 100% packet loss, time 1005ms

⑦配置SNAT

在intrasvr和natsvr上关闭firewalld,启动iptables

[root@ nat-server ~]# systemctl stop firewalld

[root@ nat-server ~]# systemctl start iptables

在natsvr上配置配置防火墙SNAT

[root@862b11cc5d84 /]# cat /proc/sys/net/ipv4/ip_forward

确认开启路由存储转发,其值为1。如果为0,则执行:

[root@862b11cc5d84 /]# echo 1 > /proc/sys/net/ipv4/ip_forward

清空filter表,查看filter表和nat 表:

[root@862b11cc5d84 /]# iptables -F

[root@862b11cc5d84 /]# iptables -L

[root@862b11cc5d84 /]# iptables -t nat -L

配置SNAT转换

[root@862b11cc5d84 /]#iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -j SNAT --to-source  202.202.202.1

[root@natsvr /]# iptables -t nat -L

Chain PREROUTING (policy ACCEPT)

target     prot opt source               destination

Chain INPUT (policy ACCEPT)

target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)

target     prot opt source               destination

SNAT       all  --  192.168.100.0/24     anywhere             to:202.202.202.1

Chain OUTPUT (policy ACCEPT)

target     prot opt source               destination

在内网intrasvr上测试SNAT配置是否成功,intrasvrping外部intersvr

[root@intrasvr /]# ping 202.202.202.113 -c 2

PING 202.202.202.113 (202.202.202.113) 56(84) bytes of data.

64 bytes from 202.202.202.113: icmp_seq=2 ttl=63 time=0.537 ms

--- 202.202.202.113 ping statistics ---

2 packets transmitted, 1 received, 50% packet loss, time 1039ms

rtt min/avg/max/mdev = 0.537/0.537/0.537/0.000 ms

测试内网ping公网

[root@8753cfda310e /]# ping www.baidu.com -c 2

PING www.a.shifen.com (183.2.172.42) 56(84) bytes of data.

64 bytes from 183.2.172.42 (183.2.172.42): icmp_seq=2 ttl=127 time=30.3 ms

--- www.a.shifen.com ping statistics ---

2 packets transmitted, 1 received, 50% packet loss, time 1062ms

rtt min/avg/max/mdev = 30.323/30.323/30.323/0.000 ms

转了几次后,时延有点大。

⑧配置DNAT

情景描述:如果外网要登录natsvr的话,自动转换目的地址202.202.202.1192.168.100.221SSH服务上。

开启iptables防火墙,并清空filter表,并查看filter

[root@8753cfda310e /]# systemctl start iptables

[root@8753cfda310e /]# iptables -F

[root@8753cfda310e /]# iptables -L

Chain INPUT (policy ACCEPT)

target     prot opt source               destination

Chain FORWARD (policy ACCEPT)

target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)

target     prot opt source               destination

filterINPUT链中添加规则

[root@8753cfda310e /]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT

在防火墙nat-server上配置DNAT

iptables -t nat -A PREROUTING -d 202.202.202.1 -p tcp --dport 22 -j DNAT --to-destination 192.168.100.221:22

[root@natsvr /]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT

[root@natsvr /]# iptables -t nat -A PREROUTING -d 202.202.202.1 -p tcp --dport 22 -j DNAT --to-destination 192.168.100.221:22

[root@natsvr /]# iptables -L

Chain INPUT (policy ACCEPT)

target     prot opt source               destination

ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh

Chain FORWARD (policy ACCEPT)

target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)

target     prot opt source               destination

intersvr上远程登录docker容器查看配置是否生效:

[root@intersvr /]# ssh 202.202.202.1

The authenticity of host '202.202.202.1 (202.202.202.1)' can't be established.

ECDSA key fingerprint is SHA256:YM49UWmdsfNjsYC/jkskneFwWiK5eBodfPvRM2OOT60.

Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

Warning: Permanently added '202.202.202.1' (ECDSA) to the list of known hosts.

root@202.202.202.1's password:

Last login: Tue Oct  8 13:37:24 2024 from 202.202.202.1

至此,完成了防火墙的基本配置和NAT部署。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2198481.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unite Shanghai 2024 团结引擎专场 | 团结引擎 OpenHarmony 工程剖析

在 2024 年 7 月 24 日的 Unite Shanghai 2024 团结引擎专场演讲中&#xff0c;Unity中国 OpenHarmony 技术负责人刘伟贤对团结引擎导出的 OpenHarmony 工程进行了细节剖析&#xff0c;详细讲解 XComponent 如何与引擎结合&#xff0c;UI 线程和引擎线程的关联以及 ts/ets 的代…

瓷片区该如何设计?这里有几十个样式呀

瓷片区在设计中扮演着重要的角色&#xff0c;它可以快速吸引用户的注意力&#xff0c;引导用户进行进一步的探索。那么&#xff0c;瓷片区该如何设计呢&#xff1f;这里有几十个样式可供参考。

大数据新视界 --大数据大厂之 Hudi 数据湖框架性能提升:高效处理大数据变更

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

CSS 图标和文本对齐

比如下面一段HTML代码&#xff0c;我们想在图标旁边显示文本或者数字 <body> <div><img src"smile.svg" alt"smile"><span>12</span></div> <div><img src"heartShape.svg" alt"…

卫星测绘AI技术-立哥尖端科研

分布式微波干涉测绘卫星是以多颗满足一定编队构形的卫星为平台&#xff0c;以合成孔径雷达 和高精度星间相对状态测量设备等为有效载荷&#xff0c;具备全天时、全天候获取雷达干涉影像数 据&#xff0c;快速测制全球数字表面模型、数字雷达正射影像等测绘产品能力的卫星系统…

如何选择适合的自闭症学校寄宿方式

自闭症&#xff0c;这一日益受到社会关注的特殊需求领域&#xff0c;正逐步吸引着越来越多的教育资源与专业力量。对于许多自闭症儿童的家庭而言&#xff0c;选择一个合适的学校寄宿方式&#xff0c;不仅是对孩子未来成长的投资&#xff0c;更是对家庭幸福的期盼。在广州这座繁…

Android Studio实现安卓心理健康咨询

获取源码请点击文章末尾QQ名片联系&#xff0c;源码不免费&#xff0c;尊重创作&#xff0c;尊重劳动 项目代号161 1.开发环境 android stuido3.6 jdk1.8 2.功能介绍 安卓端&#xff1a; 1.注册登录 2.心理测评 3.测评结果 4.心理咨询预约 5.心理综合辅导 6.个人中心 7.历史咨…

自动生成实体类,mapper类,mapper.xml文件

使用mybatis generator&#xff08;无需安装&#xff0c;对于外网有限制的真的很友好&#xff09; 1. 在pom文件中配置mysql相关依赖&#xff0c;并添加plugin <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId…

VMWare安装和基本使用NixOS Linux 24.05版本

文章目录 简介Nix 语言基础知识NixOS 虚拟机创建 VMWare 的 NixOS 虚拟机安装说明Nix 包管理器安装Windows(WSL)上安装Linux 上安装Docker 上安装MacOS 上安装NixOS 的安装下载 ISO 镜像安装 NixOS修改语言网络配置设置位置设置键盘设置账号和密码桌面环境分区完成安装登录系…

免费送源码:Apache+B/S+Springboot+MySQL 商城综合项目自动化系统 计算机毕业设计原创定制

摘 要 目前电商系统商城项目管理极其频繁,迫切地需要自动化测试来代替人工繁琐而又重复的劳动。自动化测试相关的研究已经很多,但多数只是针对某一方面,比如单一接口或者单一页面或者性能等,而缺乏将接口、页面、持续集成系统和缺陷管理系统整合的自动化测试平台。本研究采用混…

鸟类数据集,鸟数据集,目标检测class:bird,共一类13000+张图片yolo格式(txt)

鸟类数据集&#xff0c;鸟数据集&#xff0c;目标检测class:bird&#xff0c;共一类13000张图片yolo格式&#xff08;txt&#xff09; 鸟类数据集&#xff0c;鸟数据集&#xff0c;目标检测 class:bird&#xff0c;共一类 13000张图片 yolo格式&#xff08;txt&#xff09; 鸟…

sql堆叠注入

准备知识&#xff1a; php中multi_query()&#xff1a;一次可以执行多个sql语句比如&#xff1a;查询注入id1&#xff1b;update xxx; 定义&#xff1a;如果后端代码中&#xff0c;数据库执行的方法是multi_query()&#xff0c;那么就可以一次执行多个sql&#xff0c;也就可以…

在虚拟机里试用了几个linux操作系统

在虚拟机里试用了几个操作系统。遇到一些问题。虚拟机有时候出错。有时候出现死机现象&#xff0c;有的不能播放视频。有的显示效果不太好。 试了debian12&#xff0c;ubuntu20.4&#xff0c;ubuntu22.4&#xff0c;ubuntu24.4&#xff0c;deepin。其中ubuntu20.4使用时没有出…

neo4j知识图谱管理系统,结合es全文检索,知识管理系统

一、项目介绍 一款全源码&#xff0c;可二开&#xff0c;可基于云部署、私有部署的企业级知识库云平台&#xff0c;一款让企业知识变为实打实的数字财富的系统&#xff0c;应用在需要进行文档整理、分类、归集、检索、分析的场景。 为什么建立知识库平台&#xff1f; 助力企业…

数据结构-5.1.树的定义和基本术语

一.树的基本概念&#xff1a; 1.根结点&#xff1a;最顶层的结点&#xff0c;有且仅有一个&#xff0c;没有前驱&#xff1b; 2.叶子结点&#xff1a;不能再有子结点&#xff0c;没有后继&#xff1b; 3.结点&#xff1a;用于存数据&#xff1b; 4.也有前驱和后继的说法&…

Lumerical——属性编辑窗口的详解

一、几何选项卡(Geometry tab) 通过几何选项卡中的选项可以设定物件的位置和大小。 二、材料选项卡(Material tab) ① 材料(MATERIAL): 在该字段可以设置成材料数据库中包含的任何材料。数据库也有可能包含一些新材料,也可以对已经包含的材料进行编辑。如果选…

C#将部分Controls数据导入对象并存入ini中

目录 1.遍历控件和属性得到控件的值 2.利用FieldInfo的getSet函数设置类对象数据 3.Ini简易类库编写 4.存入对象转换为json存入ini 5.效果展示 在日常的Winform设计工作中&#xff0c;将控件中的数据导出到对应属性或者字段中&#xff0c;再进行保存是经常会用到的技巧&#x…

51单片机的多点温度检测系统【proteus仿真+程序+报告+原理图】

1、主要功能 该系统由AT89C51/STC89C52单片机LCD1602显示模块温度传感器等模块构成。适用于多路温度检测、3路温度检测等相似项目。 可实现功能: 1、LCD1602实时显示三路温度 2、温度传感器DS18B20*3采集温度 本项目包含仿真、代码&#xff08;422行代码&#xff09;、原理图…

网络编程(15)——服务器如何主动退出

十五、day15 服务器主动退出一直是服务器设计必须考虑的一个方向&#xff0c;旨在能通过捕获信号使服务器安全退出。我们可以通过asio提供的信号机制绑定回调函数即可实现优雅退出。 之前服务器的主函数如下 #include "CSession.h" #include "CServer.h"…

需求8——通过一个小需求来体会AI如何帮助改bug

这篇文章&#xff0c;我们通过一个简单的例子来说明&#xff0c;平时在写需求的时候&#xff0c;我们可以在什么时候用AI来帮助我们写代码。 首先来看一下这个需求&#xff1a;系统中某个用户使用的时候出现了bug&#xff0c;通过手机建立临时任务报错&#xff0c;没有办法新增…