我安装了 Lubuntu 14.04 LTS、vsftpd 和 lamp 堆栈(apache2 等)。局域网上一切正常。外部服务不确认连接尝试。我可以看到数据包到达机器tcpdump-i eth0 -A
,但机器没有发送相应的 ACK。sudo ufw status
报告“Status:inactive”。我没有在“iptables”中配置任何规则;iptables -L
输出为空白。
更令人困惑的是,我可以使用分配给该机器的外部 WAN IP 和网络内部的主机名,并且连接成功。如果在外部使用 WAN IP 和主机名,我会得到与 Ubuntu 不发送 ACK 数据包相同的行为。
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1494/mysqld
tcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN 1277/dnsmasq
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 984/vsftpd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 977/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 669/cupsd
tcp6 0 0 :::80 :::* LISTEN 2175/apache2
tcp6 0 0 :::22 :::* LISTEN 977/sshd
tcp6 0 0 ::1:631 :::* LISTEN 669/cupsd
不透露太多信息,LAN 是 A 类私有 10.xxx/22 网络。服务器有一个 NIC 分配了业务 VLAN 中的静态地址。服务器的另一个 NIC 有一个私有 C 类 192.168.xx/24 静态地址,位于 DMZ 中。
对两个内部地址进行 nmap 扫描显示相同的输出,如下所示:
Nmap scan report for 192.168.x.x/10.x.x.x
Host is up (0.0018s latency).
Not shown: 996 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
80/tcp open http
3306/tcp open mysql
Nmap done: 1 IP address (1 host up) scanned in 0.36 seconds
对外部 IP 的扫描显示所有端口均已“过滤”,这意味着 nmap 未收到 SYN/ACK 或 ACK 响应。
Starting Nmap 5.21 ( http://nmap.org ) at 2015-02-10 06:28 UTC
Host is up.
PORT STATE SERVICE
21/tcp filtered ftp
22/tcp filtered ssh
80/tcp filtered http
3306/tcp filtered mysql
答案1
我最终弄清楚了。这不是直接的防火墙问题。我有两个网卡,一个用于 LAN,另一个用于 DMZ,WAN IP 被 NAT 到 DMZ。默认路由是通过 LAN 的。当从互联网接收数据包时,服务器尝试通过 LAN 上的默认路由进行响应。断开与 LAN 的连接使服务能够通过互联网进行通信。
我仍然需要私人局域网通信,但我将稍后解决这个问题。