Linux iptables实现(SNAT)源地址转换以及http访问控制

这篇具有很好参考价值的文章主要介绍了Linux iptables实现(SNAT)源地址转换以及http访问控制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、实现拓扑

Linux iptables实现(SNAT)源地址转换以及http访问控制

二、实验要求        

        1、实验要求SNAT:内网主机访问外网主机,通过iptables进行原地址转换,允许访问外网的httpd和ping

        2、外网主机访问内网主机的http服务通过iptables进行目的地址(DNAT)转换

        3、仅允许内网主机使用ssh远程管理iptabels通过vm1通过vm1接口进行管理,不允许其他主机通过任何端口进行ssh管理

三、实验准备 

准备三台虚拟机;虚拟机修改名称可以用

1、方法:hostname 名称  ;然后bash刷新一下就有

[root@InComputer~]#  内网主机 A

[root@iptables~]#   防火墙

[root@OutComputer ~]#   外网主机 B

2、先把前置服务安装好,待会要修改网卡配置,会导致下载服务不方便

内网主机

[root@InCompiter ~]# yum -y install httpd   #安装httpd服务

[root@InCompiter ~]# systemctl start httpd   #开启服务

[root@InCompiter ~]# systemctl stop firewalld      #关闭自带防火墙,方便配置
[root@InCompiter ~]# systemctl disable firewalld  #关闭防火墙开机启动

外网主机

[root@OutCompiter ~]# yum -y install httpd #安装httpd服务

[root@OutCompiter ~]# systemctl start httpd   #开启服务

[root@OutComputer ~]# systemctl stop firewalld
[root@OutComputer ~]# systemctl disable firewalld

防火墙主机

[root@iptabels ~]# yum -y install iptables-services #安装iptables

[root@iptabels ~]# systemctl stop firewalld     #关闭默认firewalld防火墙
[root@iptabels ~]# systemctl disable firewalld
[root@iptabels ~]# systemctl start iptables     #启用iptables

[root@iptabels ~]# systemctl status iptables   #查看是否正常启动,如下

Linux iptables实现(SNAT)源地址转换以及http访问控制
3、安装完成后用本地测试

[root@OutComputer ~]# curl http://192.168.12.137  #访问内网主机的HTTP默认页面

Linux iptables实现(SNAT)源地址转换以及http访问控制

 两台主机可以相互访问一下

四、修改网卡(注意要先把所有软件装好,第三部确认无误,再修改)

1、内网主机网卡设置成Vm1(修改后你的xshell会断开)

Linux iptables实现(SNAT)源地址转换以及http访问控制

 1.1修改完网卡后需要去配置静态ip

