![在 CentOS 上部署 Tomcat 时防火墙问题](https://linux22.com/image/695452/%E5%9C%A8%20CentOS%20%E4%B8%8A%E9%83%A8%E7%BD%B2%20Tomcat%20%E6%97%B6%E9%98%B2%E7%81%AB%E5%A2%99%E9%97%AE%E9%A2%98.png)
我正在尝试在 CentOS 环境中部署 Tomcat 服务器,但它没有接收请求。
执行startup.sh正常,日志显示tomcat正在运行
16-Dec-2016 13:36:58.440 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [http-nio-8080]
16-Dec-2016 13:36:58.444 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [ajp-nio-8009]
16-Dec-2016 13:36:58.445 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 14803 ms
运行 netstat 检查监听端口时,显示正在监听
$netstat -atnp|grep LISTEN
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 3321/java
为了跳过防火墙,我在 iptables 添加了自定义规则。
$iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:50060
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:50030
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:50105
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:50090
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:50075
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:50070
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:123
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
我把规则添加到最上面,以避免在一般拒绝之后添加的错误。Iptables 处于活动状态,因为服务返回以下内容:
$service iptables status
Redirecting to /bin/systemctl status iptables.service
● iptables.service - IPv4 firewall with iptables
Loaded: loaded (/usr/lib/systemd/system/iptables.service; enabled; vendor preset: disabled)
Active: active (exited) since Fri 2016-12-16 13:09:47 EST; 1h 45min ago
Main PID: 728 (code=exited, status=0/SUCCESS)
CGroup: /system.slice/iptables.service
但是,请求没有到达 Tomcat,因为本地主机访问日志是空的。
Firewalld 不会干扰连接,因为它声称已被禁用:
$firewall-cmd --state
not running
我是否遗漏了其他防火墙设置?
答案1
我认为这里发生的事情是你们在混合你们的技术。
尝试:
服务 iptables 停止
看来你还是会得到同样的回应
如果你这样做,那么你需要删除 iptables 或firewalld