Iptables 常用命令

允许回环连接
例如,如果您运行ping localhost或ping 127.0.0.1,您的服务器将使用回环接口对自身进行ping测试。如果 您配置应用程序服务器以使用本地主机地址连接到数据库服务器,也将使用回环接口。
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT

允许已建立和相关的传入连接
由于网络流量通常需要双向(传入和传出)才能正常工作,通常会创建一个防火墙规则来允许已建立和相关的传入流量,以便服务器允许由服务器自身发起的传出连接的返回流量。
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT

允许内部网络访问外部网络
假设eth0是您的外部网络接口,而eth1是您的内部网络接口,以下命令将允许内部网络访问外部网络:
sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

丢弃无效数据包
一些网络流量数据包会被标记为无效。有时记录此类数据包可能很有用,但通常直接丢弃它们也是可以的。
sudo iptables -A INPUT -m conntrack --ctstate INVALID -j DROP

阻止IP地址
要阻止源自特定IP地址(例如203.0.113.51)的网络连接
sudo iptables -A INPUT -s 203.0.113.51 -j DROP
sudo iptables -A INPUT -s 203.0.113.51 -j REJECT

阻止对网络接口的连接
要阻止来自特定IP地址(例如203.0.113.51)到特定网络接口(例如eth0)的连接,请使用以下命令:
iptables -A INPUT -i eth0 -s 203.0.113.51 -j DROP

允许所有传入的SSH连接
sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT

允许特定IP地址或子网的传入SSH连接
要允许来自特定IP地址或子网的传入SSH连接,请指定源地址。例如,如果您想允许整个203.0.113.0/24子网
sudo iptables -A INPUT -p tcp -s 203.0.113.0/24 --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT

允许传出SSH连接
如果您的防火墙OUTPUT策略没有设置为ACCEPT,并且您希望允许传出的SSH连接(即您的服务器主动连接到另一台服务器的SSH连接)
sudo iptables -A OUTPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT

允许所有传入的HTTP连接
sudo iptables -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 80 -m conntrack --ctstate ESTABLISHED -j ACCEPT

允许所有传入的HTTPS连接
sudo iptables -A INPUT -p tcp --dport 443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 443 -m conntrack --ctstate ESTABLISHED -j ACCEPT

允许所有传入的HTTP/HTTPS连接
sudo iptables -A INPUT -p tcp -m multiport --dports 80,443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp -m multiport --dports 80,443 -m conntrack --ctstate ESTABLISHED -j ACCEPT

允许特定IP地址或子网的传入MySQL连接
要允许来自特定IP地址或子网的传入MySQL连接,请指定源地址。例如,如果您想允许整个203.0.113.0/24子网进行MySQL连接
sudo iptables -A INPUT -p tcp -s 203.0.113.0/24 --dport 3306 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 3306 -m conntrack --ctstate ESTABLISHED -j ACCEPT

阻止传出的SMTP邮件
如果您的服务器不应发送传出邮件,您可能希望阻止此类流量。要阻止传出的SMTP邮件(使用端口25)
sudo iptables -A OUTPUT -p tcp --dport 25 -j REJECT
这将配置iptables拒绝在端口25上的所有传出流量。如果您需要拒绝其他端口号对应的服务,请将上述的25端口替换为相应的端口号。

允许所有传入的SMTP连接
要允许服务器响应端口25上的SMTP连接,请运行以下命令:
sudo iptables -A INPUT -p tcp --dport 25 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 25 -m conntrack --ctstate ESTABLISHED -j ACCEPT
第二个命令允许已建立的SMTP连接的传出流量,只有在OUTPUT策略未设置为ACCEPT时才需要。

允许所有传入的IMAP连接
要允许服务器响应IMAP连接(端口143),请运行以下命令:
sudo iptables -A INPUT -p tcp --dport 143 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 143 -m conntrack --ctstate ESTABLISHED -j ACCEPT
第二个命令允许已建立的IMAP连接的传出流量,只有在OUTPUT策略未设置为ACCEPT时才需要。

允许所有传入的POP3连接
要允许服务器响应POP3连接(端口110),请运行以下命令:
sudo iptables -A INPUT -p tcp --dport 110 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 110 -m conntrack --ctstate ESTABLISHED -j ACCEPT
第二个命令允许已建立的POP3连接的传出流量,只有在OUTPUT策略未设置为ACCEPT时才需要。

允许所有传入的POP3S连接
要允许服务器响应POP3S连接(端口995),请运行以下命令:
sudo iptables -A INPUT -p tcp --dport 995 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 995 -m conntrack --ctstate ESTABLISHED -j ACCEPT
第二个命令允许已建立的POP3S连接的传出流量,只有在OUTPUT策略未设置为ACCEPT时才需要。

隐藏网络内部主机的IP地址,还能够让局域网内的主机共享公网IP,让使用私网IP的主机能够访问互联网,snat
iptables -t nat -A POSTROUTING -s 10.1.0.0/16 -j SNAT --to-source 公网IP
如果公网IP是动态获取的,不是固定的,则可以使用MASQUERADE进行动态的SNAT操作,如下命令表示将10.1网段的报文的源IP修改为eth0网卡中可用的地址。
iptables -t nat -A POSTROUTING -s 10.1.0.0/16 -o eth0 -j MASQUERADE

透明代理,将公网ip转为实际服务的内网ip,dnat
iptables -t nat -I PREROUTING -d 公网IP -p tcp --dport 公网端口 -j DNAT --to-destination 私网IP:端口号
iptables -t nat -A POSTROUTING -s 10.1.0.0/16 -j SNAT --to-source 公网IP

端口映射
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
其他机器访问本机的80端口时,会被映射到8080端口,这也是docker端口映射的原理。
 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

差点GDP

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值