我正在尝试在我的Debian系统中打开iptables中的端口3306以允许访问MySQL服务器。我输入了这个命令:
root@debian:/# sudo iptables -A INPUT -p tcp --dport 3306 ACCEPT
root@debian:/# iptables-save
我输入了新的连接,它已保存在iptables中,因为我可以看到iptables列表中的新规则由iptables-save命令生成。
但是,这个debian系统在Windows 7上的VM上运行,我无法从Windows远程登录到此端口。不确定我应该在哪里检查这个问题的解决方案。
答案 0 :(得分:44)
关于您的命令行:
root@debian:/# sudo iptables -A INPUT -p tcp --dport 3306 --jump ACCEPT
root@debian:/# iptables-save
您已经过root
身份验证,因此sudo
是多余的。
您在-j
参数之前缺少--jump
或ACCEPT
(只是输入错误并且您正确插入它)。
关于你的问题:
如果您在问题中指出正确插入iptables
规则,则问题可能与您正在使用的虚拟机管理程序(虚拟机提供商)有关。
如果您提供管理程序名称(VirtualBox,VMWare?),我可以进一步指导您,但这里有一些您可以先尝试的建议:
检查您的vmachine网络设置并:
如果设置为NAT,则无法从基本机器连接到vmachine。
如果设置为Hosted,则必须首先配置其网络设置,通常是为它们提供192.168.56.0/24范围内的IP,因为这是管理程序用于此目的的默认值。 / p>
如果设置为Bridge,则与Hosted相同,但只要IP范围对您的配置有意义,您就可以配置它。
希望这有帮助。
答案 1 :(得分:9)
(我认为你通过完全放弃防火墙(iptables -P INPUT ACCEPT; iptables -P OUTPUT ACCEPT; iptables -F)得出结论是iptables问题,并确认你可以从你的服务器连接到MySQL服务器Windows框?)
INPUT表中的某些先前规则可能是拒绝或丢弃数据包。您可以通过在顶部插入新规则来解决这个问题,尽管您可能希望查看现有规则以确定这是否合理:
iptables -I INPUT 1 -p tcp --dport 3306 -j ACCEPT
请注意,iptables-save不会持久保存新规则(即重新启动) - 您需要为此找出其他内容。我通常的路径是将iptables-save输出存储在一个文件(/etc/network/iptables.rules或类似文件)中,然后在/ etc / network / interfaces中加载一个pre-up语句。