Iptables
Sendmail 和 IpTable 規則
我需要為帶有 nginx、ssh 和 sendmail 的伺服器設置 IpTable 規則。現在,問題是,按照我的規則,我不能再向其他主機發送電子郵件了。當防火牆啟動時,發送到本地主機的電子郵件確實有效,但發送到不同的伺服器則無效。
我嘗試打開傳入和傳出埠 25 以及 DNS 查找埠,但沒有任何效果。有任何想法嗎?
更新:
這是我的規則:
#! /bin/sh # firewall iptable rules interface="eth0" # first, deny all iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP # open loopback device completely iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT # open ssh ports iptables -A INPUT -p tcp -i $interface --dport 22 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -p tcp -o $interface --sport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT # open browser ports iptables -A INPUT -p tcp -i $interface --dport 80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -p tcp -o $interface --sport 80 -m state --state ESTABLISHED,RELATED -j ACCEPT
如果你想允許你的 Linux 機器通過埠 25 發送電子郵件,你應該通過添加如下規則來允許它:
$ iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT
對於 DNS 流量也是如此:
$ iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
如果沒有這樣的顯式規則,則預設情況下將拒絕流量,因為預設策略設置為
DROP
。更新:
不要忘記使用以下方法允許相關/已建立的連接:
$ iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT $ iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT