注意:本文内容由 ChatGPT 生成,虽然内容经过粗略检查和实践,但在实际操作过程中根据你的具体情况进行调整。
方法 1:使用防火墙规则限制公网访问
1.1 允许本地网络流量
最常见的做法是使用 iptables 或 firewalld 防火墙来控制流量。在此方法中,您可以允许本地网络的流量,并阻止公网的流量。假设您的本地网络是 192.168.1.0/24,以下是操作步骤。 步骤:
步骤:
1. 允许本地子网流量:
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
iptables -A OUTPUT -d 192.168.1.0/24 -j ACCEPT
1. 阻止所有出站流量(即阻止访问公网):
iptables -A OUTPUT -d 0.0.0.0/0 -j REJECT
1. 保存防火墙规则:
service iptables save
1. 重启防火墙服务以应用配置:
systemctl restart iptables
方法 2:保留默认路由,仅移除公网访问的路由
有时,您可能希望保留默认路由(确保本地网络和其他子网的通信不受影响),但是希望通过调整路由规则来禁止访问公网。在这种情况下,您可以删除默认的公网路由,或者仅通过特定的路由规则来控制流量。
步骤:
1. 查看当前的路由表: 运行以下命令查看当前的路由设置: bash 复制代码
ip route show
1. 删除公网路由: 如果您知道哪些路由是公网路由,可以通过 ip route del 命令删除特定的公网路由。例如:
ip route del default via 192.168.1.1
这将删除默认路由,使得系统无法通过指定的网关访问外部网络,但仍然能够访问本地网络。
1. 添加静态路由(如果需要更精细的控制): 您可以添加仅允许本地网络(例如 192.168.1.0/24)的路由,而删除或忽略其他通向公网的路由。例如:
ip route add 192.168.1.0/24 via 192.168.1.1
1. 保存路由配置: 为了确保修改在重启后仍然有效,您可以编辑 /etc/sysconfig/network-scripts/route-ens192 文件,并添加适当的路由设置。
2. 重启网络服务: 使路由更改生效:
systemctl restart network
方法 3:配置 firewalld 防火墙允许本地网络,阻止公网访问
如果您的系统使用的是 firewalld(而不是 iptables),您可以使用 firewalld 的区域配置来允许本地网络流量,并拒绝所有其他流量。
步骤:
1. 将本地网络添加到 trusted 区域:
firewall-cmd --zone=trusted --add-source=192.168.1.0/24 --permanent
1. 在 public 区域中添加拒绝公网流量的规则:
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" destination address="0.0.0.0/0" reject' --permanent
1. 重载 firewalld 配置:
firewall-cmd --reload
通过这种方式,您可以确保本地网络流量被允许,而外部互联网的访问被阻止。
方法 4:禁用 DHCP 和默认网关配置
如果您不希望系统通过 DHCP 获取公网 IP 地址和默认网关,可以选择配置静态 IP,并确保没有设置默认网关。
步骤:
1. 编辑网卡配置文件 /etc/sysconfig/network-scripts/ifcfg-ens192,修改 BOOTPROTO 为 static,并配置静态 IP 地址。
示例配置:
BOOTPROTO=static
IPADDR=192.168.1.10
NETMASK=255.255.255.0
GATEWAY= # 不设置网关
1. 保存并退出配置文件
2. 重启网络服务:
systemctl restart network
通过这种方法,您可以确保没有默认网关设置,从而无法访问公网,但本地网络的通信仍然正常。
总结
要在 CentOS 7 中实现 禁止公网访问并保持本地网络可用,您可以选择以下方法:
• 防火墙配置(iptables 或 firewalld):允许本地网络流量,阻止所有外部流量。
• 修改路由配置:保留默认路由,仅移除公网路由或添加静态路由,仅允许本地网络访问。
• 禁用 DHCP 和默认网关配置:手动配置静态 IP 地址并确保没有默认网关,防止访问外部网络。
根据具体需求选择适合的方法,确保您的系统能够在本地网络中正常通信,同时避免不必要的公网访问。