当前位置: 首页 > news >正文

​七周四次课(5月9日)iptables filter表案例、iptables nat表应用

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

 10. 15 iptables filter表小案例

输入如下的内容:
#! /bin/bash
ipt="/usr/sbin/iptables"
$ipt -F
$ipt -P INPUT DROP
$ipt -P OUTPUT ACCEPT
$ipt -P FORWARD ACCEPT
$ipt -A INPUT -m state --state RELATED,ESTABLISHED -i ACCEPT
$ipt -A INPUT -s 192.168.218.0/24 -p tcp --dport 22 -j ACCEPT
$ipt -A INPUT -p tcp --dport 80 -j ACCEPT
$ipt -A INPUT -p tcp --dport 21 -j ACCEPT

ipt 定义了一个变量,变量要写绝对路径,这样才不会被环境变量所影响。然后使用 -F 命令清空规则,-P 是定义默认的策略,-A 增加规则。这边用脚本执行命令

 iptables -I INPUT -p icmp --icmp-type 8 -j DROP   禁ping操作

10.16 iptables nat表应用

213238_Oa48_3803395.png

1、打开端口转发模式

查询(将 /proc/sys/net/ipv4/ip_forward设置为1为转发,默认为0);

[root@shu-test ~]# cat /proc/sys/net/ipv4/ip_forward
0
[root@shu-test ~]#

打开端口转发

echo "1" > /proc/sys/net/ipv4/ip_forward

[root@shu-test ~]# echo "1" > /proc/sys/net/ipv4/ip_forward
[root@shu-test ~]# cat /proc/sys/net/ipv4/ip_forward
1
[root@shu-test ~]#

2、在机器A上增加规则

(记住B机器的网关必须指向机器A的ens37也就是192.168.100.1)


iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE

在机器A上增加nat 将源地址192.168.100.0/24的所有路由(数据包)指向ens33出去

[root@shu-test ~]# iptables -F
[root@shu-test ~]# iptables -t nat -nvL
Chain PREROUTING (policy ACCEPT 659 packets, 67162 bytes)
pkts bytes target     prot opt in     out     source               destination         
Chain INPUT (policy ACCEPT 18 packets, 1935 bytes)
pkts bytes target     prot opt in     out     source               destination         
Chain OUTPUT (policy ACCEPT 50 packets, 3782 bytes)
pkts bytes target     prot opt in     out     source               destination         
Chain POSTROUTING (policy ACCEPT 50 packets, 3782 bytes)
pkts bytes target     prot opt in     out     source               destination         
   42  3201 MASQUERADE  all  --  *      ens33   192.168.100.0/24     0.0.0.0/0           
[root@shu-test ~]#

3、测试:

如果能ping通机器A的ens33网卡,而ping不通外网,可以清空下iptables -F配置的规则;
机器B上ping www.hao123.com

[root@localhost ~]# ping 192.168.188.1
PING 192.168.188.1 (192.168.188.1) 56(84) bytes of data.
64 bytes from 192.168.188.1: icmp_seq=1 ttl=127 time=1.58 ms
64 bytes from 192.168.188.1: icmp_seq=2 ttl=127 time=0.814 ms
^C
--- 192.168.188.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 0.814/1.199/1.585/0.387 ms
[root@localhost ~]# ping www.hao123.com
PING hao123.n.shifen.com (112.34.111.167) 56(84) bytes of data.
64 bytes from 112.34.111.167 (112.34.111.167): icmp_seq=1 ttl=127 time=31.1 ms
64 bytes from 112.34.111.167 (112.34.111.167): icmp_seq=2 ttl=127 time=31.5 ms
64 bytes from 112.34.111.167 (112.34.111.167): icmp_seq=3 ttl=127 time=31.2 ms
^C
--- hao123.n.shifen.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 31.116/31.291/31.502/0.159 ms
[root@localhost ~]#

端口映射

需求2:C机器只能和A通信,让C机器可以直接通过B机器22端口;(端口映射)

1、打开A机器的端口转发功能;

echo "1" > /proc/sys/net/ipv4/ip_forward

[root@localhost ~]# echo "1" > /proc/sys/net/ipv4/ip_forward
[root@localhost ~]# cat /proc/sys/net/ipv4/ip_forward
1
[root@localhost ~]#

2、清空和删除所有配置

使用iptables -F与 -D 命令,详情见前文章

3、在A机器上添加规则

iptables -t nat -A PREROUTING -d 192.168.188.2 -p tcp --dport 1122 -j DNAT --to 192.168.100.101:22
将192.168.100.101的22端口 映射到A机器的ens33的1122端口上,
使外网通过访问192.168.188.2:1122来达到访问机器C(ip:192.168.100.101)的22端口;

