![服务器可以从外部访问,但自身无法访问外部](https://linux22.com/image/635748/%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%8F%AF%E4%BB%A5%E4%BB%8E%E5%A4%96%E9%83%A8%E8%AE%BF%E9%97%AE%EF%BC%8C%E4%BD%86%E8%87%AA%E8%BA%AB%E6%97%A0%E6%B3%95%E8%AE%BF%E9%97%AE%E5%A4%96%E9%83%A8.png)
我有一台运行最新版 Ubuntu 的服务器,其中安装了 openvpn 和 apache2。该服务器位于路由器后面的 192.168.1.* LAN 中,路由器可以访问互联网。
本地网络内的机器可以 ping 并访问我的 Ubuntu 服务器上的网络服务器。
互联网上的机器可以 ping 并访问我的 Ubuntu 服务器上的网络服务器。
Ubuntu 服务器本身无法通过命令行 ping 任何内容(内部网络/路由器/互联网中的其他机器)。此外,HTTP/apt-get、DNS 查找等也不起作用。
以下是 iptables:
carl@Server:~/security$ sudo iptables -L -n 链输入(策略接受) 目标 保护 优化 源 目标 链转发(策略接受) 目标 保护 优化 源 目标 链输出(策略接受) 目标 保护 优化 源 目标
路线:
carl@Server:~$ route -n 内核 IP 路由表 目标网关 Genmask 标志 指标参考使用 Iface 0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0 10.8.0.0 10.8.0.2 255.255.255.0 UG 0 0 0 tun0 10.8.0.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
carl@Server:~$ cat /etc/resolv.conf #... 名称服务器 192.168.1.1 搜索本地域名
另外,禁用/停止 openvpn 并不能解决问题,但会删除内核路由表中的两个 tun0 路由条目。(所以它们不是原因)
答案1
听起来 DNS 可能是问题所在。检查 /etc/resolv.conf 是否包含名称服务器行,例如
nameserver 8.8.8.8
您也可以尝试 ping 8.8.8.8 以查看您是否可以看到该 DNS 服务器,因为只要您的上游设备没有阻止 ping,它就会响应。
答案2
我并没有真正解决这个问题,但这是路由器的问题。
之前我告诉路由器始终将 IP 192.168.1.100 设置为服务器。从那时起,服务器就获得了这个 IP,但互联网停止工作。(我后来注意到了,但我认为这就是原因)。
现在我连接了第二个网络接口,停用了第一个网络接口,然后一切正常。
为了测试,我再次删除了第二个网络接口,更改了第一个网络接口的 MAC 地址,但仍然不起作用。
作为下一个测试步骤,我再次添加了两个 eth,将一个网络适配器连接到 eth0,将原来无法正常工作的网络适配器连接到 eth1。测试 - 无法正常工作。然后,我停用了 eth0 上的新网络适配器(sudo ifdown eth0),然后旧网络适配器是唯一的网络适配器,但现在在 eth1 而不是 eth0 上运行。
现在一切都运行正常。(顺便说一下,网络接口也获得了一个新的 IP 地址,当它一直是 eth0 时,它不会这样做……)
我不知道这里发生了什么事。有人知道吗?