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   #查看是否正常启动,如下


3、安装完成后用本地测试

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

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

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

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

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

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

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

1.2查看ip是否配置成功

[root@InCompiter ~]#ip addr

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

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

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

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

2.3查看Ip是否配置成功

[root@OutComputer ~]#ip addr

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

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

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

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

配置ens33网卡(内网)

[root@iptabels ~]#vi ifcfg-ens33

[root@iptabels ~]#vi ifcfg-ens36

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

结果查看

实验要求一(实验要求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服务,已经可以访问默认页面

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

 

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

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

实验要求二(外网主机访问内网主机的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服务

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

一、查看防火墙原始配置

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

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

[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

 验证:内网访问

验证:外网访问

 DONE

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值