我們很多時候在liunx系統上安裝了web服務應用後(如tomcat、apache等),需要讓其它電腦能訪問到該應用,而linux系統(centos、redhat等)的防火牆是默認只對外開放了22端口。
linux系統的端口設置在/etc/sysconfig/iptables文件中配置。使用編輯器打開該文件。內容如下:
- # Firewall configuration written by system-config-firewall
- # Manual customization of this file is not recommended.
- *filter
- :INPUT ACCEPT [0:0]
- :FORWARD ACCEPT [0:0]
- :OUTPUT ACCEPT [0:0]
- -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
- -A INPUT -p icmp -j ACCEPT
- -A INPUT -i lo -j ACCEPT
- -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
- -A INPUT -j REJECT --reject-with icmp-host-prohibited
- -A FORWARD -j REJECT --reject-with icmp-host-prohibited
- COMMIT
網上說的是如下code
- -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3001 -j ACCEPT
我在CentOS6.5中測試上面的代碼,不能成功。
如果我們需要對外開放80端口,則上面文件中添加如下code
- -A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
同時還需要注意的是,這段代碼需要加入到
- -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
之後,否則端口也不能打開。最後的配如下:
- # Firewall configuration written by system-config-firewall
- # Manual customization of this file is not recommended.
- *filter
- :INPUT ACCEPT [0:0]
- :FORWARD ACCEPT [0:0]
- :OUTPUT ACCEPT [0:0]
- -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
- -A INPUT -p icmp -j ACCEPT
- -A INPUT -i lo -j ACCEPT
- -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
- -A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
- -A INPUT -j REJECT --reject-with icmp-host-prohibited
- -A FORWARD -j REJECT --reject-with icmp-host-prohibited
- COMMIT
編輯上面的文件 需要提供su權限.
保存上面的文件後,在終端運行如下命令:更新防火牆配置
- service iptables restart
下面這個命令可以看到開放的端口
- iptables -L -n
下面的命令可以關閉/打開防火牆(需要重啓系統)
- 開啓: chkconfig iptables on
- 關閉: chkconfig iptables off
下面的代碼可以啓動和停止防火牆(立即生效,重啓後失效)
- 開啓: service iptables start
- 關閉: service iptables stop