iptables nat 只是端口 25?

Lia*_*iam 5 linux debian iptables

我正在尝试配置防火墙。它有网络接口,eth0 (lan) 和 eth1 (wan)。

allow-hotplug eth1
auto eth1
iface eth1 inet static
address 192.168.2.2
gateway 192.168.2.1
netmask 255.255.255.0

allow-hotplug eth0
auto eth0
iface eth0 inet static
address 192.168.16.6
netmask 255.255.255.0
network 192.168.16.0
broadcast 192.168.0.255
Run Code Online (Sandbox Code Playgroud)

eth1 后面是一个路由器,它给了我一个动态 ip。

我在同一台机器上,有一个网络代理。实际上,局域网上的计算机只能使用代理访问网络。现在,我需要局域网中的机器通过互联网访问 SMTP 和 POP3 服务器。所以我需要 NAT,但仅用于端口 25 和 110。我不想 nat 其他端口。

你能帮我一步一步地配置iptables吗(我真的是iptables的菜鸟)?

问候

小智 5

下面的代码将完成这项工作。iptables 很容易使用——你只需要明确告诉它如何处理来自或去往特定端口上特定位置的流量。尽管您只请求了端口 25 和 110,但我还包括了安全 SMTP 和安全 POP3 的选项。

我在下面推荐的内容考虑到了您现有的任何防火墙规则,并将您请求的规则放在处理顺序中高于其他任何规则。iptables 按照与规则匹配的顺序处理规则,以防万一防火墙中已有其他规则可能会阻止 SMTP 或 POP3,我使用了 insert 命令并指定规则应放在列表的顶部。如果您没有任何其他防火墙规则,那么您可以将“-I”替换为“-A”并删除“FORWARD”和“POSTROUTING”表之后的行号。

我建议尽可能实现连接跟踪,下面的第一个 iptables 规则将其打开。如果您在非常旧的内核上运行,那么这些命令可能会出现问题,但如果它们对您有用,那就太好了。如果没有,则删除第一行,并删除所有其他行的“-m tcp”部分。

#Enable IP Forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward

#Turn on connection tracking
iptables -I FORWARD 1 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

#Allow SMTP traffic out to the internet. This includes regular and authenticated SMTP
iptables -I FORWARD 2 -i eth1 -p tcp -m tcp --dport 25 -j ACCEPT
iptables -I FORWARD 2 -i eth1 -p tcp -m tcp --dport 465 -j ACCEPT
iptables -I FORWARD 3 -i eth1 -p tcp -m tcp --dport 587 -j ACCEPT

#Allow POP3 traffic out to the internet. This includes regular and SSL secured POP3
iptables -I FORWARD 4 -i eth1 -p tcp -m tcp --dport 110 -j ACCEPT
iptables -I FORWARD 5 -i eth1 -p tcp -m tcp --dport 995 -j ACCEPT

#NAT the traffic leaving your router for the allowed forwarded ports above
iptables -t nat -I POSTROUTING 1 -o eth0 -p tcp --dport 25 -j MASQUERADE
iptables -t nat -I POSTROUTING 2 -o eth0 -p tcp --dport 465 -j MASQUERADE
iptables -t nat -I POSTROUTING 3 -o eth0 -p tcp --dport 587 -j MASQUERADE
iptables -t nat -I POSTROUTING 4 -o eth0 -p tcp --dport 110 -j MASQUERADE
iptables -t nat -I POSTROUTING 5 -o eth0 -p tcp --dport 995 -j MASQUERADE

#Optionally, block any other forwarded traffic
iptables -I FORWARD 6 -i eth1 -j REJECT
Run Code Online (Sandbox Code Playgroud)