Centos

APF 阻止出站 HTTP 流量 - 出站過濾器已關閉

  • November 20, 2013

我在 OpenVZ 容器中使用 CentOS 6.4。我正在嘗試將 APF 9.7-2 配置為允許入站 SSH 和 HTTP 流量(僅)以及出站 HTTP 和 HTTPS 流量(如果其他出站工作則不要太在意)。我的 conf.apf 文件設置為預設值,但有以下例外:

IFACE_IN="venet0" 
IFACE_OUT="venet0"
SET_MONOKERN="1"
SYSCTL_CONNTRACK="131072"
IG_TCP_CPORTS="22,80"
LOG_DROP="1"

(請注意,我沒有啟用傳出過濾;EGF 仍然等於 0。)

當我啟動 APF 時,我發現所有出站連接都被阻止了。

[root@beta ~]# wget http://www.google.com
--2013-11-19 17:21:02--  http://www.google.com/
Resolving www.google.com... 173.194.115.20, 173.194.115.16, 173.194.115.19, ...
Connecting to www.google.com|173.194.115.20|:80... 

這沒有完成。我可以看到流量被入站規則阻止:(我用 1.2.3.4 替換了我的伺服器 IP)

[root@beta ~]# grep "173.194" /var/log/messages | tail
Nov 19 17:21:02 beta kernel: ** IN_TCP DROP ** IN=venet0 OUT= MAC= SRC=173.194.115.20 DST=1.2.3.4 LEN=48 TOS=0x08 PREC=0x00 TTL=57 ID=18487 PROTO=TCP SPT=80 DPT=57092 WINDOW=42900 RES=0x00 ACK SYN URGP=0 
Nov 19 17:21:02 beta kernel: ** IN_TCP DROP ** IN=venet0 OUT= MAC= SRC=173.194.115.20 DST=1.2.3.4 LEN=48 TOS=0x08 PREC=0x00 TTL=57 ID=18488 PROTO=TCP SPT=80 DPT=57092 WINDOW=42900 RES=0x00 ACK SYN URGP=0 
Nov 19 17:21:03 beta kernel: ** IN_TCP DROP ** IN=venet0 OUT= MAC= SRC=173.194.115.20 DST=1.2.3.4 LEN=48 TOS=0x08 PREC=0x00 TTL=57 ID=18489 PROTO=TCP SPT=80 DPT=57092 WINDOW=42900 RES=0x00 ACK SYN URGP=0 
Nov 19 17:21:04 beta kernel: ** IN_TCP DROP ** IN=venet0 OUT= MAC= SRC=173.194.115.20 DST=1.2.3.4 LEN=48 TOS=0x08 PREC=0x00 TTL=57 ID=18490 PROTO=TCP SPT=80 DPT=57092 WINDOW=42900 RES=0x00 ACK SYN URGP=0 
Nov 19 17:21:05 beta kernel: ** IN_TCP DROP ** IN=venet0 OUT= MAC= SRC=173.194.115.20 DST=1.2.3.4 LEN=48 TOS=0x08 PREC=0x00 TTL=57 ID=18491 PROTO=TCP SPT=80 DPT=57092 WINDOW=42900 RES=0x00 ACK SYN URGP=0 
Nov 19 17:21:07 beta kernel: ** IN_TCP DROP ** IN=venet0 OUT= MAC= SRC=173.194.115.20 DST=1.2.3.4 LEN=48 TOS=0x08 PREC=0x00 TTL=57 ID=18492 PROTO=TCP SPT=80 DPT=57092 WINDOW=42900 RES=0x00 ACK SYN URGP=0 
Nov 19 17:21:11 beta kernel: ** IN_TCP DROP ** IN=venet0 OUT= MAC= SRC=173.194.115.20 DST=1.2.3.4 LEN=48 TOS=0x08 PREC=0x00 TTL=57 ID=18493 PROTO=TCP SPT=80 DPT=57092 WINDOW=42900 RES=0x00 ACK SYN URGP=0 

DPT 的值隨每個請求而變化。

我已經確認 APF 關閉時出站 HTTP 和 HTTPS 工作。我需要做什麼才能使其與 APF 一起工作?

我發現了問題。硬體節點上的容器配置需要啟用正確的 iptables 模組。我伺服器上容器的預設設置是:

IPTABLES="ipt_REJECT ipt_tos ipt_limit ipt_multiport iptable_filter iptable_mangle ipt_TCPMSS ipt_tcpmss ipt_ttl ipt_length"

我已經在我的容器配置中覆蓋了它(硬體上的 /etc/vz/conf/CONTAINERNUMBER.conf)

IPTABLES="iptable_filter iptable_mangle ipt_limit ipt_multiport ipt_tos ipt_TOS ipt_REJECT ipt_TCPMSS ipt_tcpmss ipt_ttl ipt_LOG ipt_length ip_conntrack ip_conntrack_ftp ip_conntrack_irc ipt_conntrack ipt_state  ipt_helper  iptable_nat ip_nat_ftp ip_nat_irc ipt_REDIRECT"

我不確定我到底需要哪些,但是通過這種配置,入口和出口過濾器都可以按預期工作。

我在網上的其他地方看到過這個技巧,但它似乎暗示你需要設置 IPTABLES 才能讓 iptables 正常工作,而在我的情況下,iptables 可以在我沒有設置的情況下正常工作(儘管有問題)。

引用自:https://serverfault.com/questions/556047