不久前,我想将 Ubuntu 服务器上的所有端口 80 流量重定向到端口 3000 以用于 Rails 应用程序。除了使用 iptables,我还在 Google 上搜索并找到了其他方法(我无法想象为什么我没有先找到 iptables),但现在我记不起我是怎么做到的!有没有办法跟踪正在发生的事情以便我可以将其关闭?iptables 中没有规则,流量永远不会到达 apache。
谢谢!
更新:
不,通常你只需要加载新规则集。请参阅:askubuntu.com/q/161551/266。但不要绝望。Iptables 可能会令人困惑。– Stefan Lasiewski
答案1
键入以下命令:
# netstat -tulpn | grep :80
它应该输出类似这个例子的内容:
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 1138/mysqld
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 850/portmap
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1607/apache2
tcp 0 0 0.0.0.0:55091 0.0.0.0:* LISTEN 910/rpc.statd
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 1467/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 992/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1565/cupsd
tcp 0 0 0.0.0.0:7000 0.0.0.0:* LISTEN 3813/transmission
tcp6 0 0 :::22 :::* LISTEN 992/sshd
tcp6 0 0 ::1:631 :::* LISTEN 1565/cupsd
tcp6 0 0 :::7000 :::* LISTEN 3813/transmission
udp 0 0 0.0.0.0:111 0.0.0.0:* 850/portmap
udp 0 0 0.0.0.0:662 0.0.0.0:* 910/rpc.statd
udp 0 0 192.168.122.1:53 0.0.0.0:* 1467/dnsmasq
udp 0 0 0.0.0.0:67 0.0.0.0:* 1467/dnsmasq
udp 0 0 0.0.0.0:68 0.0.0.0:* 3697/dhclient
udp 0 0 0.0.0.0:7000 0.0.0.0:* 3813/transmission
udp 0 0 0.0.0.0:54746 0.0.0.0:* 910/rpc.statd
如上所示,第一个条目 TCP 端口已由进程3306
打开。只需查看端口 80 的条目,并查看该端口上运行的服务和进程 ID。然后,您可以使用 进行验证,输入以下命令:mysqld
PID # 1138
/proc
# ls -l /proc/1138/exe
您将1138
使用端口 80 上的任何 PID 进行替换。
它应该输出类似这样的内容:
lrwxrwxrwx 1 root root 0 2010-10-29 10:20 /proc/1138/exe -> /usr/sbin/mysqld
这将为您提供在其后面运行的程序的位置。
如果您使用 SSH 进行端口转发,那么您需要用文本编辑器重新配置位于此处的 sshd_config 文件...vim 或 gedit 就可以了:
sudo vi /etc/ssh/sshd_config
sudo gedit /etc/ssh/sshd_config
在此文件中,您应该会看到类似这样的条目,只需将其注释掉或更改为否即可。要将其注释掉,请#
在其前面添加一个符号,然后保存并关闭:
# Port forwarding
AllowTcpForwarding yes
答案2
要找出哪些进程正在监听端口 80:
sudo netstat -tnlp | grep -w 80
希望从输出中可以明显看出它是什么。