热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

防火墙的共享上网,端口映射2

iptables防火墙概述1.防火墙概述应用封端口,封ip√实现NAT功能;共享上网;端口映射(端口转发),ip映射2.防火墙种类及使用说明防火墙官网https:www.froze

iptables防火墙概述
1. 防火墙概述应用
封端口,封ip √实现NAT 功能;共享上网;端口映射(端口转发),ip映射
2.防火墙种类及使用说明
防火墙官网https://www.frozentux.net/iptables-tutorial/iptables-tutorial.html
硬件: 整个企业入口        
三层路由: H3C  华为 Cisco(思科)                    
防火墙: 深信服    
Juniper                
软件: 开源软件 网站内部 封ip 封ip                    
iptables  写入到Linux内核中(还有lvs) 以后服务docker 工作在 4层(大部分李)    
firewalld C7        
nftalbes  C8                
ufw (ubuntu fire wall)    Ubuntu
云防火墙(公有云)
阿里云:
安全组 (封ip,封端口)
NAT 网关(共享上网,端口映射....)
waf 应用防火墙   
waf 防火墙(应用防火墙,处理7层的攻击) SQL注入
3.必须熟悉的名词
容器: 瓶子 罐子 存放东西
表(table): 存放链的容器,防火墙最大概念
链(chain): 存放规则的容器
规则(policy):  准许或拒绝规则 ,未来书写的防火墙条件就是各种防火墙规则
(容器--table表--chains链--policy规则;楼--房子--衣柜--衣服)
规则--匹配成功:DROP拒接服务,Accept接受请求,默认规则(最后匹配)
自上而下,一旦匹配成功,直接通过,不会再往下匹配了;
4.iptables 执行过程
01.防火墙是层层过滤的,实际是按照配置规则的顺序从上到下,从前到后进行过滤的。
02.如果匹配成功规则,即明确表示是拒绝(DROP)还是接收(ACCEPT),数据包就不再向下匹配新的规则。
03.如果规则中没有明确表明是阻止还是通过的,也就是没有匹配规则,向下进行匹配,直到匹配默认规则得到明确的阻止还是通过。
04.防火墙的默认规则是所有规则都匹配完才会匹配的
5.表与链※※※※※iptables 是4表伍链        
4表: 过滤器filter表;共享上网nat;raw表;mangle表                
伍链(大写字母): INPUT数据进来 OUTPUT出去 FORWARD路过 PREROUTING POSTROUTING 
pre.... 之前   post .....之后
1) filter表----实现防火墙功能(屏蔽或准许 端口 ip)

2) nat表

实操:环境准备及命令
iptables启动或关闭的命令
(m01    10.0.0.61    172.16.1.61;web01    10.0.0.7    172.16.1.7;web02    10.0.0.8    172.16.1.8)    
[root@m01 ~]# yum install -y    iptables-services
[root@m01 ~]# rpm -ql   iptables-services    
/etc/sysconfig/iptables                             #防火墙的配置文件
/usr/lib/systemd/system/iptables.service    #防火墙服务配置文件(命令)    
[root@m01 ~]# rpm -ql iptables                
/usr/sbin/iptables            #iptables 命令 添加/删除/查看 规则(4表伍链)
/usr/sbin/iptables-save        #iptables规则 输出(保存)
/usr/sbin/iptables-restore    #恢复    
#防火墙相关模块 加载到内核中                                        
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state
#永久,写入到开机自启动
cat >>/etc/rc.local<modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat 
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state
EOF                            
[root@m01 ~]# lsmod |egrep 'filter|nat|ipt'
[root@m01 ~]# systemctl stop firewalld    
[root@m01 ~]# systemctl disable    firewalld
[root@m01 ~]# systemctl  start  iptables.service
[root@m01 ~]# systemctl  enable iptables.service
[root@m01 ~]# systemctl status iptables.service
#查看filter表中的规则(默认filter表)[root@m01 ~]# iptables -nL    
#查看指定表中的规则     [root@m01 ~]# iptables  -t nat -nL        
iptables常用选项介绍 
参数    含义    
-L    显示表中的所有规则    
-n    不要把端口 或ip反向解析为名字    
-t    指定表 不指定默认是filter表    
指定连接(加入/追加/删除)        
-A    append 追加 加入准许类规则 使用-A 会把规则写在最后.
-I    置顶--把规则加在链的第1条 拒绝类规则放在所有规则最上面
-D  delete 删除 -D INPUT 1                                            
-p    协议(protocal) tcp/udp/icmp/all 指定端口的时候需要指定协议.                
--dport    目标端口 dest destination 指定端口 加上协议(-p tcp)                    
--sport    源端口 source 源                    
-s    --source 源ip                                    
-d    --destination 目标ip                                    
-m    指定模块 multiport,limit,state            
-i    input 输入的时候 从哪个网卡进来                                    
-o    ouput 输出的时候 从哪个网卡出去                
-j    满足条件后的动作 : DROP/ACCEPT/REJECT
    DROP REJECT 都是拒绝
    DROP 把数据丢掉 不会返回信息给用户
    REJECT 拒绝 返回拒绝信息 
