我对使用 iptables 来处理两个以太网端口有些困惑。
eth0 端口用于 LAN(192.168.1.50 私有 IP)。
eth1 端口通过电缆调制解调器连接到互联网(80.0.xxx.xxx 公共 IP)。
eth0 Link encap:Ethernet HWaddr 00:19:99:C1:86:BB
inet addr:192.168.1.50 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:137532 errors:0 dropped:0 overruns:0 frame:0
TX packets:55658 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:99968969 (95.3 MiB) TX bytes:10403525 (9.9 MiB)
Interrupt:50 Memory:fe700000-fe720000
eth1 Link encap:Ethernet HWaddr 00:19:99:C1:61:3B
inet addr:80.0.xxx.xxx Bcast:255.255.255.255 Mask:255.255.252.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:144558 errors:0 dropped:0 overruns:0 frame:0
TX packets:70347 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:34500131 (32.9 MiB) TX bytes:27893843 (26.6 MiB)
Interrupt:177 Memory:fe600000-fe620000
我想阻止所有传入路由,eth1
但只允许端口 21。这样外部 IP 就无法访问我们的 Web 服务器、FTP 服务器等。仅允许端口 21 进行 SSH 访问。Ping 也应该可以工作。
在本地网络(eth0)上,任何人都可以访问任何内容,但只能阻止本地 IP 192.168.1.20 和 192.168.1.30 访问 192.168.1.50 服务器。
如何使用 iptables 来完成?
答案1
我想阻止所有到 eth1 的传入路由,但只允许端口 21。这样外部 IP 就无法访问我们的 Web 服务器、ftp 服务器等。仅允许端口 21 进行 SSH 访问。Ping 也应该可以工作。
最简洁的方法是将 web/ftp 服务器配置为只监听内部接口。这样,您就不必担心任何与网络相关的技术。
如果您因任何原因无法做到这一点,请遵循以下规则:
iptables -A INPUT -i eth1 -p icmp -j ACCEPT # allow ping
iptables -A INPUT -i eth1 -p tcp --dport 21 -j ACCEPT # allow SSH
iptables -A INPUT -i eth1 -j DROP # drop everything else
(顺便说一下,SSH 的默认端口是 22,但我认为您最清楚 SSH 监听的位置。)
在本地网络(eth0)上,任何人都可以访问任何内容,但只能阻止本地 IP 192.168.1.20 和 192.168.1.30 访问 192.168.1.50 服务器。
简单的:
iptables -A INPUT -i eth0 -s 192.168.1.20 -j DROP
iptables -A INPUT -i eth0 -s 192.168.1.30 -j DROP
这会丢弃来自这些主机的所有数据包。如果您也想在这里允许 ping,请对 icmp 使用与 eth1 类似的规则。