[root@InCompiter ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

Linux iptables实现(SNAT)源地址转换以及http访问控制

 [root@InCompiter ~]#systemctl restart network   #重启网卡

1.2查看ip是否配置成功

[root@InCompiter ~]#ip addr

Linux iptables实现(SNAT)源地址转换以及http访问控制

2、外网主机网卡设置成Vm2

Linux iptables实现(SNAT)源地址转换以及http访问控制

 2.2修改网卡配置,配置静态IP

[root@OutComputer ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

Linux iptables实现(SNAT)源地址转换以及http访问控制

 [root@OutComputer ~]#systemctl restart network   #重启网卡

2.3查看Ip是否配置成功

[root@OutComputer ~]#ip addr

Linux iptables实现(SNAT)源地址转换以及http访问控制

 3.防火墙配置,因为防火墙需要转发,所以配置两张网卡(VM1和VM2)

Linux iptables实现(SNAT)源地址转换以及http访问控制Linux iptables实现(SNAT)源地址转换以及http访问控制

Linux iptables实现(SNAT)源地址转换以及http访问控制

注意这里虽然生成了新的网卡,但是没有生成对应的网卡配置文件

Linux iptables实现(SNAT)源地址转换以及http访问控制

[root@iptabels ~]#cd /etc/sysconfig/network-scripts  #进入到网卡配置文件

[root@iptabels ~]#cp -p ifcf-ens33 ifcfg-ens36   #复制并改名36

配置ens33网卡(内网)

[root@iptabels ~]#vi ifcfg-ens33

Linux iptables实现(SNAT)源地址转换以及http访问控制

[root@iptabels ~]#vi ifcfg-ens36

Linux iptables实现(SNAT)源地址转换以及http访问控制

 [root@iptabels ~]#systemctl restart network   #重启网卡

结果查看

Linux iptables实现(SNAT)源地址转换以及http访问控制

实验要求一(实验要求SNAT:内网主机访问外网主机,通过iptables进行原地址转换,允许访问外网的httpd和ping)

 五、iptables配置

 1、开启防火墙转发功能(两个方法二选一即可)

 方法一:

[root@iptabels ~]#echo net.ipv4.ip_forward = 1 >> /etc/sysctl.conf  #修改内核配置文件

[root@iptabels ~]#source /etc/sysctl.conf

 方法二:[root@iptabels ~]#echo 1 >> /proc/sys/net/ipv4/ip_forward #修改内核配置文件,临时配置,立即生效

配置完成后,现在内网主机是没办法访问外网.45.60主机的

2、iptables流量转发配置

2.1#配置防火墙允许转发

[root@iptabels ~]#iptables -I FORWARD -p tcp --dport 80 -j ACCEPT

2.2#配置SNAT源地址转换        这里是大写的 -i               指定被转发的网段 (-o指定出站网卡)

[root@iptabels ~]#iptables -t nat -I POSTROUTING -s 192.168.10.0/24 -o ens36 -j SNAT --to-source 23.34.45.56

——————此时流量以及可以到达外网的主机,但是回包时候被防火墙拦截————

2.3配置防火墙回包的转发

[root@iptabels ~]#iptables -I FORWARD -p tcp --sport 80 -j ACCEPT  #指定源80端口

  此时Vm1已经可以访问外网Vm2的http服务,已经可以访问默认页面

Linux iptables实现(SNAT)源地址转换以及http访问控制

2.4配置Ping(目前无法ping通)

 Linux iptables实现(SNAT)源地址转换以及http访问控制

 [root@iptabels ~]#iptables -I FORWARD -p icmp -j ACCEPT

验证:(实验要求1完成)

Linux iptables实现(SNAT)源地址转换以及http访问控制

实验要求二(外网主机访问内网主机的http服务通过iptables进行目的地址(DNAT)转换)

一、配置DNAT转换

 [root@iptabels ~]#iptables -t nat -I PREROUTING -i ens36 -d 23.34.45.56 -p tcp --dport 80 -j DNAT --to-destination 192.168.10.10

验证:成功访问内网httpd服务

Linux iptables实现(SNAT)源地址转换以及http访问控制

实验要求三(仅允许内网主机使用ssh远程管理iptabels通过vm1通过vm1接口进行管理,不允许其他主机通过任何端口进行ssh管理)

一、查看防火墙原始配置

1、[root@iptabels ~]#iptables -nL

这里可以看到这条策略默认是允许所有tcp链接来访问22号端口,并没有做限制,所以要把它删除

Linux iptables实现(SNAT)源地址转换以及http访问控制

[root@iptabels ~]#iptables -D INPUT 4

 ————此时所有主机已经都无法通过ssh链接

2、配置允许通过内网网卡来访问,并且指定目的Ip

[root@iptabels ~]#iptables -I INPUT -p tcp --dport 22 -i ens33 -d 192.168.10.254 -j ACCEPT

 验证:内网访问

Linux iptables实现(SNAT)源地址转换以及http访问控制

验证:外网访问

Linux iptables实现(SNAT)源地址转换以及http访问控制

 DONE文章来源地址https://www.toymoban.com/news/detail-459506.html

到了这里,关于Linux iptables实现(SNAT)源地址转换以及http访问控制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • linux中iptables 设置特定IP访问指定端口

    iptables 设置特定IP访问指定端口 测试telnet 1、查询规则编号: 可以看到禁止访问8075的规则编号为1 2、删除指定规则编号的规则(如删除编号为1的规则) 1、添加规则:禁止所有IP访问8075 2、添加规则:允许127.0.0.1访问8075 3、测试: 4、保存规则

    2024年02月07日
    浏览(54)
  • linux: 使用iptables阻断到某个ip某个端口的访问

    要使用 Linux 中的 iptables 阻断到特定 IP 地址的特定端口的访问,我们可以遵循以下步骤。这里以阻断到 IP 地址 192.168.1.100 的端口 80 为例: 打开终端 :首先,我们需要打开 Linux 系统的终端。 使用 iptables :使用以下命令来添加一条规则,阻断到指定 IP 和端口的访问。 这里的

    2024年02月05日
    浏览(44)
  • 全网超详细的Linux iptables命令详解以及详解iptables-save和iptables-restore命令

    最近在学习 Linux iptables ,从而知道,它是 Linux 防火墙系统的重要组成部分。 它主要功能是实现对网络数据包进出设备及转发的控制——当数据包需要进入设备、从设备中流出或者由该设备转发、路由时,都可以使用 iptables 进行控制。 它与大多数的 Linux 软件一样,这个包过

    2024年02月01日
    浏览(64)
  • 如何在Linux部署OpenGauss数据管理系统并实现固定公网地址访问

    openGauss是一款开源关系型数据库管理系统,采用木兰宽松许可证v2发行。openGauss内核深度融合华为在数据库领域多年的经验,结合企业级场景需求,持续构建竞争力特性. 结合cpolar 内网穿透工具,即可实现远程访问本地openGauss,实现远程访问,下面介绍从Linux安装到远程访问的方式

    2024年02月02日
    浏览(56)
  • 如何在Linux部署Docker Registry并实现固定地址远程访问本地镜像仓库

    Docker Registry 本地镜像仓库,简单几步结合cpolar内网穿透工具实现远程pull or push (拉取和推送)镜像,不受本地局域网限制! 使用官网安装方式,docker命令一键启动,该命令启动一个registry的容器,版本是2,挂载宿主机端口是5000端口,挂载后,5000端口就是我们连接镜像仓库的本地端口 执行

    2024年02月03日
    浏览(58)
  • 【Linux】socket 编程(socket套接字介绍、字节序、socket地址、IP地址转换函数、套接字函数、TCP通信实现)

    橙色 所谓套接字,就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。 一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上联应用进程,下联网络协议栈,是应用程序通过网络协议进程通

    2024年02月09日
    浏览(56)
  • 如何在Linux CentOS部署宝塔面板并实现固定公网地址访问内网宝塔

    宝塔面板作为建站运维工具,适合新手,简单好用。当我们在家里/公司搭建了宝塔,没有公网IP,但是想要在外也可以访问内网的宝塔面板应该如何实现呢? 本文演示在Centos7系统搭建宝塔最新版本8.0.3,并使用Cpolar内网穿透工具将本地宝塔地址映射为公网地址实现公网远程访

    2024年03月20日
    浏览(68)
  • http获取用户访问的IP地址

    获取用户访问的IP地址: 如果用户是正常情况下其字典的KEY键名为 REMOTE_ADDR request.META[\\\'REMOTE_ADDR\\\'] 但是有些网站服务器会使用nginx等代理http,或者是该网站做了负载均衡,导致使用remote_addr抓取到的是127.0.0.1,这时使用 HTTP_X_FORWARDED_FOR 才获得是用户的真实IP。推荐使用以下代码

    2024年02月01日
    浏览(51)
  • 操作系统实验:虚拟存储器 (C语言实现) 模拟分页式虚拟存储管理中硬件的地址转换和缺页中断,以及选择页面调度算法处理缺页中断。

    模拟分页式虚拟存储管理中硬件的地址转换和缺页中断,以及选择页面调度算法处理缺 页中断。 模拟分页式存储管理中硬件的地址转换和产生缺页中断。 用先进先出(FIFO)页面调度算法处理缺页中断。 由于是模拟调度算法,所以,不实际启动输出一页和装入一页的程序,

    2024年02月04日
    浏览(65)
  • golang 发起 http 请求,获取访问域名的 ip 地址(net, httptrace)

    今天碰到了个需求,我要知道程序对外访问的 http 请求域名的 ip 地址。 直接查看 golang 的 net/http 包,发现 Response 中并没有我想要的 ip 信息。 考虑到在 OSI 七层模型中, ip 是网络层协议,而 http 是应用层协议。去翻了下 net 包,发现了基础用法。 先提一下,域名访问服务器

    2024年02月02日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包