-F  flush    清除所有规则,不会处理默认的规则                            
-X    删除用户自定义的链                                
-Z  zero    链的计数器清零(数据包计数器与数据包字节计数器)        
配置filter表规,正式配置之前 先备份, 清空规则
[root@m01 ~]# iptables -F                            
[root@m01 ~]# iptables -X                            
[root@m01 ~]# iptables -Z                                                         
[root@m01 ~]# iptables -nL                            
#拒绝用户访问22端口                        
iptables -t filter    -A    INPUT    -p tcp --dport 22 -j DROP
#查看规则并加上序号            
iptables -t filter    -nL    --line-number
#删除规则            
iptables -t filter    -D INPUT  1    #根据序号删除            
案例01: 封ip 屏蔽某个ip和网段
屏蔽 ip
# iptables -I INPUT -s 10.0.0.7 -j DROP
# iptables -I INPUT    -s 172.16.1.7    -j DROP
# iptables -nL    
屏蔽网段
[root@m01 ~]# iptables -I INPUT  -s 172.16.1.0/24  -j DROP
案例02: 禁止网段连入(禁止10.0.0.0/24网段访问 8888 端口)
nc ncat netcat    nc –lk    telnet
# iptables -I INPUT    -s 10.0.0.0/24    -p tcp    --dport 8080    -j DROP
 [root@web01 ~]# ssh 172.16.1.61 hostname

