Iptables 需要 ufw 才能工作吗?
我尝试使用 iptables 在我的 ubuntu 服务器 12.10 上打开 4447,但没有成功。
做过:
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)上做了同样的步骤,一目了然
提前致谢
答案1
确保确实有程序在监听端口 4447/tcp。否则,如果没有,nmap 不会显示此端口为打开状态。
您可以使用以下方法检查:
sudo netstat -tpln | grep 4447
如果您在输出中没有看到程序名称,则表示该端口上没有任何内容在监听。
更新:
经过 OP 的澄清,看起来目标是将传入的 TCP 连接重定向到某个端口到备用端口。例如将传入的 4447/tcp 连接重定向到 MySQL 正在监听的 3306/tcp。
假设你的服务器的 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