我正在使用 Ubuntu 11.10。我想了解有关 Ubuntu 防火墙的信息,因为我想知道这是否是我的应用程序无法正常运行的原因。
背景知识:
我编写了客户端-服务器应用程序,其中服务器使用 C 语言编写,客户端使用 Java 语言编写,当我从 Eclipse Indigo(编程编辑器和环境)运行它时,它运行良好,但是当我在终端中编译并运行客户端时,通信不起作用。服务器甚至无法识别客户端尝试连接到服务器。(使用 tcp 套接字)。有人告诉我防火墙可能会导致这些问题,所以我的问题应该是防火墙对应用程序和网络通信有什么影响???(我在本地主机 127.0.0.1 和端口 10000 上运行所有程序)。
这可能是一个有点复杂的问题,所以我将尝试通过与我的研究和努力寻找问题根源相关的一些小问题来更具体地说明它。
这是我在终端输入 iptables -L 时得到的结果:
链输入(策略接受) 目标 保护 优化 源 目标 链转发(策略接受) 目标 保护 优化 源 目标 链输出(策略接受) 目标 保护 优化 源 目标
1) 我查看了 ubuntu wiki,我认为应该有一些规则,所以我假设防火墙未配置并且已关闭。问题:我说得对吗?
2) 如果防火墙已关闭或未配置,是否会影响我计算机上的网络通信?(根据背景信息)
3) 如果防火墙已打开或配置不正确,我可以采取一些措施来正确设置它或将其关闭吗?4)如果我从第 3 点开始执行某些操作,是否会对我的安全(互联网上的病毒防护)产生不良影响?
注意:我对 Linux、网络、防火墙有一些理论信息,但是我对 Linux 配置和实际使用这些东西的经验并不多。
答案1
我假设你的服务器(在本例中也是你的客户端)位于互联网的 NAT 路由器后面。如果是这样的话,Linux 上的防火墙就不是严格需要。(可能有些不切实际的人会说一切都需要一个配置良好的防火墙。)
输出显示没有规则生效,因此默认允许所有规则通过。因此问题可能存在于其他地方。首先运行服务器程序,然后运行
lsof | grep IP
并查找程序的名称或端口 10000。如果在列表中找不到它,则说明程序无法将套接字绑定到端口。在这种情况下,您需要在 C 代码中进行更多错误检查。如果您确实看到了程序,请查看名为 wireshark 的程序。在运行客户端的同时运行 wireshark 将允许您查看客户端是否正确发送数据包。类似这样的过滤器(tcp.port == 10000)
应该至少产生一半的对话,具体取决于服务器的工作方式。
答案2
Ubuntu 的默认防火墙配置工具是 ufw。ufw 是为了简化 iptables 防火墙配置而开发的,它提供了一种用户友好的方式来创建基于 IPv4 或 IPv6 主机的防火墙。
ufw 默认是禁用的。摘自 ufw 手册页:
“ ufw 并非旨在通过其命令界面提供完整的防火墙功能,而是提供一种添加或删除简单规则的简便方法。它目前主要用于基于主机的防火墙。” Ubuntu 的默认防火墙配置工具是 ufw。ufw 旨在简化 iptables 防火墙配置,它提供了一种用户友好的方式来创建基于 IPv4 或 IPv6 主机的防火墙。
ufw 默认是禁用的。摘自 ufw 手册页:
“ ufw 并非旨在通过其命令界面提供完整的防火墙功能,而是提供一种添加或删除简单规则的简便方法。它目前主要用于基于主机的防火墙。”