iptables 用法复习html
#!/bin/bash ipt="/user/sbin/iptables" $ipt -F // 清空规则 $ipt -P INPUT DROP // $ipt -P OUTPUT ACCEPT // $ipt -P FORWARD ACCEPT // $ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT $ipt -A INPUT -s 192.168.133.0/24 -p tcp --dport 22 -j ACCEPT //放行22端口 $ipt -A INPUT -p tcp --dport 80 -j ACCEPT // 放行80端口 $ipt -A INPUT -p tcp --dport 21 -j ACCEPT //
Iptables参数 -m state --state <状态>linux
Iptables参数 -m state --state <状态> 有数种状态,状态有: ▪ INVALID:无效的封包,例如数据破损的封包状态 ▪ ESTABLISHED:已经联机成功的联机状态; ▪ NEW:想要新创建联机的封包状态; ▪ RELATED:这个最经常使用!表示这个封包是与咱们主机发送出去的封包有关, 多是响应封包或者是联机成功以后的传送封包!这个状态很常被设定, 由于设定了他以后,只要将来由本机发送出去的封包, 即便咱们没有设定封包的 INPUT 规则,该有关的封包仍是能够进入咱们主机, 能够简化至关多的设定规则。
执行脚本,查看规则已经生效,但为写入配置文件,service iptables restart恢复原规则web
icmp 示例:禁掉ping本地,但能够ping通外网安全
iptables -I INPUT -p icmp --icmp -type 8 -j DROPbash
先在虚拟机中克隆一个linux系统b网络
在系统a中添加网卡,默认选项,完成less
添加lan区段,并选择添加的区段tcp
给系统b也添加一个网卡,选择上一步添加的区段,同时取消链接b的第一个网卡网站
启动a系统spa
设置新添加网卡ip
ifconfig ens37 192.168.99.1/24 // ip随意指定
启动b系统也设置网卡ip,要和a的网卡在一个网段
ifconfig ens37 192.168.99.99/24 // ip随意指定
a系统ping b系统,成功联通。
[root@glinux-01 ~]# ping 192.168.99.99 PING 192.168.99.99 (192.168.99.99) 56(84) bytes of data. 64 bytes from 192.168.99.99: icmp_seq=1 ttl=64 time=0.831 ms 64 bytes from 192.168.99.99: icmp_seq=2 ttl=64 time=0.424 ms 64 bytes from 192.168.99.99: icmp_seq=3 ttl=64 time=1.80 ms
a机器打开路由转发
运行 echo "1"> /proc/sys/net/ipv4/ip_forward
出于安全考虑,Linux系统默认是禁止数据包转发的。所谓转发即当主机拥有多于一块的网卡时, 其中一块收到数据包,根据数据包的目的ip地址将包发往本机另外一网卡,该网卡根据路由表继续发送数据包。 这一般就是路由器所要实现的功能。 配置Linux系统的ip转发功能,首先保证硬件连通,而后打开系统的转发功能 less /proc/sys/net/ipv4/ip_forward,该文件内容为0,表示禁止数据包转发,1表示容许,将其修改成1。
a机器添加规则
iptables -t nat -A POSTROUTING -s 192.168.99.0/24 -o ens33 -j MASQUERADE 让192.168.99.0这个网段能够上网 MASQUERADE,地址假装
b机器设置网关
route -n 查看网关
route add default gw 192.168.99.1(a机器的ip)
ifdown ens33 关掉ens33网卡
b机器ping a机器ens33的网卡,成功
修改b机器dns
vi /etc/resolv.conf
ping通dns
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -d 192.168.244.128 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22 (将ip x.244.128:1122目的网络地址转换 x.192.168.100.100:22)
iptables -t nat -A POSTROUTING -s 192.168.99.99 -j SNAT --to 192.168.244.128
(源网络地址192.168.99.99转换成192.168.244.128)
nat dnat snat分别是什么?
http://ask.apelearn.com/question/7255
https://zhidao.baidu.com/question/335463920.html
NAT(Network Address Translation,网络地址转换)是将IP 数据包头中的IP 地址转换为另外一个IP 地址的过程。在实际应用中,NAT 主要用于实现私有网络访问公共网络的功能。这种经过使用少许的公有IP 地址表明较多的私有IP 地址的方式,将有助于减缓可用IP地址空间的枯竭 DNAT Destination Network Address Translation 目的网络地址转换, SNAT Source Network Address Translation 源网络地址转换,其做用是将ip数据包的源地址转换成另一个地址,可能有人以为奇怪,好好的为何要进行ip地址转换啊,为了弄懂这个问题,咱们要看一下局域网用户上公网的原理,假设内网主机A(192.168.2.8)要和外网主机B(61.132.62.131)通讯,A向B发出IP数据包,若是没有SNAT对A主机进行源地址转换,A与B主机的通信会不正常中断,由于当路由器将内网的数据包发到公网IP后,公网IP会给你的私网IP回数据包,这时,公网IP根本就没法知道你的私网IP应该如何走了。因此问它上一级路由器,固然这是确定的,由于从公网上根本就没法看到私网IP,所以你没法给他通讯。为了实现数据包的正确发送及返回,网关必须将A的址转换为一个合法的公网地址,同时为了之后B主机能将数据包发送给A,这个合法的公网地址必须是网关的外网地址,若是是其它公网地址的话,B会把数据包发送到其它网关,而不是A主机所在的网关,A将收不到B发过来的数据包,因此内网主机要上公网就必需要有合法的公网地址,而获得这个地址的方法就是让网关进行SNAT(源地址转换),将内网地址转换成公网址(通常是网关的外部地址),因此你们常常会看到为了让内网用户上公网,咱们必须在routeros的firewall中设置snat,俗称IP地址欺骗或假装(masquerade) 区分SNAT和DNAT 从定义来说它们一个是源地址转换,一个是目标地址转换。都是地址转换的功能,将私有地址转换为公网地址。 要区分这两个功能能够简单的由链接发起者是谁来区分: 内部地址要访问公网上的服务时(如web访问),内部地址会主动发起链接,由路由器或者防火墙上的网关对内部地址作个地址转换,将内部地址的私有IP转换为公网的公有IP,网关的这个地址转换称为SNAT,主要用于内部共享IP访问外部。 当内部须要提供对外服务时(如对外发布web网站),外部地址发起主动链接,由路由器或者防火墙上的网关接收这个链接,而后将链接转换到内部,此过程是由带有公网IP的网关替代内部服务来接收外部的链接,而后在内部作地址转换,此转换称为DNAT,主要用于内部服务对外发布。 在配置防火墙或者路由acl策略时要注意这两个NAT必定不能混淆。