Нужно ли Iptables UFW для работы?
Я попытался безуспешно открыть 4447 на моем сервере Ubuntu 12.10, используя iptables.
Сделано:
server:~# iptables -A INPUT -p tcp --dport 4447 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
После этого iptables -L:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:4447 state NEW,RELATED,ESTABLISHED
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Но nmap не показывает мне порт 4447:
server:~# nmap -sV localhost
Starting Nmap 6.00 ( http://nmap.org ) at 2013-04-26 12:54 BRT
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00078s latency).
Not shown: 991 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 6.0p1 Debian 3ubuntu1 (protocol 2.0)
139/tcp open netbios-ssn Samba smbd 3.X (workgroup: WORKGROUP)
445/tcp open netbios-ssn Samba smbd 3.X (workgroup: WORKGROUP)
3306/tcp open mysql MySQL 5.5.31-0ubuntu0.12.10.1
5432/tcp open postgresql PostgreSQL DB
8080/tcp open http Apache httpd 2.2.22 ((Ubuntu))
Может кто-нибудь помочь мне это исправить?
Я проделал те же шаги на другом сервере (CentOS 6), и он сразу сработал
Заранее спасибо
Убедитесь, что на самом деле что-то прослушивает порт 4447 / tcp. В противном случае, если нет, nmap не покажет этот порт как открытый.
Вы можете проверить это с помощью:
sudo netstat -tpln | grep 4447
Если вы не получаете название программы на выходе, на этом порту ничего не прослушивается.
ОБНОВЛЕНИЕ:
После разъяснения ОП похоже, что цель состоит в том, чтобы перенаправить входящие TCP-соединения на определенный порт на альтернативный порт. Например, перенаправление входящих соединений с 4447 / tcp на 3306 / tcp, где MySQL прослушивает.
Предполагая, что ваш сервер имеет IP-адрес 10.0.0.1 и MySQL прослушивает его по 3306 / tcp, способ сделать то, что вам нужно, это:
iptables -t nat -A PREROUTING -p tcp --dport 4447 -j DNAT --to-destination 10.0.0.1:3306
iptables -t nat -A OUTPUT -p tcp -d 127.0.0.1 --dport 4447 -j REDIRECT --to-ports 3306
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
iptables -A INPUT -p tcp --dport 4447 -j ACCEPT