7月13日任务
10.15 iptables filter表案例
10.16/10.17/10.18 iptables nat表应用
扩展
1. iptables应用在一个网段 http://www.aminglinux.com/bbs/thread-177-1-1.html
2. sant,dnat,masquerade http://www.aminglinux.com/bbs/thread-7255-1-1.html
3. iptables限制syn速率 http://www.aminglinux.com/bbs/thread-985-1-1.html
http://jamyy.us.to/blog/2006/03/206.html
iptables filter表案例
-ipt是定义变量,这样不用每次都写绝对地址,以后写shell脚本的时候最好写据对路径
首先要把之前的规则清空,所以 -F
然后默认的策略定义 INPUT -DROP OUTPUT- ACCEPT FORWARD -ACCEPT
接着 添加规则 -A ,指定了状态是 related和established的,针对这些状态的数据放行。这一行主要是保证保持连接的状态。related是一个边缘的状态,没有这个的话,有可能其他的被禁掉了。这一行必须有。
接下里是把192.168.133.0/24网段的访问22端口的放行
然后是把80和21端口数据放行
写脚本的目的就是连续操作,因为中间的某些操作有可能会断掉连接无法继续操作。
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT # 允许被ping
iptables -I INPUT -p icmp --icmp-type 8 -j DROP 这个就是不允许被ping 但是可以ping外面
需要将service iptables restart后才能去操作icmp
操作完之后的效果就是iptables -I INPUT -p icmp --icmp-type 8 -j DROP 可以ping出去 其他ping不了它
iptables nat表应用 1
首先需要给虚拟机1新做一个网卡
然后给虚拟机2新建一个网卡,因为本身的网卡已经设置好IP等所以可以取消它启动时连接,第二块网卡也使用lan区段。也就是说想完成这个实验(一台机器一网卡内网,一个外网,另一个机器网卡内网,但是想上网)必须俩内网网卡在一个区段,使用同一个交换机。因为第二个虚拟机的网卡已经变化了,所以远程连接已经不行了。
接下来要给虚拟出来的网卡设定一个ip ens37
可以ifconfig 网卡 ip 来临时指定ip 如果想永久保存要修改配置文件
接着给另一台机器设置内网ip,因为没有办法登陆远程,只能直接从机器登陆,为了保险,ifdown再去关闭第一块网卡。
使用同样的命令 ifconfig 网卡 192.168.100.100/24,而且可以ping通之前那个机器的第二个内网网卡。这样前提条件都已经满足了。
iptables nat表应用(中)
准备工作已经就绪, 准备做实验。
首先A机器上需要打开路由转发 echo "1">/proc/sys/net/ipv4/ip_forward
默认 /proc/sys/net/ipv4/ip_forward这个文件的值是0,就意味着没有开启路由转发。
然后需要添加规则,实现上网。iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE 目的就是让100.0的网段上网。
然后给b机器设置网关。
192.168.100.1
route -n 查找网关,目前是没有网关的。
设置网关 route add default gw 192.168.100.1
B网卡可以pingA的外网ip就成功了。
然后理论上就可以连接外网了。
注意的几点:
1. A需要一个网卡连接外网,一个内网,B的内网网卡和A的内网在一个网段
2. A的内网IP作为B的内网网卡的网关来提供上网。
其实就是实现了一个路由器的功能
远程登陆B机器,通过映射到A机器的其他端口来实现。就是说访问A的1122端口,实际上访问的是B的22端口
第一步还是打开端口转发
第二步增加规则。在这时候需要先将之前的规则删除。
此时的nat表是空的
第二步需要加规则,prerouting这个就是把进来的包,转发到100.100:22
第三部是 回来的包,经过A机器再做一个
iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.202.123
第四部给B机器加网关
这时候应该就可以远程访问B机器了