跳转至

iptables配置解析

命令解析

当使用iptables命令时,通常需要使用多个参数来设置防火墙规则。下面是一些iptables命令中的常见参数及其含义:

  • -A:在规则链的末尾添加一条新规则
  • -i:指定数据包的来源网络接口
  • -o:指定数据包的目标网络接口
  • -p:指定数据包使用的协议,如TCP或UDP
  • --dport:指定数据包的目标端口
  • -j:指定要执行的操作,如DROP(丢弃数据包)或ACCEPT(允许数据包)
  • -m conntrack --ctstate:匹配特定连接状态的数据包,如ESTABLISHED(已建立的连接)或RELATED(相关的连接)

对于默认策略(如默认阻止所有流量),我们可以使用以下参数:

  • -P:指定规则链的默认策略,如DROP或ACCEPT

对于NAT规则,我们可以使用以下参数:

  • -t nat:指定NAT表
  • -s:指定源IP地址或子网
  • -d:指定目标IP地址或子网
  • --to-source:指定源IP地址或端口的转换规则
  • --to-destination:指定目标IP地址或端口的转换规则

这些只是iptables命令中一些常见参数的示例。根据具体的需求和网络拓扑结构,可能需要使用其他参数来编写防火墙规则。

案例配置

默认阻挡所有流量

在终端中输入以下命令以阻塞所有传入、传出和转发流量:

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

上述命令将默认阻止所有流量。

添加必要的NAT规则和流量放行规则

您需要根据您的网络拓扑结构和需要的服务来编写规则。以下是一个示例规则,它允许从内部网络访问Internet并允许指定的服务:

# 允许本地回环连接
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# 允许已建立的和相关连接
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT

# 允许内部网络访问Internet
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# 允许指定的服务
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A FORWARD -p tcp --dport 22 -j ACCEPT
iptables -A FORWARD -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -p tcp --dport 443 -j ACCEPT
上述规则假设您的内部网络接口为 eth0Internet接口为eth1。在规则中,INPUT链用于控制从Internet和内部网络到本地主机的流量,FORWARD链用于控制内部网络和Internet之间的流量,OUTPUT链用于控制本地主机到Internet和内部网络的流量。 规则中允许了SSH(端口22)、HTTP(端口80)和HTTPS(端口443)服务。您可以根据您的需要添加或删除其他服务的规则。

Internet网络不能访问office网络

根据上述规则,Internet网络不能直接访问office网络,因为我们只允许从内部网络到Internet的流量。但是,如果您希望更加严格地限制Internet网络,可以添加以下规则:

# 阻止Internet网络到内部网络的流量
iptables -A FORWARD -i eth1 -o eth0 -j DROP
iptables -A FORWARD -m conntrack --ctstate NEW -i eth1 -j DROP

上述规则将阻止Internet网络到内部网络的所有流量,除非是已经建立