Vince Stewart
我在 Ubuntu 12 上有一个 VPS,在 Ubuntu 12 上有一个家用电脑。我在 VPS 上有一个 Java 应用程序,它打开一个监听端口 4000 的 tcp 套接字和一个 Http 监听器。我的 ssh 服务在端口 55555 上运行。启动应用程序后,我在命令行中输入以下内容时会收到此报告:netstat -t -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:55555 *:* LISTEN
tcp6 0 0 [::]:http-alt [::]:* LISTEN
tcp6 0 0 [::]:55555 [::]:* LISTEN
tcp6 0 0 vps.mdomai.com:4000 [::]:* LISTEN
使用denyhosts操作我的/etc/hosts.allow只有一行
ALL: xxx.xxx.xxx.xxx
(xxx.xxx.xxx.xxx is my static home IP address)
/etc/hosts.deny 是:
ALL:ALL
我可以使用以下方式从家里连接:
telnet yyy.yyy.yyy.yyy 55555 or telnet yyy.yyy.yyy.yyy 8080
(yyy.yyy.yyy.yyy is for my VPS address)
但有:
telnet yyy.yyy.yyy.yyy 4000
抛出错误(“无法连接到远程主机:连接被拒绝”)。这似乎是防火墙问题。我很确定我没有更改 iptables,所以应该是 VPS 默认设置。非常感谢您的任何建议。当我发出 sudo ufw raw 时,我得到:
IPV4 (raw):
Chain INPUT (policy ACCEPT 21043 packets, 2314421 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 21077 packets, 2152970 bytes)
pkts bytes target prot opt in out source destination
Chain PREROUTING (policy ACCEPT 318 packets, 41345 bytes)
pkts bytes target prot opt in out source destination
Chain INPUT (policy ACCEPT 42 packets, 7128 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 347 packets, 24571 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 347 packets, 24571 bytes)
pkts bytes target prot opt in out source destination
Chain PREROUTING (policy ACCEPT 6241 packets, 691583 bytes)
pkts bytes target prot opt in out source destination
Chain INPUT (policy ACCEPT 5965 packets, 657366 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 5936 packets, 614188 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 10872 packets, 1131008 bytes)
pkts bytes target prot opt in out source destination
Chain PREROUTING (policy ACCEPT 6241 packets, 691583 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 5936 packets, 614188 bytes)
pkts bytes target prot opt in out source destination
IPV6:
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
答案1
您仅按照要求打开了 ipv6 端口 4000。
tcp6 0 0 vps.mdomai.com:4000 [::]:* LISTEN
您是否尝试过通过 vps.mdomai.com:4000 上的 ipv6 ?
如果你去的话会怎样:
netstat -an --inet | grep LISTEN
答案2
我现在提供我的问题的最终解决方案,因为我认为它突出了非专家(比如我)的一个重要问题。那就是/etc/hosts
文件条目。
我在我的 VPS 和家用电脑上使用相同的 Java 应用程序,它们应该通过 TCP 进行通信。我的家用电脑通过具有固定 IP 地址的 DSL 调制解调器访问互联网。当我尝试将消息从家里发送到 VPS 时,Java 报告超时(这仅意味着无法建立连接)。
我已经为我的计算机分配了本地网络内的固定地址(即 192.168.1.57),因为这似乎很合理。但我最终做出的关键更改是将我的计算机的互联网地址(即 192.168.1.57)注册到 Ubuntu 文件中/etc/hosts
;现在,在家用机器上运行的 Java 将其自己的“inet 地址”读取为 192.168.1.57,而不是 127.1.0.1,一切开始正常工作。我还需要为 VPS 提供我的 DSL 固定 IP 地址(203.xxx)和一个端口号,该端口号被端口转发到 192.168.1.57 机器。我希望这能对某些人有所帮助。