网络规划
在这里插入图片描述

  • 内部PC1位于内网区域,地址段为: 192.168.1.0/24,pc1地址为:192.168.1.1/24,网关地址为:192.168.1.254/24
  • 服务器S1位于服务器区域,地址段为: 192.168.2.0/24,pc1地址为:192.168.2.1/24,网关地址为:192.168.2.254/24
  • PC2位于互联网区域,模拟外部互联网,地址段为:10.0.0.0/8,pc2地址为:10.0.0.1/8
  • Linux防火墙的三块网卡为别连接不同的网络区域,地址分别为 :ens33 192.168.1.254/24;ens34 10.0.0.100/8;ens35 192.168.2.254/24
要求:
  • 内部网络中的pc1采用SNAT访问外部互联网,但是无法ping到内部网关。
  • 内部网络服务器s1通过DNAT发布服务到互联网。
  • 互联网主机pc2能够访问DMZ区域的服务器,但是不能够进行ping和ssh连接。

1.内部网络pc1配置

[root@localhost network-scripts]# ifconfig ens160 192.168.1.1/24
[root@localhost network-scripts]# ip a 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:8a:f9:02 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    inet 192.168.1.1/24 brd 192.168.1.255 scope global ens160
       valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:04:99:57 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
       
[root@localhost network-scripts]# route add -net 0/0 gw 192.168.1.254 dev ens160

2.外部网络pc2配置

[root@localhost ~]# ifconfig ens160 10.0.0.1/8
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:28:43:ce brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    inet 10.0.0.1/8 brd 10.255.255.255 scope global ens160
       valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:3c:88:b0 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever

3.服务器配置

[root@localhost ~]# ifconfig ens160 192.168.2.1/24
[root@localhost ~]# ip a 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:89:2d:08 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    inet 192.168.2.1/24 brd 192.168.2.255 scope global ens160
       valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:89:28:98 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever

[root@localhost ~]# route add -net 0/0 gw 192.168.2.254 dev ens160
[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.2.254   0.0.0.0         UG    0      0        0 ens160
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 ens160
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
#添加net.ipv4.ip_forward = 1
[root@localhost ~]# vim /etc/sysctl.conf


4.防火墙配置

#配置地址
[root@localhost ~]# systemctl stop NetworkManager
[root@localhost ~]# systemctl stop firewalld.service 
[root@localhost ~]# setenforce 0
[root@localhost ~]# ifconfig ens160 192.168.1.254/24
[root@localhost ~]# ifconfig ens192 10.0.0.100/8
[root@localhost ~]# ifconfig ens224 192.168.2.254/24
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:7e:e4:9e brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    inet 192.168.1.254/24 brd 192.168.1.255 scope global ens160
       valid_lft forever preferred_lft forever
3: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:7e:e4:a8 brd ff:ff:ff:ff:ff:ff
    altname enp11s0
    inet 10.0.0.100/8 brd 10.255.255.255 scope global ens192
       valid_lft forever preferred_lft forever
4: ens224: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:7e:e4:b2 brd ff:ff:ff:ff:ff:ff
    altname enp19s0
    inet 192.168.2.254/24 brd 192.168.2.255 scope global ens224
       valid_lft forever preferred_lft forever
5: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:04:99:57 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever


#配置网段转换
[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE

#pc1无法ping192.168.1.254
[root@localhost ~]# iptables -A INPUT -s 192.168.1.1 -d 192.168.1.254 -p icmp --icmp-type echo-request -j DROP

当设置pc1无法ping192.168.1.254结果为:

[root@localhost network-scripts]# ping 192.168.1.254
PING 192.168.1.254 (192.168.1.254) 56(84) bytes of data.
^C
--- 192.168.1.254 ping statistics ---
9 packets transmitted, 0 received, 100% packet loss, time 8235ms

#配置网段转换

[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE

结果:

[root@localhost ~]# ping 10.0.0.1
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=63 time=0.714 ms
64 bytes from 10.0.0.1: icmp_seq=2 ttl=63 time=38.3 ms
64 bytes from 10.0.0.1: icmp_seq=3 ttl=63 time=3.69 ms
^C
--- 10.0.0.1 ping statistics ---
4 packets transmitted, 3 received, 25% packet loss, time 3034ms
rtt min/avg/max/mdev = 0.714/14.227/38.279/17.050 ms

利用镜像安装nginx

[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
Rocky-AppStream.repo  Rocky-HighAvailability.repo  Rocky-ResilientStorage.repo
Rocky-BaseOS.repo     Rocky-Media.repo             Rocky-RT.repo
Rocky-Debuginfo.repo  Rocky-NFV.repo               Rocky-Sources.repo
Rocky-Devel.repo      Rocky-Plus.repo
Rocky-Extras.repo     Rocky-PowerTools.repo
[root@localhost yum.repos.d]# mkdir backup
[root@localhost yum.repos.d]# mv Rocky-* backup/
[root@localhost yum.repos.d]# ls
backup
[root@localhost yum.repos.d]# mount /dev/sr0 /mnt/
mount: /mnt: WARNING: device write-protected, mounted read-only.
[root@localhost yum.repos.d]# vim local.repo
[root@localhost yum.repos.d]# yum clean all
0 个文件已删除
[root@localhost yum.repos.d]# yum install -y nginx
local                                          6.1 MB/s | 9.1 MB     00:01    
上次元数据过期检查:0:00:06 前,执行于 2025年06月04日 星期三 18时34分46秒。
依赖关系解决。
===============================================================================
 软件包              架构   版本                                   仓库   大小
===============================================================================
安装:
 nginx               x86_64 1:1.14.1-9.module+el8.4.0+542+81547229 local 566 k

[root@localhost yum.repos.d]# systemctl start nginx
[root@localhost yum.repos.d]# getenforce 
Permissive



PC1访问PC2

[root@localhost yum.repos.d]# curl 10.0.0.1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
  <head>
    <title>Test Page for the Nginx HTTP Server on Rocky Linux</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <style type="text/css">
      /*<![CDATA[*/
      body {
        background-color: #fff;
        color: #000;

#把PC2地址公网地址转为私网地址192.168.2.1

[root@localhost ~]# iptables -t nat -A PREROUTING -i ens192 -d 10.0.0.100 -p tcp --dport 80 -j DNAT --to-destination 192.168.2.1

测试:

[root@localhost yum.repos.d]# curl 10.0.0.100
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
  <head>
    <title>Test Page for the Nginx HTTP Server on Rocky Linux</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <style type="text/css">
      /*<![CDATA[*/
      body {
        background-color: #fff;
        color: #000;
        font-size: 0.9em;

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