七周四次课(1月25日)
10.15 iptables filter表案例
10.16/10.17/10.18 iptables nat表应用
10.15 iptables filter表案例
需求:只针对filter表,预设策略INPUT链DROP, 其他两个链ACCEPT,然后针对192.168.37.0/24开通22端口,对所有网段开放80端口,对所有网段开放21端口。
这个需求不算复杂,但是因为有多条规则,所以最好写成脚本的形式。脚本内容如下:
vi /usr/local/sbin/iptables.sh //加入如下内容
#! /bin/bash
ipt="/usr/sbin/iptables" //定义一个命令的变量
$ipt –F //清空以前的规则
$ipt -P INPUT DROP //定义默认INPUT策略
$ipt -P OUTPUT ACCEPT //定义默认OUTPUT策略
$ipt -P FORWARD ACCEPT //定义默认FORWARD ACCEPT策略
$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT //指定包的连接状态RELATED,ESTABLISHED放行
$ipt -A INPUT -s 192.168.37.0/24 -p tcp --dport 22 -j ACCEPT //192.168.37.0/24网段的22端口放行
$ipt -A INPUT -p tcp --dport 80 -j ACCEPT //80端口数据包放行
$ipt -A INPUT -p tcp --dport 21 -j ACCEPT //80端口数据包放行
icmp示例
iptables -I INPUT -p icmp --icmp-type 8 -j DROP
这里--icmp-type选项要跟-p icmp—起使用,后面指定类型编号。这个8指的是能在本机ping通其他机器,而其他机器不能ping通本机
10.16/10.17/10.18 iptables nat表应用
其实,Linux的iptales功能是十分强大的。一位老师曾经这样形容Linux的网络功能:只有想不到,没有做不到!也就是说,只要你能够想到的关于网络的应用,Linux都能帮你实现。你在日常生活中应该接触过路由器,它的功能就是分享上网。本来一根网线过来(其实只有一个公网IP),通过路由器后,路由器分配一个网段(私网IP),这样连接路由器的多台pc都能连接因特网,而远端的设备认为你的IP就是那个连接路由器的公网IP。这个路由器的功能其实就是由Linux的iptables实现的,而iptales又是通过nat表作用而实现的。
nat表应用
A机器两块网卡ens33(192.168.37.100)、ens37(192.168.100.1),ens33可以上外网,ens37仅仅是内部网络,B机器只有ens37(192.168.100.100),和A机器ens37可以通信互联。
- 需求1:可以让B机器连接外网
- 在虚拟机A机器上添加一块网卡,在虚拟机B机器上添加一块网卡。
虚拟机A网卡
- 设置虚拟机A上的ens37网卡IP地址
这种设置系统重启后,IP地址就没有了。
- 设置虚拟机B上的ens37网卡IP地址
- A和B机器互通
宿主机无法ping通虚拟机A和B,虚拟机B无法访问外网
- A机器上打开路由转发
- A上执行 iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE
- B上设置网关为192.168.100.1
- B机器连接外网
A机器清空filter表的规则
宿主机无法ping通虚拟机A和B,虚拟机
- 需求2:C机器只能和A通信,让C机器可以直接连通B机器的22端口
- A机器上打开路由转发
- 删除原有规则
- A机器上执行iptables -t nat -A PREROUTING -d 192.168.37.100 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22
- A机器上执行iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.37.100
- B机器上设置网关为192.168.100.1
- 设置xshell,并连接
能联通外网
原文地址:http://blog.51cto.com/415326/2065255