当尝试使用 Ubuntu 在 iptables 上打开端口 8080 时,我做错了什么?

当尝试使用 Ubuntu 在 iptables 上打开端口 8080 时,我做错了什么?

我正在尝试打开端口 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并查看进程列表,看看是否存在您期望的进程以及它正在侦听哪个端口。

相关内容