满足我需求的解决方案是按照 sumoanand 的建议设置 iptables 条目。这就是我的工作。
使用类似这样的方式启动 memcached:
/usr/bin/memcached -p 11211 -l 0.0.0.0 -d -u www-data -m 12288
请记住,该-l
参数设置为0.0.0.0
,这实际上允许来自任何来源的连接。如果你保持标准,127.0.0.1
这是行不通的。
接下来,我们进入 iptables。如果您的 memcached 服务器位于 LAN 上,则以下命令将仅允许来自特定本地服务器的连接。
例如,为了添加192.168.1.100
到允许列表,我们发出命令:
iptables -A INPUT -p tcp -s 192.168.1.100 --dport 11211 -j ACCEPT
例如,如果要将远程服务器列入白名单,25.62.25.62
则发出另一个命令:
iptables -A INPUT -p tcp -s 25.62.25.62 --dport 11211 -j ACCEPT
您可以根据需要将任意数量的 IP 列入白名单,但请务必发出最终命令来阻止该端口上的所有其他连接。
iptables -A INPUT -p tcp --dport 11211 -j REJECT
IPtables 是按照它们输入的顺序读取的,因此如果您在发出任何 ACCEPT 规则之前发出 REJECT ALL 语句,所有连接都将被拒绝(即使是列入白名单的连接)。
然而,以这种方式发送的数据仍然没有以任何方式加密。任何拦截您的 memcached 服务器和远程服务器(数据包嗅探器、ISP)的东西都将能够看到完全原始的数据。