[root@shu-test ~]# iptables -t nat -A PREROUTING -d 192.168.188.2 -p tcp --dport 1122 -j DNAT --to 192.168.100.101:22
[root@shu-test ~]#
[root@shu-test ~]# iptables -t nat -nvL
Chain PREROUTING (policy ACCEPT 13 packets, 1072 bytes)
pkts bytes target     prot opt in     out     source               destination         
    5   260 DNAT       tcp  --  *      *       0.0.0.0/0            192.168.188.2        tcp dpt:1122 to:192.168.100.101:22
Chain INPUT (policy ACCEPT 6 packets, 549 bytes)
pkts bytes target     prot opt in     out     source               destination         
Chain OUTPUT (policy ACCEPT 2 packets, 152 bytes)
pkts bytes target     prot opt in     out     source               destination         
Chain POSTROUTING (policy ACCEPT 7 packets, 412 bytes)
pkts bytes target     prot opt in     out     source               destination         
  113  8561 MASQUERADE  all  --  *      ens33   192.168.100.0/24     0.0.0.0/0           
[root@shu-test ~]#

4、在A机器上添加回包规则

iptables -t nat -A POSTROUTING -s 192.168.100.101 -j SNAT --to 192.168.188.2
将从192.168.100.101的过来的包,返回给192.168.188.2;
有来有回

[root@shu-test ~]# iptables -t nat -A POSTROUTING -s 192.168.100.101 -j SNAT --to 192.168.188.2
[root@shu-test ~]# iptables -t nat -nvL
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination         
    5   260 DNAT       tcp  --  *      *       0.0.0.0/0            192.168.188.2        tcp dpt:1122 to:192.168.100.101:22
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination         
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination         
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination         
  122  9236 MASQUERADE  all  --  *      ens33   192.168.100.0/24     0.0.0.0/0           
    0     0 SNAT       all  --  *      *       192.168.100.101      0.0.0.0/0            to:192.168.188.2
[root@shu-test ~]#

5、测试

在Windows上直接ssh 192.168.188.2:1122

 

 

转载于:https://my.oschina.net/u/3803395/blog/1808233

相关文章:

  • 并发容器与框架——Fork/Join框架
  • Hadoop2.4.1的HA的配置与启动
  • Unity全新的版本发布计划(2018)
  • Ora 28040
  • 2016中国“互联网+”创业创新大赛(西北+山西)赛区决赛成功举办 优秀项目将会师海口...
  • python 文件调用其他路径
  • 每日linux命令之kill
  • 双杠仰卧起坐
  • cisco CCNA CCNP CCIE 学习资料整理
  • sql server 2008 身份验证失败 18456
  • 3D Lut 电影级调色算法 附完整C代码
  • 获取系统的网络状态与无线网的信号强度(格数)
  • 实验-创建文件系统
  • 一直困扰设计师多年的Android 单位 dp
  • flask模板
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • MySQL主从复制读写分离及奇怪的问题
  • 给第三方使用接口的 URL 签名实现
  • 盘点那些不知名却常用的 Git 操作
  • 前端学习笔记之观察者模式
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 主流的CSS水平和垂直居中技术大全
  • $ git push -u origin master 推送到远程库出错
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • ***详解账号泄露:全球约1亿用户已泄露
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .net core 6 集成和使用 mongodb
  • .net core Swagger 过滤部分Api
  • .Net Remoting(分离服务程序实现) - Part.3
  • .Net Winform开发笔记(一)
  • .NET 反射 Reflect
  • .Net7 环境安装配置
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • @开发者,一文搞懂什么是 C# 计时器!
  • [ 常用工具篇 ] AntSword 蚁剑安装及使用详解
  • [17]JAVAEE-HTTP协议
  • [ANT] 项目中应用ANT
  • [AutoSar]BSW_Com02 PDU详解
  • [AX]AX2012 AIF(四):文档服务应用实例
  • [Bada开发]初步入口函数介绍
  • [BT]BUUCTF刷题第9天(3.27)
  • [C++进阶篇]STL中vector的使用
  • [Contest20180313]灵大会议
  • [Golang]K-V存储引擎的学习 从零实现 (RoseDB mini版本)
  • [Grafana]ES数据源Alert告警发送
  • [Hadoop in China 2011] Hadoop之上 中国移动“大云”系统解析
  • [linux] shell中的()和{}
  • [Linux]进程间通信(进程间通信介绍 | 匿名管道 | 命名管道)
  • [node] Node.js 缓冲区Buffer
  • [Noi2015]程序自动分析