Некоторое время назад я хотел перенаправить весь трафик порта 80 на сервере Ubuntu на порт 3000 для приложения Rails. Вместо того, чтобы просто использовать iptables, я погуглил и нашел другой способ сделать это (я не могу представить, почему я сначала не нашел iptables), но теперь я не могу вспомнить, как я это сделал! Есть ли способ отследить, что происходит, чтобы я мог его выключить? В iptables нет правил, и трафик никогда не попадает в apache.
Спасибо!
ОБНОВИТЬ:
Нет, обычно вам просто нужно загрузить новый набор правил. См: askubuntu.com/q/161551/266. Но не отчаивайтесь. Iptables может сбивать с толку. - Стефан Ласевски
Введите следующую команду:
# 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
, был открыт mysqld
процесс, имеющий PID # 1138
. Просто посмотрите на свою запись для порта 80 и посмотрите, какая служба и идентификатор процесса на нем запущены. Вы можете проверить это, используя /proc
, введите команду:
# ls -l /proc/1138/exe
Вы замените 1138
с любым PID, который находится на порту 80 для вас.
Он должен вывести что-то вроде этого:
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
Чтобы узнать, какой процесс прослушивает порт 80:
sudo netstat -tnlp | grep -w 80
Надеюсь, из вывода должно быть очевидно, что это такое.