RHEL 及 CentOS 默认的防火墙会默认限制埠号对外开放, 如果安装一些服务器 (例如 Apache, NFS, Samba 等), 在本机测试正常, 但不能在外部连接, 可能是给防火墙封锁了, 那便需要在防火墙开启相应的埠号 (如 Apache 要开启 80 或 443)。
在 RHEL 6 及 CentOS 6, 默认是使用 iptables, 而在 RHEL 7 开始改用了 firewalld 作为防火墙, 以下是两者开启埠号的方法。
RHEL 7 / CentOS 7 开启埠号
例如我想永久开启 80 埠号, 在 CentOS 7 输入以下指令:
$ sudo firewall-cmd –zone=public –add-port=80/tcp –permanent
$ sudo firewall-cmd –reload
$ sudo firewall-cmd –reload
如果上面指令没有加上 “–permanent” 参数, 下次重新开机后设定便会失效。
然后检查设定是否生效:
$ sudo firewall-cmd –list-all
输出类似这样:
|
1 2 3 4 5 6 7 8 9 |
public (default) interfaces: sources: services: dhcpv6-client ssh ports: 80/tcp masquerade: no forward-ports: icmp-blocks: rich rules: |
在 “ports” 一行, 可以看到 “80/tcp”, 那便表示埠号 80 的 tcp 连线对外开放。
RHEL 6 / CentOS 6 开启埠号
在 CentOS 6 是使用 iptables 作为防火墙, 以下同样是开启埠号 80 作为例子:
$ sudo iptables -I INPUT -p tcp -m tcp –dport 80 -j ACCEPT
$ sudo service iptables save
$ sudo service iptables save
上面第一行指令是开启埠号 80 的连线, 而第二行指令则是将设定储存, 让下次开机保留这次的设定。