多年来,我一直在努力深入了解 iptables。每当我尝试阅读手册页时,我的眼睛就开始发呆。
我有一个服务,只想允许本地主机访问。
我应该用 Google 搜索哪些术语(或配置,如果有人愿意的话)才能仅允许本地主机访问给定端口?
答案1
如果您所说的服务指的是特定端口,那么以下两行应该有效。将“25”更改为您要限制的任何端口。
iptables -A INPUT -p tcp -s localhost --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -j DROP
答案2
我建议:
iptables -A INPUT -i lo -p tcp --dport $APP_PORT -j ACCEPT
iptables -A INPUT -p tcp --dport $APP_PORT -j DROP
因为,自寻址数据包不一定以 127.0.0.1 作为其来源,但它们都从该lo
接口“进入”。
现在,如果你真的想要理解,iptables
你应该做的第一件事就是下载并打印解释表格关系的图表netfilter
。这里有两个很棒的图表:
- http://en.m.wikipedia.org/wiki?search=iptables- 非常复杂,但参考
- http://vinojdavis.blogspot.com/2010/04/packet-flow-diagrams.html- 上面的图表更容易理解,尽管不那么完整
最后,多读一些iptables
HOWTO。实际的例子会帮助你快速上手 :)
答案3
我遇到了类似的问题。我配置了iptables拒绝来自除我特别想允许的端口之外的所有端口的传入请求。我没有允许 27107,因为我错误地推断 iptables 只会影响来自其他主机的流量,而且我不需要将这个 mongodb 实例暴露给外界。
我对 iptables 的理解有误。当我添加此规则时,它再次起作用:
-A INPUT -p tcp -m tcp -s localhost --dport 27017 -j ACCEPT
这告诉 netfilter 只要来自本地主机,就接受到端口 27017 的传入流量。
如果我想从其他主机(例如我的笔记本电脑)访问此 mongo 实例,我仍然可以使用IP隧道。