我需要通过端口 8080 访问我的网站,但由于某种原因,我无法访问:
这就是我的iptable -L
https://gist.github.com/28e7a48d91e933c6f377
在 serverfault 上搜索后,我刚刚添加了:
iptables -I INPUT 1 -i lo -p tcp --dport 8080 -j ACCEPT
没有效果(即使重启 iptable 后)
如何允许访问port 8080
(由于我将为 varnish / apache2 进行设置,因此既允许本地访问,也允许外部访问)?
编辑似乎在重新启动 iptable 后,允许端口 8080 的规则已经消失:
重启后。
谢谢。
答案1
在 iptables 中允许特定端口:
该规则的一般形式为:
-A INPUT -i <interface> -p <protocol> --dport <port> -j ACCEPT
-I INPUT <rule no.> -i <interface> -p <protocol> --dport <port> -j ACCEPT
规则编号:您要添加此规则的链的索引。
接口 :您希望此规则应用于的接口,如果您希望应用于所有接口,则无需指定,例如 eth0、lo。您可能需要指定 eth0。
协议 :你想要的协议是 tcp/udp。你的情况是 TCP
端口:您希望它应用到的端口号。在您的例子中是 8080
确保此规则位于丢弃所有其他数据包规则之前。
您的语句不起作用的原因可能是因为您已将接口指定为而lo
不是eth0
为了使规则永久生效:
如果你只是使用命令行添加此规则,则重新启动时该规则将被丢弃,因为 iptables 将从 再次加载/etc/sysconfig/iptables
。因此,如果你想使其永久生效,你有两个选择。
使用
iptable-save > /etc/sysconfig/iptables
这会将 iptables 配置保存到 iptables 文件中,当您重新启动 PC 时将从该文件读取配置。但如果您手动编辑该文件以添加注释,则这些注释将会丢失。
手动编辑
/etc/sysconfig/iptables
文件以将此规则添加到正确的链中。这可确保您输入的评论得到保留。
PS:您可能需要找到您的 iptables 文件的位置和接口名称并进行相应的更改。
答案2
你将接受规则限制为仅用于环回[通过-i lo部分]。要允许全球访问,请跳过该部分并运行:
iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
为了获得最佳性能,你的 iptables 规则应该以以下内容开头:
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
只有在此之后,才可以遵循其他规则。