方案03: 只允许指定网段连入(允许172.16.1.0网段)
实现阿里云白名单功能 :默认是拒绝 开放端口 网段
allow 10.0.0.0/24;
deny all;
方法1: 利用 !  进行排除
iptables -I INPUT   ! -s 172.16.1.0/24  -j DROP                
#只准许 10.0.0.0/24 访问 言外之意    除了 10.0.0.0/24    都拒绝
iptables -I INPUT ! -s 10.0.0.0/24    -j DROP                
方法2:    修改链默认规则 修改为拒绝 添加准许
先配置好规则 准许规则  修改默认规则
[root@oldboy-m01 ~]# iptables -nL
[root@oldboy-m01 ~]# iptables -A  INPUT    -s 10.0.0.0/24
[root@oldboy-m01 ~]# iptables -P INPUT DROP   #修改默认规则
[root@oldboy-m01 ~]# iptables -nL            
#测试完成后 修改回去  (用ping来验证)                    
iptables    -P  INPUT    ACCEPT                
案例04 指定多个端口
# iptables -I INPUT -p tcp --dport 8888 -j DROP
# iptables -I INPUT -p tcp --dport 9999 -j DROP            
[root@oldboy-m01 ~]# iptables -nL                
#指定多个端口    
-m multiport   -p tcp   --dport 80,443    
iptables    -A INPUT   -m multiport -p tcp    --dport 80,443  -j  ACCEPT
iptables -nL
iptables -A INPUT -p tcp --dport 1:1024 -j ACCEPT 21
#补充:
[root@m01 ~]# iptables -I INPUT  -p tcp -m multiport ! --dport 80,443  -j DROP
#如果是连续的端口 可以不加上-m multiport   1:1024
[root@m01 ~]# iptables -I INPUT  -p tcp  --dport 1024:65535  -j DROP
案例05: 匹配ICMP类型,禁止ping
ICMP(Internet Control Message Protocol)Internet控制报文协议 ping        
整个网站核心
通过防火墙规则 控制是否可以ping                                            
iptables -I    INPUT    -p icmp    -j DROP        
iptables -I    INPUT    -p icmp  --icmp-type 8    -j DROP                        
# iptables  -I INPUT    -p icmp   --icmp-type 255    -j DROP
通过内核参数 控制 禁止被ping
[root@m01 ~]# cat  /etc/sysctl.conf        
#/proc/sys/net/ipv4/icmp_echo_ignore_all
net.ipv4.icmp_echo_ignore_all = 1
[root@m01 ~]# sysctl -p    #生效
[root@oldboy-m01~]# echo    1  >/proc/sys/net/ipv4/icmp_echo_ignore_all  
测试结束,修改回来
[root@oldboy-m01~]# echo    0 >/proc/sys/net/ipv4/icmp_echo_ignore_all
案例06: 匹配网络状态(TCP/IP连接状态)                
通过防火墙控制连接状态    
-m state --state                
NEW:已经或将启动新的连接                
ESTABLISHED:已建立的连接    
RELATED:正在启动的新连接    
INVALID:非法或无法识别的    
# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
案例07: 限制并发及速率
-m limit --limit n/{se cond/minute/hour}:    #限制模块
解释:指定时间内的请求速率”n”为速率,后面为时间分别为:秒 分 时
-m limit --limit 10/minute   --limit-burst 5  每6秒释放工牌 给别人使用
#10个数据包    ,每6秒生成,前5个 1人1个工牌    从第6个开始 每6秒 才能释放1个工牌    
--limit-burst [n]  #在同一时间内允许通过的请求”n”为数字,不指定默认为5
测试 演示#ping    icmp 协议    进行测试
iptables -F
iptables -I INPUT    -p icmp    -m limit --limit 10/minute    --limit-burst 5   -j  ACCEPT                        
iptables -A INPUT    -p tcp    --dport 22 -j  ACCEPT    
iptables -P INPUT DROP
web01 进行ping测试    验证,前5个一次完成,第七次后面每6秒ping通一次    
[root@web01 ~]# ping 10.0.0.61            
案例08: 防火墙规则的保存与恢复
iptables-save   默认输出到屏幕    
iptables-restore 加上文件    
写入到/etc/sysconfig/iptables                
# iptables-save    >/etc/sysconfig/iptables
# cat /etc/sysconfig/iptables
# Generated by iptables-save v1.4.21 on Wed Feb 12 15:31:43 2020 
*filter 
:INPUT DROP [92:7008] 
:FORWARD ACCEPT [0:0] 
:OUTPUT ACCEPT [127:14360] 
-A INPUT -p icmp -m limit --limit 10/min -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT 
-A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT 
COMMIT 
# Completed on Wed Feb 12 15:31:43 2020 
# Generated by iptables-save v1.4.21 on Wed Feb 12 15:31:43 2020 
*nat 
:PREROUTING ACCEPT [559:51047] 
:INPUT ACCEPT [60:6814] 
:OUTPUT ACCEPT [6801:408868] :POSTROUTING ACCEPT [6801:408868] 
COMMIT 
# Completed on Wed Feb 12 15:31:43 2020
 [root@oldboy-m01 ~]# iptables -D INPUT 1    
 [root@oldboy-m01 ~]# iptables-restore     [root@oldboy-m01 ~]# iptables -nL            
