我正在尝试打开端口 8080,以便可以使用我安装在 Ubuntu 服务器上的 Web 面板应用程序 (McMyAdmin)。总的来说,我对 Linux / SSH 相当陌生,但多亏了各种指南和几个朋友,我才得以实现这一目标!我想知道是否有人可以告诉我在尝试打开端口 8080 时我做错了什么。当我使用 -nL 检查规则时似乎显示正常,但当我使用 -vL 时则不然。我也不确定 vL 和 nL 之间的实际区别是什么,所以如果有人能让我理解这一点,那就太好了!
编辑:查看所有内容,看起来端口 80 也没有打开,我想我也需要对此做一些事情......
name@server:/etc/iptables$ sudo iptables -nL
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
REJECT all -- 127.0.0.0/8 0.0.0.0/0 reject-with icmp-port-unreachable
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 state NEW icmptype 8
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:25565
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:8080
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
LOG all -- 0.0.0.0/0 0.0.0.0/0 limit: avg 3/min burst 5 LOG flags 0 level 7 prefix "iptables_INPUT_denied: "
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
Chain FORWARD (policy DROP)
target prot opt source destination
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
name@server:/etc/iptables$ sudo iptables -vL
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- lo any anywhere anywhere
0 0 REJECT all -- !lo any 127.0.0.0/8 anywhere reject-with icmp-port-unreachable
0 0 ACCEPT icmp -- any any anywhere anywhere state NEW icmp echo-request
0 0 ACCEPT tcp -- any any anywhere anywhere state NEW tcp dpt:ssh
0 0 ACCEPT tcp -- any any anywhere anywhere state NEW tcp dpt:25565
61 3096 ACCEPT tcp -- any any anywhere anywhere state NEW tcp dpt:http-alt
862 69185 ACCEPT all -- any any anywhere anywhere state RELATED,ESTABLISHED
21 1648 LOG all -- any any anywhere anywhere limit: avg 3/min burst 5 LOG level debug prefix "iptables_INPUT_denied: "
21 1648 REJECT all -- any any anywhere anywhere reject-with icmp-port-unreachable
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 REJECT all -- any any anywhere anywhere reject-with icmp-port-unreachable
Chain OUTPUT (policy ACCEPT 16 packets, 2992 bytes)
pkts bytes target prot opt in out source destination
答案1
您可以iptables
使用 阅读有关该命令的信息man iptables
。
这样做表明,
-v, --verbose
Verbose output. This option makes the list command show the interface name, the rule options (if any), and the TOS masks. The
packet and byte counters are also listed, with the suffix 'K', 'M' or 'G' for 1000, 1,000,000 and 1,000,000,000 multipliers
respectively (but see the -x flag to change this). For appending, insertion, deletion and replacement, this causes detailed
information on the rule or rules to be printed. -v may be specified multiple times to possibly emit more detailed debug state‐
ments.
-n, --numeric
Numeric output. IP addresses and port numbers will be printed in numeric format. By default, the program will try to display
them as host names, network names, or services (whenever applicable).
因此,-n
显示的是数字而不是服务名称。 -v
与 不是相反-n
,但它显示名称(这是默认值)和更多数据。
本质上,它们都向您显示相同的内容,即您有此条目(第一个是数字,第二个是命名)。
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:8080
61 3096 ACCEPT tcp -- any any anywhere anywhere state NEW tcp dpt:http-alt
http-alt
是端口 8080 的服务名称。基本上,这两个条目是不同格式的同一行。
除了“打开端口”(这实际上意味着允许流量通过 iptables 防火墙)之外,您还需要准备好接受相关端口上的流量的软件。 McMyAdmin 是否配置为侦听端口 8080?
该netstat
命令(以及其他命令)可用于查看哪些进程正在侦听哪些端口。 netstat -an
列出所有端口 ( -a
) 并显示数字 ( -n
),这使得它与 结合使用非常有用grep
。例如,netstat -an | grep 8080
将列出是否有任何进程正在使用端口 8080。您可能会看到类似这样的内容,
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN
实际数字可能有所不同。您可以用来-p
显示哪个进程正在使用该端口,但如果您以 root 身份运行它,它只会显示所有进程。
所以,sudo netstat -anp | grep 8080
会给出类似的东西,
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 4856/some-process-name
如果您没有得到任何输出,则说明端口 8080 上没有任何内容正在使用或侦听,因此您可以使用sudo netstat -anp
并查看进程列表,看看是否存在您期望的进程以及它正在侦听哪个端口。