zoukankan      html  css  js  c++  java
  • 网络防火墙和NAT地址转换

    网络防火墙

    iptables/netfilter网络防火墙:

    (1) 充当网关

    (2) 使用filter表的FORWARD链

    注意的问题:

    (1) 请求-响应报文均会经由FORWARD链,要注意规则的方向性

    (2) 如果要启用conntrack机制,建议将双方向的状态为ESTABLISHED的报文直接放行

    实验:禁止互联网上的主机访问内网主机

    实验环境:3台机器

    假设:172.17.252.162 互联网上的主机(只有桥接,断掉仅主机)

    两个网卡192.168.10.200和172.17.253.132 防火墙主机

    192.168.10.187 内部网络主机(只有仅主机,断掉桥接)

    实验目的:允许内网主机访问互联网上主机,不允许互联网上主机访问内网主机

    (1)添加网关,让172.17.252.0/16网段的主机和192.168.10.0/24网段的主机能够互相ping通

    1.在172.17.252.162主机上

    route add default gw 172.17.253.132

    2.在192.168.10.187主机上

    route add default gw 192.168.10.200

    3.在防火墙上主机上开启转发功能

    vim /etc/sysctl.conf

    sysctl -p 使添加的内核参数生效

    4.查看连个网段的主机能否互相ping通

     

    (2)在防火墙主机上添加策略,使内网的主机能访问互联网上的主机,而互联网上的主机不能访问内网的主机

    iptables -A FORWARD -s 192.168.10.0/24 -d 172.17.252.0/16 -m state --state NEW -j ACCEPT 在FORWARD链上允许源地址为192.168.10.0/24网段目标地址为172.17.252.0/16网段

    iptables -I FORWARD -m state --state ESTABLISHED -j ACCEPT

    iptables -A FORWARD -j REJECT 拒绝其他转发

    (3)测试

    在互联网主机上访问内部网络主机 不能ping通

    在内网主机上ping互联网主机 能ping通

     

    实验:NAT: network address translation 网络地址转换

    1.SNAT 源网络地址转换

    上一个实验可以实现内网主机访问互联网主机,不允许互联网主机访问内网主机,但是有一个巨大的问题,就是内网主机地址必须是公有地址,成本太高,还不安全

    实验环境:

    假设:192.168.6.52 互联网上的主机 ,只有一块网卡,桥接(公网ip)

    192.168.66.128(仅主机)和192.168.6.143(桥接,公网ip) 防火墙主机,两块网卡,一块桥接,一块仅主机

    192.168.66.177 内网的主机 ,一块网卡,仅主机(内网ip)

    实验目的:现在要通过防火墙做源地址转换,将192.168.66.177转换为192.168.6.143,从而实现访问互联网上的主机

    (1)在内网主机(192.168.66.177)上,将网关指向192.168.66.128

    route add default gw 192.168.66.177

    (2)在防火墙主机上做源地址转换,将内网的整个网段都替换成公网地址

    iptables -t nat -A POSTROUTING -s 192.168.66.0/24 -j SNAT --to-source 192.168.6.143

    (3)测试

    在192.168.6.52互联网上的主机上开一个web服务,然后用内网的主机192.168.66.177去访问,如果能访问到,说明实验成功

    1.在192.168.6.52主机上

    systemctl start httpd 开启httpd服务

    2.在192.168.66.177主机上用curl命令去访问

    用ping也能通

    (4)在互联网上的主机看看是谁访问的

    都是192.168.6.143访问的,说明试验成功

     

    2.DNAT目标网络地址转换

    假如说公司内部有一个人出差了,在互联网上想访问公司内部一个服务器,这要怎么做呢?如图:

    当互联网上的主机访问192.168.6.143的80端口时,就给他转到192.168.66.177的80端口

    实验环境:

    假设:192.168.6.52 互联网上的主机,一块网卡,桥接

    192.168.6.143和192.168.66.128 防火墙主机,两块网卡,一块桥接,一块仅主机

    192.168.66.177 内网的主机 ,一块网卡,仅主机

    实验目的:实现互联网上的主机能够访问内网主机开启的httpd服务

    (1)在内网主机(192.168.66.177)上,将网关指向192.168.66.128

    route add default gw 192.168.66.177

    (2)在防火墙主机上做目标地址转换,将目标地址192.168.6.143转换为192.168.66.177

    iptables -t nat -A PREROUTING -d 192.168.6.143 -p tcp --dport 80 -j DNAT --to-destination 192.168.66.177:80

    (3)在内网主机(192.168.66.177)开启httpd服务

    systemctl start httpd

    echo hello world > /var/www/html/index.html

    (4)测试

    在互联网上的主机上用curl命令访问192.168.10.143

    (5)我们在内网主机上看日志,确实是互联网上的主机访问的

     

    3.转发

    实现其他人访问我本机的一个端口(如:80),给他转发到本机的另一个端口(如:8080)上

    我们基于上一个实验来做本实验

    (1)将内网主机上httpd服务端口改成8080

    vim /etc/httpd/conf/httpd.conf

    Listen 8080

    重启服务 systemctl restart httpd

    ss -ntl 查看端口

    现在只有8080端口,没有80端口

    (2)在内网主机(192.168.66.177)上设置转发策略,如果访问本机的80端口就给转发到本机的8080端口

    iptables -t nat -A PREROUTING -d 192.168.66.177 -p tcp --dport 80 -j REDIRECT --to-ports 8080

    (3)测试

    在互联网主机(192.168.6.52)上用curl来访问防火墙主机192.168.6.143

    curl 192.168.6.143

  • 相关阅读:
    基本数据类型转换
    java8新增的日期时间包
    算法之冒泡排序
    基本数据类型
    spring入门
    JiuDuOj——1020
    JiuDuOj——1051
    2015.11.26——Accelerated C++
    POJ2681——求字符串长度
    POJ1017——装箱问题
  • 原文地址:https://www.cnblogs.com/1477717815fuming/p/8567420.html
Copyright © 2011-2022 走看看