Chain INPUT (policy DROP)                    
target    prot opt source                destination    
ACCEPT    icmp --    0.0.0.0/0            0.0.0.0/0    limit: avg 10/min
burst 5                                
ACCEPT    tcp    --    0.0.0.0/0            0.0.0.0/0    tcp dpt:22
ACCEPT    tcp    --    0.0.0.0/0            0.0.0.0/0    multiport dports
80,443                                                                
Chain FORWARD (policy ACCEPT)                
target    prot opt source                destination                            
Chain OUTPUT (policy ACCEPT)                
target    prot opt source                destination                                
#@补充:                                
systemctl    restart    iptables    #读取 /etc/sysconfig/iptables内容
[root@m01 ~]# iptables-save > /etc/sysconfig/iptables
[root@m01 ~]# iptables-restore [root@m01 ~]# iptables -nL    
补充: iptables filter表 功能 可以在 云服务器使用
云服务器应用: 安全组控制端口, iptables控制ip
实际生产用法
iptables配置方式
逛公园模式: 默认规则是 ACCEPT
看电影模式: 默认规则是 DROP 白名单模式   
默认是拒绝 去电影院
Ssh  服务  连接状态  数据包进出  转发        修改默认规则拒绝        
1. ssh可以连接进来            
[root@m01 ~]# iptables -F    
[root@m01 ~]# iptables -X    
[root@m01 ~]# iptables -Z            
[root@m01 ~]# iptables -nL            
[root@m01 ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT    #放行22端口
2.设置允许本机lo**通讯规则**
# 允许本机回环lo接口数据流量流出与流入
iptables -A INPUT -i lo -j ACCEPT    #lo网卡放行
iptables -A OUTPUT -o lo -j ACCEPT  #lo网卡放行
3.配置默认规则及 放行 80 443端口
[root@m01 ~]# iptables -P INPUT DROP
[root@m01 ~]# iptables -P FORWARD DROP
[root@m01 ~]# iptables -P OUTPUT ACCEPT
[root@m01 ~]# iptables -A INPUT    -m multiport -p tcp    --dport 443,80   -j ACCEPT #放行80,443端口
[root@m01 ~]# iptables -nL                        
[root@m01 ~]# iptables -A INPUT    -s 10.0.0.0/24 -j ACCEPT    #放行10.0.0.0/24 和 172.16.1.0/24网段
[root@m01 ~]# iptables -A INPUT    -s 172.16.1.0/24  -j ACCEPT    
#此处还可以添加 vpn网段 比如说 10.7.1.0/24    
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT #放行tcp连接状态    
nat共享上网
nat功能在云服务器无法使用替代品叫: NAT 网关
端口转发/端口映射   ip映射
[root@m01 ~]# iptables -P INPUT ACCEPT
[root@m01 ~]# iptables -P FORWARD ACCEPT    
实现共享上网(SNAT)操作

共享上网 https://www.processon.com/view/link/5d380f6ce4b0511f1310f722
环境准备
web01 172.16.1.7 (只保留这个网卡), eth0网卡关闭(OnBOOT=no)        
m01 配置共享上网的规则        
详细流程:
1)防火墙            
配置防火墙规则SNAT 规则
开启内核转发功能 
# iptables -t nat -A POSTROUTING    -s 172.16.1.0/24   -j SNAT  --to-source 10.0.0.6    
[root@m01 ~]# echo 'net.ipv4.ip_forward = 1'    >> /etc/sysctl.conf
[root@m01 ~]# sysctl -p
net.ipv4.icmp_echo_ignore_all = 0 
net.ipv4.ip_forward = 1
#iptables -t nat -I POSTROUTING -s 172.16.1.0/24 -j SNAT --to-source 10.0.0.61
#实现共享上网的时候
#来自于172.16.1.0/24网段的ip,通过防火墙的nat表的POSTROUTING链
#源ip被修改为 10.0.0.61  通过SNAT方式 
注意事项: 公网ip不固定:
iptables -t nat -A POSTROUTING -s 172.16.1.0/24    -j MASQUERADE
2)客户端
客户端网关指向防火墙:172.16.1.61 和 配置DNS
[root@web01 ~]# cat  /etc/sysconfig/network-scripts/ifcfg-eth0
修改 OnBOOT=no
[root@web01 ~]# cat  /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE=Ethernet                        
IPADDR=172.16.1.7                
PREFIX=24                                                
NAME=eth1                
DEVICE=eth1                                
OnBOOT=yes                        
GATEWAY=172.16.1.61                    
DNS1=1.2.4.8                        
[root@web01 ~]# systemctl restart network        
[root@m01 ~]# ssh 172.16.1.7                
Last login: Wed Jul 24 23:06:58 2019 from 10.0.0.1
[root@web01 ~]# ip a                    
[root@web01 ~]# ping baidu.com            
3. 完成后 在web01 发出 ip r和ping 外网ip的结果
 [root@web01 ~]# ip r
default via 172.16.1.61 dev eth1
169.254.0.0/16 dev eth1 scope link metric 1003
172.16.1.0/24 dev eth1 proto kernel scope link src 172.16.1.7        
[root@web01 ~]# route -n                        
Kernel IP routing table                        
Destination    Gateway    Genmask    Flags Metric Ref    Use Iface
0.0.0.0    172.16.1.61    0.0.0.0    UG    0    0    0    eth1
169.254.0.0    0.0.0.0    255.255.0.0    U    1003    0    0    eth1
172.16.1.0    0.0.0.0    255.255.255.0    U    0    0    0    eth1
[root@web01 ~]# ping baidu.com
共享上网流程:
1.    防火墙添加规则 SNAT\规则 nat表 POSTROUTING
2.    防火墙服务器 开启ip转发功能
3.    后端节点,配置网卡,让网卡网关指向防火墙
实现端口转发(DNAT)

