Linux
防火牆設置華為 4G 與 DMZ
網路拓撲結構:
ISP1 | | Alternative ISP 4G | | | Huawei 4G with DMZ | | | to 192.168.2.1 | | | LAN IP: 192.168.2.254| | | Public IP: 2.2.2.2 | ---------------------+ +----------------------+ | +----Main server---+ | +------------eth0--| WWW, MAIL, SSH |-eth1-----------+ Public IP:1.1.1.1| DNS, etc... | +------------------+ Local IP: 192.168.2.1 eth2| GW: 192.168.2.254 10.10.10.10| | [local 1] ---+--- [local 2] .... [local n]
在試圖弄清楚如何使用 iptables 在主伺服器上將流量從/到備用 ISP 路由時,我完全陷入了死胡同。
主伺服器上的服務必須可以從外部訪問,也可以從本地網路訪問公共 IP。
ISP1 一切正常。我已經設置了 NAT 和 MASQUERADING,但我似乎無法讓替代 ISP 工作。
在備用 ISP 處,DMZ 切換處於活動狀態並指向在主伺服器上配置為 eth1 IP 的 192.168.2.1。
我是否需要偽裝通過 eth1 發出的所有內容,使其看起來像來自 2.2.2.2 或 4G 路由器會為我做這件事?
我知道我在這裡不懂很多東西,所以很抱歉提前提出愚蠢的問題……
看起來問題確實是因為數據包通過一個介面進入並通過另一個介面離開。
感謝@NickW 的提示!
我所做的是創建了兩個路由表(每個 ISP 一個),
# ip route show table isp1 default via 1.1.1.254 dev eth0 10.10.10.0/24 dev eth2 scope link src 10.10.10.10 127.0.0.0/8 dev lo scope link 1.1.1.0/24 dev eth0 scope link src 1.1.1.1 # ip route show table isp2 default via 192.168.2.254 dev eth1 10.10.10.0/24 dev eth2 scope link src 10.10.10.10 127.0.0.0/8 dev lo scope link 192.168.2.0/24 dev eth1 scope link src 192.168.2.1
創建了兩條規則,以便傳入的數據包知道下一步該做什麼
# ip rule 0: from all lookup local 32764: from 192.168.2.1 lookup isp2 32765: from 1.1.1.1 lookup isp1 32766: from all lookup main 32767: from all lookup default
並設置兩個 ISP 路由器之間的預設路由操作:
# ip route default nexthop via 1.1.1.254 dev eth0 weight 1 nexthop via 192.168.2.254 dev eth1 weight 1 10.10.10.0/24 dev eth2 proto kernel scope link src 10.10.10.10 127.0.0.0/8 dev lo scope link 192.168.2.0/24 dev eth1 proto kernel scope link src 192.168.2.1 1.1.1.32/27 dev eth0 proto kernel scope link src 1.1.1.1
防火牆 iptables-save 輸出:
# Generated by iptables-save v1.4.12.1 on Thu May 22 11:27:18 2014 *nat :PREROUTING ACCEPT [3549:255693] :INPUT ACCEPT [1284:97835] :OUTPUT ACCEPT [2116:146271] :POSTROUTING ACCEPT [168:12371] -A POSTROUTING -o eth0 -j MASQUERADE -A POSTROUTING -o eth1 -j MASQUERADE COMMIT # Completed on Thu May 22 11:27:18 2014 # Generated by iptables-save v1.4.12.1 on Thu May 22 11:27:18 2014 *mangle :PREROUTING ACCEPT [105533:57605385] :INPUT ACCEPT [21841:6013942] :FORWARD ACCEPT [82551:51514621] :OUTPUT ACCEPT [24003:30467247] :POSTROUTING ACCEPT [106672:81997112] COMMIT # Completed on Thu May 22 11:27:18 2014 # Generated by iptables-save v1.4.12.1 on Thu May 22 11:27:18 2014 *filter :INPUT DROP [135:8424] :FORWARD DROP [20:1360] :OUTPUT DROP [0:0] :LOCAL_DROP - [0:0] :LOGGING - [0:0] :LOG_DROP - [0:0] :SMTP_LOG - [0:0] -A INPUT -d 10.10.10.10/32 -i eth2 -p tcp -j ACCEPT -A INPUT -s 192.168.2.0/24 -d 10.10.10.10/32 -i eth2 -p tcp -j ACCEPT -A INPUT -d 1.1.1.1/32 -i eth2 -p tcp -j ACCEPT -A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -i eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -s 1.1.1.1/32 -d 192.168.2.1/32 -i eth0 -p tcp -j ACCEPT -A INPUT -s 192.168.2.1/32 -d 1.1.1.1/32 -i eth1 -p tcp -j ACCEPT -A INPUT -s 10.10.10.11/32 -i eth2 -j ACCEPT -A INPUT -s 192.168.2.1/32 -i eth1 -j ACCEPT -A INPUT -s 1.1.1.1/32 -p tcp -j ACCEPT -A INPUT -s 1.1.1.1/32 -p udp -j ACCEPT -A INPUT -s 192.168.2.1/32 -p tcp -j ACCEPT -A INPUT -s 192.168.2.1/32 -p udp -j ACCEPT -A INPUT -s 10.10.10.0/24 -i eth0 -j DROP -A INPUT -s 127.0.0.0/8 -i eth0 -j DROP -A INPUT -s 10.10.10.0/24 -i eth1 -j DROP -A INPUT -s 127.0.0.0/8 -i eth1 -j DROP -A INPUT -p tcp -m tcp --dport 25 --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT -A INPUT -p tcp -m tcp --dport 110 --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT -A INPUT -p tcp -m tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT -A INPUT -p udp -m udp --dport 53 -j ACCEPT -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT -A INPUT -p tcp -m tcp --dport 443 --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT -A INPUT -i eth2 -p tcp -m tcp --sport 68 --dport 67 -j ACCEPT -A INPUT -i eth2 -p udp -m udp --sport 68 --dport 67 -j ACCEPT -A INPUT -p udp -m udp --sport 53 -j ACCEPT -A INPUT -p udp -m udp --dport 53 -j ACCEPT -A INPUT -p tcp -m tcp --sport 53 -j ACCEPT -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT -A INPUT -s 10.10.10.0/24 -j LOCAL_DROP -A INPUT -p udp -j DROP -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j DROP -A FORWARD -i eth2 -o eth1 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT -A FORWARD -i eth1 -o eth2 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT -A FORWARD -i eth0 -o eth2 -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -i eth1 -o eth2 -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -i eth2 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -i eth2 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -s 10.10.10.0/24 -d 10.10.10.0/24 -i eth2 -p tcp -j ACCEPT -A FORWARD -s 10.10.10.0/24 -d 10.10.10.0/24 -i eth2 -p udp -j ACCEPT -A FORWARD -s 192.168.2.0/24 -d 192.168.2.0/24 -i eth1 -j ACCEPT -A FORWARD -s 10.10.10.0/24 -i eth2 -p tcp -m tcp --dport 22 -j ACCEPT -A FORWARD -s 10.10.10.0/24 -i eth2 -p tcp -m tcp --dport 25 -j ACCEPT -A FORWARD -s 10.10.10.0/24 -i eth2 -p tcp -m tcp --dport 80 -j ACCEPT -A FORWARD -s 10.10.10.0/24 -i eth2 -p tcp -m tcp --dport 110 -j ACCEPT -A FORWARD -s 10.10.10.0/24 -i eth2 -p tcp -m tcp --dport 993 -j ACCEPT -A FORWARD -s 10.10.10.0/24 -i eth2 -p tcp -m tcp --dport 443 -j ACCEPT -A FORWARD -s 10.10.10.0/24 -i eth2 -p udp -m udp --dport 53 -j ACCEPT -A FORWARD -s 10.10.10.0/24 -i eth2 -p tcp -m tcp --dport 53 -j ACCEPT -A FORWARD -s 10.10.10.0/24 -i eth2 -p udp -m udp --sport 137 --dport 137 -j ACCEPT -A FORWARD -s 10.10.10.0/24 -i eth2 -p tcp -m tcp --dport 143 -j ACCEPT -A FORWARD -s 10.10.10.11/32 -i eth2 -p tcp -j ACCEPT -A FORWARD -s 10.10.10.11/32 -i eth2 -p udp -j ACCEPT -A FORWARD -s 10.10.10.18/32 -i eth2 -p tcp -j ACCEPT -A FORWARD -s 10.10.10.18/32 -i eth2 -p udp -j ACCEPT -A FORWARD -s 10.10.10.1/32 -i eth2 -p tcp -j ACCEPT -A FORWARD -s 10.10.10.1/32 -i eth2 -p udp -j ACCEPT -A OUTPUT -s 1.1.1.1/32 -o eth0 -j ACCEPT -A OUTPUT -o lo -j ACCEPT -A OUTPUT -s 10.10.10.0/24 -d 10.10.10.0/24 -o eth2 -j ACCEPT -A OUTPUT -s 1.1.1.1/32 -o eth2 -j ACCEPT -A OUTPUT -s 192.168.2.0/24 -d 192.168.2.0/24 -o eth1 -j ACCEPT -A OUTPUT -s 1.1.1.1/32 -o eth1 -j ACCEPT -A OUTPUT -o eth1 -j ACCEPT -A OUTPUT -o eth0 -j ACCEPT -A OUTPUT -s 192.168.2.1/32 -o eth2 -j ACCEPT -A OUTPUT -s 1.1.1.1/32 -o eth2 -j ACCEPT -A OUTPUT -s 10.10.10.0/24 -d 1.1.1.1/32 -o eth2 -j ACCEPT -A OUTPUT -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT -A OUTPUT -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT -A LOCAL_DROP -p tcp -j ULOG --ulog-prefix "[---LOCAL DROP---]: " -A LOCAL_DROP -p udp -j ULOG --ulog-prefix "[---LOCAL DROP---]: " -A LOCAL_DROP -j DROP -A LOGGING -j ULOG --ulog-prefix "LOGGING: " -A LOGGING -j ACCEPT -A LOG_DROP -p tcp -j ULOG --ulog-prefix "[---TCP LOGDROP---]: " -A LOG_DROP -p udp -j ULOG --ulog-prefix "[---UDP LOGDROP---]: " -A LOG_DROP -j DROP -A SMTP_LOG -j ACCEPT COMMIT # Completed on Thu May 22 11:27:18 2014
防火牆配置很可能遠非完美,但它可以工作,現在我不敢碰它:D