我有一个Linux服务器,有公共IP和私有IP。所以,当我使用公共IP登录时,终端直接显示私有IP。
例子:
$ ssh [email protected]
root's password:
[email protected]:~$ hostname -I
10.1.4.20
[email protected]:~$ wget -qO- http://ipecho.net/plain ; echo
55.27.xx.xx
现在,我安装了 Nginx,并且可以使用默认 nginx 页面加载 55.27.xx.xx。但是,当我使用端口 85 安装 phpmyadmin 时,它不允许我从公共 IP 访问该页面。
如果我使用curl 10.1.4.20:85
,我就会得到200 OK response
。但是curl 55.27.xx.xx:85
,我超时了。
与 netcat 命令相同:
[email protected]:~$ nc -vz localhost 85
nc: connect to localhost port 85 (tcp) failed: Connection refused
Connection to localhost 85 port [tcp/*] succeeded!
[email protected]:~$ nc -vz 55.27.xx.xx 85
nc: connectx to 55.27.xx.xx port 85 (tcp) failed: Operation timed out
服务器可能位于某个路由器后面:
[email protected]:~$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 52:55:00:tt:a6:76 brd ff:ff:ff:ff:ff:ff
inet 10.1.4.20/16 brd 10.4.255.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 dddd::xxxx:ff:4534/64 scope link
valid_lft forever preferred_lft forever
我没有执行任何端口转发步骤。我看到iptables -L
空白输出如下:
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
从服务器上,我无法 ping 通 google.com
ping www.google.com
PING www.google.com (xx.xx.xx.xx) 56(84) bytes of data.
^C
--- www.google.com ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2000ms
请建议如何从公共 IP 地址通过端口 85 访问 phpmyadmin。
答案1
的条目ip addr show
表明您的服务器只有一个本地地址:
inet 10.1.4.20/16 brd 10.4.255.255 scope global eth0
55.27.XX.XX
您需要检查将您的地址映射到10.1.4.20
端口 tcp/85 并为端口 tcp/85 提供端口转发的外部 NAT 设备。