iptables filter表案例/iptables nat表应用

iptables filter表案例

iptables filter 表案例
建立一个iptables.sh脚本linux

[root@Ask-02 ~]# vim /usr/local/sbin/iptables.shshell

写入脚本内容:vim

ipt="/usr/sbin/iptables"           //定义一个环境变量(下面$ipt就等同于/usr/sbin/iptables的绝对路径了)
$ipt -F                                      //清空以前规则(没有-t,默认是执行的filter)
$ipt -P INPUT DROP               //定义策略 (INPUT策略 DROP掉)
$ipt -P OUTPUT ACCEPT        //定义策略(OUTPUT策略 ACCEPT接受)
$ipt -P FORWARD ACCEPT    // 定义策略(FORWARD策略 ACCEPT接受)
$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT           //增长规则(RELATED状态,ESTABLISHED状态放行)
$ipt -A INPUT -s 192.168.135.0/24 -p tcp --dport 22 -j ACCEPT              //增长规则(192.168.223网段访问22端口的数据包放行)
$ipt -A INPUT -p tcp --dport 80 -j ACCEPT                                              //增长规则(80端口数据包方行)
$ipt -A INPUT -p tcp --dport 21 -j ACCEPT                                              //增长规则(21端口数据包放行)

完成脚本后保存退出,接着运行这个脚本;服务器

[root@Ask-02 ~]# sh /usr/local/sbin/iptables.sh网络

最后再来查看如下规则;tcp

[root@Ask-02 ~]# iptables -nvLide

恢复默认规则;3d

[root@Ask-02 ~]# service iptables restartrest

关于icmp的包比较常见的应用,执行如下命令;code

[root@Ask-02 ~]# iptables -I INPUT -p icmp --icmp-type 8 -j DROP

这条命令会禁止别人ping不通本机,可是本机能够ping通外网
删除这条规则命令以下;

[root@Ask-02 ~]# iptables -D INPUT -p icmp --icmp-type 8 -j DROP

iptables nat表应用

在平常生活中接触到的路由器,它的功能就是分享上网,原本一根网线过来(其实只有一个公网IP),经过路由器后,路由器分配一个网段(私网IP),这样链接路由器的多台PC或者手机等设备都能链接上网了,而远端的设备认为你的IP就是那个链接路由器的公网IP。这个路由器的功能其实就是由linux的iptables实现的,而iptables又是经过nat表做用而实现的。
如下举个例子说明,假设你的两台机器,A机器有两块网卡ens33和ens33,其中ens33的IP为192.168.135.133,ens35的IP为192.168.100.1,ens33网卡链接了因特网,但ens35没有链接。如今B机器有个的ens37网卡和A机器的ens37是互通的,如何设置才能让链接ens35的A机器链接因特网,和192.168.135.133互通呢,操做以下;

[root@Ask-02 ~]# echo "1" > /proc/sys/net/ipv4/ip_forward
[root@Ask-02 ~]# iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE

在此以前若是使用的是虚拟机演戏的话,须要预备几步工做;
先对A机器进行操做设置,添加网卡

编辑虚拟机设置——选中:网络适配器——添加:网络适配器——点击:下一步——保持默认:NAT模式——点击: 完成—— 选中:网络适配器 2——选择:LAN 区段——添加:自定义名称——肯定——选中刚刚添加的新LAN段 ——肯定

iptables filter表案例/iptables nat表应用
iptables filter表案例/iptables nat表应用
iptables filter表案例/iptables nat表应用
iptables filter表案例/iptables nat表应用
这里A机器就设置好了,B机器和A机器设置操做同样,只是须要先把本来B机器上能够链接的网卡断掉禁用掉,已方便操做,禁掉操做以下;
iptables filter表案例/iptables nat表应用

这里记住A、B机器选择的LAN区段必定要一致。

接下来ifconfig查看下各个机器的网卡现象
iptables filter表案例/iptables nat表应用
iptables filter表案例/iptables nat表应用

给A、B机器新网卡同时设置临时IP;

[root@Ask-02 ~]# ifconfig ens37 192.168.135.1/24
[root@Ask-01 ~]# ifconfig ens37 192.168.135.100/24

B机器为了更好的演示操做,能够ifdown掉ens33网卡

[root@Ask-01 ~]# ifdown ens33

这样准备工做就作好了,能够用ping命令检测如下A、B机器是否能相互ping通内网和外网,若是以上操做正确的话,获得的结果是A机器能ping通外网和内网,而B机器只能ping通内网。

接下来就是让A机器的ens37设置的可以链接外网

[root@Ask-02 ~]# echo "1" > /proc/sys/net/ipv4/ip_forward //打开端口转发
[root@Ask-02 ~]# iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE //增长规则

咱们能够执行如下命令查看设置结果

[root@Ask-02 ~]# cat /proc/sys/net/ipv4/ip_forward //默认是0端口关闭,1则是打开
1
[root@Ask-02 ~]# iptables -t nat -nvL

iptables filter表案例/iptables nat表应用

再来给B机器设置网关以及修改DNS;

[root@Ask-01 ~]# route add default gw 192.168.100.1
[root@Ask-01 ~]# vi /etc/resolv.conf

写入公共DNS:119.29.29.29保存并退出
这样B机器技能ping通A机器也能ping通外网了,好比你ping一个A机器能够链接外网IP的地址或则ping百度或者腾讯的地址

远程访问B机器
删掉A机器以前设定的nat表的规则;

[root@Ask-02 ~]# iptables -t nat -D POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE

从新设定一个nat表的规则(针对进去的数据包)

[root@Ask-02 ~]# iptables -t nat -A PREROUTING -d 192.168.135.133 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22

在设定一个nat表的规则(针对回来的数据包)

[root@Ask-02 ~]# iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.135.133
给B机器设置网关;
[root@Ask-02 ~]# route add default gw 192.168.100.1

最后在Xshell设置一个远程登陆到IP地址为192.168.135.133端口为1122的服务器便可。

相关文章
相关标签/搜索