获取中...

-

Just a minute...

iptables的基本配置方法

查看是否安装防火墙

which iptables

whereis iptables

如上图所示,iptables已经安装,如果没有安装,使用sudo apt-get install iptables安装

查看配置信息

命令:iptables -L

以上信息表示没有配置

建立规则文件

命令:

mkdir /etc/iptables #先新建目录,本身无此目录

vim /etc/iptables/rules.v4 文件rules.v4的内容编辑如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:syn-flood - [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
-A INPUT -p icmp -m limit --limit 100/sec --limit-burst 100 -j ACCEPT
-A INPUT -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j syn-flood
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A syn-flood -p tcp -m limit --limit 3/sec --limit-burst 6 -j RETURN
-A syn-flood -j REJECT --reject-with icmp-port-unreachable
COMMIT

使防火墙生效

iptables-restore < /etc/iptables/rules.v4

创建文件,添加以下内容,使防火墙开机启动

vim /etc/network/if-pre-up.d/iptables

编辑:

#!/bin/bash

iptables-restore < /etc/iptables/rules.v4

添加文件的执行权限

chmod +x /etc/network/if-pre-up.d/iptables

查看规则是否生效

iptables -L -n

此时已经生效

开启关闭防火墙

Ubuntu中没有直接停止关闭iptables的命令,像service iptables stop这类命令,是centos才有的。关闭的话,可以暂时开放所有端口作为替代方案

iptables -P INPUT ACCEPT

iptables -P OUTPUT ACCEPT

使用iptables命令自定义防火墙规则

执行如下指令删除规则和计数器

iptables -F (清除防火墙过滤规则)

iptables -F -t nat

iptables -Z(把 chain 或者所有 chain(当未指定 chain 名称时)的包及字节的计数器清空)

iptables -X(删除用户自定义 chain 或者所有用户自定义 chain(当未指定 chain 名称时)。该指令不影响预设规则(如 INPUT、OUTPUT、FORWARD 等))

设置filter表中各个chain的默认规则

iptables -P INPUT DROP(全部关掉input链路后,随之产生了一个很严重的问题,那么服务器本身发送的数据请求返回的数据同样被iptables拒之门外,一个通俗的解释就是外部数据无法访问本地服务,本地服务器也无法正常上网)

iptables -P FORWARD DROP(实现地址转换,但是地址转换后的报文是无法再转发至内部主机中去,因为forward规则给挡住了)

iptables -P OUTPUT ACCEPT(默认的可以出去)

上述指令执行完之后,远程登录将立即中断

如果允许icmp数据包进入系统,输入以下规则:

iptables -A INPUT -p icmp -j ACCEPT

此时可以接收

nat表的应用示例,利用iptables实现SNAT

环境

准备ubuntu19,ubuntu19的克隆和win10本机

Ubuntu19: 做为内部局域网的网关以及连接外网的设备

Ubuntu19的克隆:做为内部局域网的终端设备

Win7:win7做为外网的web服务器设备

Ubuntu19需要添加一块网卡,一块做为内网网卡,一块做为外网网卡

添加网卡操作:

此时ubuntu19的ip配置如下:

外网网卡ens33(桥接),ip为192.168.0.11

内网网卡ens38(主机),ip为192.168.160.129

此时ubuntu19的克隆(主机)ip配置如下:

ip: 192.168.160.130

网关:192.168.160.129

/etc/network/interfaces配置如下:

1
2
3
4
5
6
7
8
auto lo
iface lo inet loopback
auto ens33
iface ens33 inet static
address 192.168.160.130
netmask 255.255.255.0
gateway 192.168.160.129
dns-nameservers 8.8.8.8

网关是ubuntu19的ip

此时win10的ip配置如下:

ip:192.168.0.3

开启路由功能

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

要想永久有效,还要把/etc/sysctl.conf文件里边的net.ipv4.ip_forward的值改为1

sysctl -p

sysctl立即读取其配置文件/etc/sysctl.conf中的内容,并且立即生效。

伪装数据包

sudo iptables -t nat -A POSTROUTING -s 192.168.160.130 -o eth1 -j MASQUERADE

或者用SNAT直接修改IP数据包的表头来源IP
sudo iptables -t nat -A POSTROUTING -s 192.168.160.130 -o eth1 -j SNAT –to 192.168.160.129

如果需要支持整个网段:
sudo iptables -t nat -A POSTROUTING -s 192.168.160.0/24 -o eth1 -j SNAT –to 192.168.160.129

ps:

以上所有命令中的-o eth1可以省略,所以,在分不清哪个网卡是内网哪个网卡是外网的情况下,直接省略即可。

如果想要允许所有IP,-s 192.168.160.0/24也可以省略。

-j SNAT –to 192.168.160.129可以换成-j SNAT –to 192.168.0.11

-j SNAT –to 192.168.0.11建议换成-j MASQUERADE,尤其在外网IP非固定的情况下。

如果需要支持连续IP:
sudo iptables -t nat -A POSTROUTING -m iprange –src-range 192.168.160.130-192.168.160.140 -o eth1 -j SNAT –to 192.168.160.129

综上,最简单的万能SNAT命令为sudo iptables -t nat -A POSTROUTING -j MASQUERADE

查看和删除

查看NAT表链规则
sudo iptables -t nat -nL –line-number

删除POSTROUTING第一条规则
sudo iptables -t nat -D POSTROUTING 1

此时ubunutu19的克隆可以ping通www.baidu.com

相关文章
评论
分享
  • 网络设备配置与管理

    Linux网络设备与管理大作业 下图为某企业网络拓扑图,接入层采用二层交换机2960,汇聚和核心层使用了一台三层交换机3560 24PS,局域网边缘采用一台路由器LanRouter用于连接到外部网络的Isp Router两台路由器...

    网络设备配置与管理
  • 搭建email服务器

    安装Ubuntu 18.04附带了systemd-resolve,需要禁用它,因为它绑定到53端口,与Dnsmasq端口冲突。 运行以下命令以禁用已解析的服务: systemctl disable systemd-resolved s...

    搭建email服务器
  • ssh服务配置

    目的掌握linux系统中ssh服务器的配置 掌握ssh安全远程登陆的方法 掌握ssh采用公钥认证登陆 条件局域网中有两台主机ip为192.168.75.134(服务器,yangshuming)和192.168.75.132(客户端ub...

    ssh服务配置
Please check the parameter of comment in config.yml of hexo-theme-Annie!