我有 ubuntu 12.04,我无法在防火墙中允许某些端口。所以我基本上说我会允许一切,但它仍然不起作用。请帮忙。从其他机器对这台机器进行 nmap 操作时显示:
$ nmap host_name
Not shown: 996 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
139/tcp open netbios-ssn
445/tcp open microsoft-ds
这是来自同一台机器的 nmap
$ nmap localhost
Starting Nmap 5.21 ( http://nmap.org ) at 2014-01-21 11:14 PST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000080s latency).
Not shown: 991 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
53/tcp open domain
80/tcp open http
139/tcp open netbios-ssn
445/tcp open microsoft-ds
631/tcp open ipp
3306/tcp open mysql
8000/tcp open http-alt
Nmap done: 1 IP address (1 host up) scanned in 0.04 seconds
我想打开端口 8000,这是 iptables 的输出。
# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
mmoghimi@titan:~$ sudo netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 14842/mysqld
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 982/smbd
tcp 0 0 127.0.0.1:39346 0.0.0.0:* LISTEN 3405/GoogleTalkPlug
tcp 0 0 127.0.0.1:50995 0.0.0.0:* LISTEN 3405/GoogleTalkPlug
tcp 0 0 127.0.0.1:5939 0.0.0.0:* LISTEN 2412/teamviewerd
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 2429/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 985/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1267/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1748/exim4
tcp 0 0 0.0.0.0:17500 0.0.0.0:* LISTEN 2885/dropbox
tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 982/smbd
tcp 0 0 127.0.0.1:8000 0.0.0.0:* LISTEN 4134/python
tcp6 0 0 :::139 :::* LISTEN 982/smbd
tcp6 0 0 :::80 :::* LISTEN 1832/apache2
tcp6 0 0 :::22 :::* LISTEN 985/sshd
tcp6 0 0 ::1:631 :::* LISTEN 1267/cupsd
tcp6 0 0 ::1:25 :::* LISTEN 1748/exim4
tcp6 0 0 :::445 :::* LISTEN 982/smbd
udp 0 0 127.0.0.1:53 0.0.0.0:* 2429/dnsmasq
udp 0 0 0.0.0.0:68 0.0.0.0:* 2403/dhclient
udp 0 0 128.54.44.214:123 0.0.0.0:* 3430/ntpd
udp 0 0 MYIP:123 0.0.0.0:* 3430/ntpd
udp 0 0 127.0.0.1:123 0.0.0.0:* 3430/ntpd
udp 0 0 0.0.0.0:123 0.0.0.0:* 3430/ntpd
udp 0 0 137.110.255.255:137 0.0.0.0:* 2602/nmbd
udp 0 0 MYIP:137 0.0.0.0:* 2602/nmbd
udp 0 0 128.54.47.255:137 0.0.0.0:* 2602/nmbd
udp 0 0 128.54.44.214:137 0.0.0.0:* 2602/nmbd
udp 0 0 0.0.0.0:137 0.0.0.0:* 2602/nmbd
udp 0 0 137.110.255.255:138 0.0.0.0:* 2602/nmbd
udp 0 0 MYIP:138 0.0.0.0:* 2602/nmbd
udp 0 0 128.54.47.255:138 0.0.0.0:* 2602/nmbd
udp 0 0 128.54.44.214:138 0.0.0.0:* 2602/nmbd
udp 0 0 0.0.0.0:138 0.0.0.0:* 2602/nmbd
udp 0 0 0.0.0.0:17500 0.0.0.0:* 2885/dropbox
udp 0 0 0.0.0.0:36889 0.0.0.0:* 1356/avahi-daemon:
udp 0 0 0.0.0.0:5353 0.0.0.0:* 1356/avahi-daemon:
udp6 0 0 ::1:123 :::* 3430/ntpd
udp6 0 0 fe80::fab1:56ff:fe9:123 :::* 3430/ntpd
udp6 0 0 fe80::3e77:e6ff:fe6:123 :::* 3430/ntpd
udp6 0 0 :::123 :::* 3430/ntpd
udp6 0 0 :::33792 :::* 1356/avahi-daemon:
udp6 0 0 :::5353 :::* 1356/avahi-daemon:
答案1
您的iptables
输出显示没有端口被阻塞。
所以问题是:是否有任何东西在监听端口 8000?如果端口上没有任何内容在监听,但该端口未被防火墙阻止,nmap
则会将其报告为closed
。来自这里:
关闭
已关闭的端口是可访问的(它接收并响应 Nmap 探测数据包),但没有应用程序监听它。它们有助于显示主机在 IP 地址上处于启动状态(主机发现或 ping 扫描),并可作为操作系统检测的一部分。由于已关闭的端口是可访问的,因此可能值得稍后扫描,以防某些端口打开。管理员可能需要考虑使用防火墙阻止此类端口。然后它们将出现在过滤状态,下面将讨论。
因此nmap
报告:"996 closed ports"
实际上说这些端口没有被防火墙阻止,但没有程序在监听它们。nmap
报告阻止的端口如下filtered
:
已过滤
Nmap 无法确定端口是否打开,因为数据包过滤会阻止其探测到达该端口。过滤可能来自专用防火墙设备、路由器规则或基于主机的防火墙软件。...
因此,如果你将应用程序置于端口 8000 上的侦听状态,它很可能会出现在 的输出中。如果你在尝试打开端口的机器上运行或,nmap
就可以做到这一点,这将使 HTTP 服务器侦听端口 8000。然后再次运行以扫描机器。python3 -m http.server
python -m SimpleHTTPServer
nmap
更新:
您的netstat
输出有这一行:
tcp 0 0 127.0.0.1:8000 0.0.0.0:* LISTEN 4134/python
这意味着你的 Python 程序只监听本地主机 (127.0.0.1),因此只能从本地主机访问,而不能从外部访问。程序必须监听你的网络适配器的 IP 或通用的 0.0.0.0 IP。问题就是我上面写的,没有程序监听 8000 端口(来自外部世界),所以nmap
说它已关闭。
答案2
在 Ubuntu 中启用端口
sudo ufw allow <port_nr>
例如允许 ssh
sudo ufw allow 22
sudo ufw enable
就是这样