我有一个拓扑,其中有一个 Linux 作为连接两个 Linux 的路由器,我想使用 iptables 在一个方向上过滤 ssh 和 HTTP。我使用了下面的代码,但没有用!我非常感谢你能提供的任何帮助。
iptables -A FORWARD -i ens33 -o ens38 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i ens38 -o ens33 -p tcp --sport 80 -j ACCEPT
iptables -A FORWARD -i ens38 -o ens33 -p tcp --dport 80 -j DROP
答案1
您的脚本应该适用于 http,但它并不是很好。我会使用类似这样的脚本:
IPTABLE=/sbin/iptables
$IPTABLE -P INPUT ACCEPT
$IPTABLE -P FORWARD DROP
$IPTABLE -P OUTPUT ACCEPT
$IPTABLE -F
$IPTABLE -X
$IPTABLE -F -t nat
$IPTABLE -X -t nat
$IPTABLE -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
#http
$IPTABLE -A FORWARD -i ens33 -o ens38 -p tcp --dport 80 -j ACCEPT
#https
$IPTABLE -A FORWARD -i ens33 -o ens38 -p tcp --dport 443 -j ACCEPT
# ssh
$IPTABLE -A FORWARD -i ens33 -o ens38 -p tcp --dport 22 -j ACCEPT
# icmp
$IPTABLE -A FORWARD -p icmp -j ACCEPT
一旦规则开始工作,我建议执行iptables-save > /etc/iptables/rules.v4
。iptables-persistent
规则在启动时随数据包一起加载。
除了 iptables 规则,您还需要
- 您的网关上已启用 IP 转发。
- 内部主机上的外部网络路由
- 外部主机上的内部网络路由