端口映射 https://www.processon.com/view/link/5d381ecfe4b02015bd88fa33
[root@m01 ~]# iptables -t nat -A PREROUTING    -d 10.0.0.61 -p tcp --dport 9000  -
j DNAT --to-destination 172.16.1.7:22    
[root@m01 ~]# iptables -nL -t nat    
测试与检查 本地she ll中
[d:\~]$ ssh root@10.0.0.61 9000
实现ip映射
ip a add   10.0.0.62/24 dev eth0  label eth0:0
[root@m01 ~]# iptables -t nat -A PREROUTING -d 10.0.0.62 -j DNAT --to-destination 172.16.1.7
[root@m01 ~]# iptables -nL -t nat  #还是有的
企业面试题iptalbes https://www.jianshu.com/p/19422676b854
5、请写出查看iptables当前所有规则的命令。
6、禁止来自10.0.0.188 ip地址访问80端口的请求
7、如何使在命令行执行的iptables规则永久生效?
8、实现把访问10.0.0.3:80的请求转到172.16.1.17:80                
9、实现172.16.1.0/24段所有主机通过124.32.54.26外网IP共享上网。            
笔试题 www.jianshu.com/p/2180face8381    



推荐阅读
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • 微服务优雅上下线的最佳实践
    本文介绍了微服务上下线的正确姿势,避免使用 kill -9 等粗暴手段,确保服务的稳定性和可靠性。 ... [详细]
  • 本文将深入探讨 iOS 中的 Grand Central Dispatch (GCD),并介绍如何利用 GCD 进行高效多线程编程。如果你对线程的基本概念还不熟悉,建议先阅读相关基础资料。 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 本文介绍了如何利用HTTP隧道技术在受限网络环境中绕过IDS和防火墙等安全设备,实现RDP端口的暴力破解攻击。文章详细描述了部署过程、攻击实施及流量分析,旨在提升网络安全意识。 ... [详细]
  • CentOS 7 中 iptables 过滤表实例与 NAT 表应用详解
    在 CentOS 7 系统中,iptables 的过滤表和 NAT 表具有重要的应用价值。本文通过具体实例详细介绍了如何配置 iptables 的过滤表,包括编写脚本文件 `/usr/local/sbin/iptables.sh`,并使用 `iptables -F` 清空现有规则。此外,还深入探讨了 NAT 表的配置方法,帮助读者更好地理解和应用这些网络防火墙技术。 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • 体积小巧的vsftpd与pureftpd Docker镜像在Unraid系统中的详细配置指南:支持TLS加密及IPv6协议
    本文详细介绍了如何在Unraid系统中配置体积小巧的vsftpd和Pure-FTPd Docker镜像,以支持TLS加密和IPv6协议。通过这些配置,用户可以实现安全、高效的文件传输服务,适用于各种网络环境。配置过程包括镜像的选择、环境变量的设置以及必要的安全措施,确保了系统的稳定性和数据的安全性。 ... [详细]
  • 在Linux系统中,网络配置是至关重要的任务之一。本文详细解析了Firewalld和Netfilter机制,并探讨了iptables的应用。通过使用`ip addr show`命令来查看网卡IP地址(需要安装`iproute`包),当网卡未分配IP地址或处于关闭状态时,可以通过`ip link set`命令进行配置和激活。此外,文章还介绍了如何利用Firewalld和iptables实现网络流量控制和安全策略管理,为系统管理员提供了实用的操作指南。 ... [详细]
  • QT框架中事件循环机制及事件分发类详解
    在QT框架中,QCoreApplication类作为事件循环的核心组件,为应用程序提供了基础的事件处理机制。该类继承自QObject,负责管理和调度各种事件,确保程序能够响应用户操作和其他系统事件。通过事件循环,QCoreApplication实现了高效的事件分发和处理,使得应用程序能够保持流畅的运行状态。此外,QCoreApplication还提供了多种方法和信号槽机制,方便开发者进行事件的定制和扩展。 ... [详细]
  • 提升 Kubernetes 集群管理效率的七大专业工具
    Kubernetes 在云原生环境中的应用日益广泛,然而集群管理的复杂性也随之增加。为了提高管理效率,本文推荐了七款专业工具,这些工具不仅能够简化日常操作,还能提升系统的稳定性和安全性。从自动化部署到监控和故障排查,这些工具覆盖了集群管理的各个方面,帮助管理员更好地应对挑战。 ... [详细]
  • 用阿里云的免费 SSL 证书让网站从 HTTP 换成 HTTPS
    HTTP协议是不加密传输数据的,也就是用户跟你的网站之间传递数据有可能在途中被截获,破解传递的真实内容,所以使用不加密的HTTP的网站是不 ... [详细]
  • Parallels Desktop for Mac 是一款功能强大的虚拟化软件,能够在不重启的情况下实现在同一台电脑上无缝切换和使用 Windows 和 macOS 系统中的各种应用程序。该软件不仅提供了高效稳定的性能,还支持多种高级功能,如拖放文件、共享剪贴板等,极大地提升了用户的生产力和使用体验。 ... [详细]
author-avatar
情都欧阳
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有