我的服务器无法通过 ssh 连接到任何外部设备。我也无法跟踪到其中任何一台。同一网络上的机器通过 SSH 和跟踪路由工作正常。这台机器已连接到互联网,我可以正常获取和安装软件包。我也可以通过 SSH 连接到这台机器。只是由于某种原因,传出的 SSH/跟踪路由不起作用。
SSH:
Connection refused
administrator@nrj-linux-staging:~$ ssh [email protected]
跟踪路由:
traceroute to testing2.xxxxxxxxxxxxxxxxxxx.com (xxx.xxx.xxx.xxx), 30 hops max, 60 byte packets
1 * * *
2 * * *
3 * * *
4 * * *
5 * * *
6 * * *
7 * * *
8 * * *
9 * * *
10 * * *
11 * *
traceroute to www.google.com (74.125.227.50), 30 hops max, 60 byte packets
1 * * *
2 * * *
3 * * *
4 * * *
5 * * *
6 * * *
7 * * *
8 * * *
9 * * *
10 * * *
11 * * *
12 * * *
13 * * *
14 * * *
15 * * *
16 * * *
网络状态:
administrator@nrj-linux-staging:~$ netstat -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost:mysql *:* LISTEN
tcp 0 0 localhost:6379 *:* LISTEN
tcp 0 0 10.0.0.42:http-alt *:* LISTEN
tcp 0 0 *:ftp *:* LISTEN
tcp 0 0 *:ssh *:* LISTEN
tcp 0 0 *:5984 *:* LISTEN
tcp6 0 0 [::]:47439 [::]:* LISTEN
tcp6 0 0 [::]:tproxy [::]:* LISTEN
tcp6 0 0 [::]:ssh [::]:* LISTEN
tcp6 0 0 [::]:51774 [::]:* LISTEN
udp6 0 0 [::]:33848 [::]:*
udp6 0 0 [::]:mdns [::]:*
Active UNIX domain sockets (only servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 6938 @/com/ubuntu/upstart
unix 2 [ ACC ] SEQPACKET LISTENING 7517 /run/udev/control
unix 2 [ ACC ] STREAM LISTENING 7527 /var/run/dbus/system_bus_socket
unix 2 [ ACC ] STREAM LISTENING 7850 /var/run/mysqld/mysqld.sock
unix 2 [ ACC ] STREAM LISTENING 10483 /var/run/acpid.socket
unix 2 [ ACC ] STREAM LISTENING 7889 /home/gitlab/gitlab//tmp/sockets/gitlab.socket
路由表:
administrator@nrj-linux-staging:~$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.0.0.225 0.0.0.0 UG 100 0 0 eth0
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
我可以 ping 通网关:
administrator@nrj-linux-staging:~$ ping 10.0.0.225
PING 10.0.0.225 (10.0.0.225) 56(84) bytes of data.
64 bytes from 10.0.0.225: icmp_req=1 ttl=255 time=0.354 ms
64 bytes from 10.0.0.225: icmp_req=2 ttl=255 time=0.310 ms
64 bytes from 10.0.0.225: icmp_req=3 ttl=255 time=0.314 ms
64 bytes from 10.0.0.225: icmp_req=4 ttl=255 time=0.325 ms
64 bytes from 10.0.0.225: icmp_req=5 ttl=255 time=0.431 ms
此盒子具有相同的接口配置。还值得注意的是,同一网络上的其他盒子显然也存在相同的问题。
DNS 指向网关。
此网络上的防火墙设置为允许安全 shell 传出、ip 传出等。我不确定还需要什么才能使其正常工作。我可以为您提供你们需要的任何其他东西。我正在通过 Windows 框使用带有 ADSM 实用程序的 cisco 防火墙。感谢您的帮助
目前的 NAT 配置如下:
我们有两个站点,我们将其称为站点 a 和站点 b。
站点 b 位于我们开发人员工作的大楼内。站点 A 是生产站点,包含防火墙。我们产品的根域名指向服务器“A”的静态全局 IP。在防火墙上,当检测到 ssh 服务上的流量传入服务器“A”的地址时,它会对其进行转换以保留原始源并将目标设置为服务器“B”,这是我需要能够将 shell 安全地返回站点“B”的 Linux 机器。还有一个 NAT 规则,它将源为服务器“b”的传出数据包转换为源为服务器“a”的数据包并保留原始目标。
再次感谢您的帮助
答案1
如果所有子网都无法出去,则可能是防火墙问题。由于您使用的是 ASDM,因此您有一个 ASA 防火墙。检查接口上的访问列表,其中包含 10.0.0.225(假设这是您的 ASA),并确保已允许 ICMP 和 SSH。请记住:ASA 规则是自动反射的,这意味着任何规则只需要在其启动的方向上设置(在您的例子中是从 10.0.0.0/24 到任何,协议 ssh 和 ICMP)。如果您想检查 ASA 是否应该转发数据包,您可以使用packet tracer
ASDM 中的工具。两个提示:
- 确保选择正确的启动界面(我总是忘记)
- 确保取消选中
Show Animation
,因为它所做的只是显示动画并让您等待更长时间。