
在過去的一個月裡,我無法解決這個問題,我制定了不同的 iptables 規則,在核心上啟用和停用模組,但結果相同,甚至更多的資料包被 iptables 丟棄。這使得用戶在嘗試存取虛擬機器上從 192.168.1.0/24 到 192.168.3.0/28 的不同共用資料夾時會出現 3/5 秒的延遲。
我在日誌上看到這個:
2 月14 日13:53:02 ns129115 核心:[12426815.202643] IPTables-OUTPUT-Dropped:IN= OUT=br0 SRC=192.168.1.115 DST=192.168.1.192.168.1.115 DST=192.168.1.192.1000TL T 61932 DF協定=TCP SPT=22115 DPT=49225 視窗=384 RES=0x00 ACK PSH URGP=0 2 月14 日13:53:02 ns129115 核心:[12426815.393379] IPTables-OUTPUT-Dropped:IN= OUT=br0 SRC=192.168.1.115 DST=192.168.1.192.168.1.115 DST=192.168.1.192.106 T 61933 DF協定=TCP SPT=22115 DPT=49225 視窗=384 RES=0x00 ACK URGP=0 2 月14 日13:53:02 ns129115 核心:[12426815.834944] IPTables-OUTPUT-Dropped:IN= OUT=br0 SRC=192.168.1.115 DST=192.168.1.192.168.1.115 DST=192.168.1.192.106 T 61934 DF協定=TCP SPT=22115 DPT=49225 視窗=384 RES=0x00 ACK URGP=0 2 月14 日13:53:02 ns129115 核心:[12426815.835219] IPTables-OUTPUT-Dropped:IN= OUT=br0 SRC=192.168.1.115 DST=192.168.1.192.168.1.115 DST=192.168.1.192.168。 61935 DF協定=TCP SPT=22115 DPT=49225 視窗=384 RES=0x00 ACK PSH URGP=0 2 月14 日13:53:19 ns129115 核心:[12426832.829664] IPTables-FWD-Dropped:IN=br0 OUT=br0 PHYSIN=vnet0 PHYSOUT=eth2 MAC=70:85:c2:4fYSIN=vnet0 PHYSOUT=eth2 MAC=70:85:c2:4fYSIN=vnet0:0fYSOUT=eth2 MAC=70:85:c1:4fYSIN 。 RES= 0x00 ACK PSH URGP=0 2 月14 日13:53:39 ns129115 核心:[12426852.496117] IPTables-OUTPUT-Dropped:IN= OUT=br0 SRC=192.168.1.115 DST=192.168.1.192.168.1.115 DST=192.168.1.192.168.1.115 DST=192.168.1.192.168.10TL T 29023 DF協定=TCP SPT=22115 DPT=52214 視窗=263 RES=0x00 ACK PSH URGP=0 2 月14 日13:53:49 ns129115 核心:[12426862.856776] IPTables-FWD-Dropped:IN=br0 OUT=br0 PHYSIN=eth2 PHYSOUT=vnet0 MAC=00:16:3e:9018 :34 :b0:20:a4:08:00 SRC=192.168.1.237 DST=192.168.1.156 LEN=40 TOS=0x00 PREC=0x00 TTL=128 ID=1644 DF PROTO=PINDPTM RES= 0x00 確認URGP=0 2 月14 日13:53:50 ns129115 核心:[12426863.288983] IPTables-OUTPUT-Dropped:IN= OUT=br0 SRC=192.168.1.115 DST=192.168.1.192.168.1.115 DST=192.168.1.192.168.1.115 DST=192.168.1.192.1600 P 29069 DF協定=TCP SPT=22115 DPT=52214 視窗=263 RES=0x00 ACK PSH URGP=0 2 月14 日13:54:19 ns129115 核心:[12426892.906806] IPTables-FWD-Dropped:IN=br0 OUT=br0 PHYSIN=eth2 PHYSOUT=vnet0 MAC=00:16:3e:14:18 :35 :6a:18:7a:08:00 SRC=192.168.1.199 DST=192.168.1.156 LEN=248 TOS=0x00 PREC=0x00 TTL=128 ID=13244 DF1969>L496997436D NPTLSPTSSPTSSPTSSPTSSPTS7S70S7975756L] NPTLSPTS. RES= 0x00 ACK PSH URGP=0 2 月14 日13:54:42 ns129115 核心:[12426915.939242] IPTables-OUTPUT-Dropped:IN= OUT=br0 SRC=192.168.1.115 DST=192.168.1.192.168.1.115 DST=192.168.1.192.168。 61969 DF協定=TCP SPT=22115 DPT=49225 視窗=384 RES=0x00 ACK PSH URGP=0
帶有 iptables 和 2 個橋接器的 Debian 伺服器
- BR0,是通往網關192.168.1.1的Internet存取網橋,所有使用者都在該網路上
- VIRBR10,第二個網橋,vm1 已使用 ip 192.168.3.12 (192.168.3.0/28) 連接到該網橋,並透過 br0 透過 iptables 與外部進行 nat
這是我的路線表
~ 路線列表
核心IP路由表 目標閘道 Genmask 標記量測參考使用 Iface 預設 192.168.1.1 0.0.0.0 UG 0 0 0 br0 192.168.1.0 * 255.255.255.0 U 0 0 0 br0 192.168.3.0 * 255.255.255.240 U 0 0 0 virbr10
~ brctl 顯示
橋接名稱 橋接器 ID 啟用 STP 的介面 br0 8000.0cc47ac18d3c 是 eth2 virbr10 8000.525400c4b847 是 virbr10-虛擬 虛擬網路2
~ iptables 規則
#!/bin/sh #刷新所有規則 iptables -P 輸入接受 iptables -P 轉送接受 iptables -P 輸出接受 iptables -t nat -F iptables -t mangle -F iptables -F iptables-X # 允許基本輸入流量。 iptables -A 輸入 -m 狀態 --state 已建立,相關 -j 接受 iptables -A 輸入 -i lo -j 接受 iptables -A 輸入 -p icmp --icmp-type 8 -m conntrack --ctstate 新 -j 接受 iptables -A 輸入 -p icmp -m conntrack --ctstate 新 -j 接受 # #MTU iptables -t mangle -A FORWARD -o virbr1 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1460 iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu #SMB #連接埠:netbios - 445/tcp #連接埠:netbios-ns – 137/udp -- NETBIOS 名稱服務 #連接埠:netbios-dgm – 138/udp -- NETBIOS 資料封包服務 #連接埠:netbios-ssn – 139/tcp -- NETBIOS 會話服務 iptables -A 輸入 -m 狀態 --state 新 -m tcp -p tcp --dport 445 -j 接受 iptables -A 輸入 -p udp -m udp --dport 445 -j 接受 iptables -A 輸入 -p udp -m udp --dport 137:138 -j 接受 iptables -A 輸入 -m 狀態 --state 新 -m tcp -p tcp --dport 139 -j 接受 #iptables -A 輸入 -p tcp -m tcp -m conntrack --ctstate 新 --sport 137 -j 接受 #iptables -A 輸入 -p tcp -m tcp -m conntrack --ctstate 新 --sport 138 -j 接受 #iptables -A 輸入 -p tcp -m tcp -m conntrack --ctstate 新 --sport 139 -j 接受 #RDP #連接埠:3389 # 來自外部的連接 iptables -I 轉送 -o virbr10 -d 192.168.3.12 -j 接受 iptables -t nat -I PREROUTING -p tcp --dport 3589 -j DNAT --to 192.168.3.12:3389 # 偽裝本地子網 iptables -I 轉發 -o virbr10 -d 192.168.3.0/28 -j 接受 iptables -t nat -A POSTROUTING -s 192.168.3.0/28 -j MASQUERADE iptables -A FORWARD -o virbr10 -m state --state 相關,已建立 -j 接受 #Permite conexiones salientes de virbr10 hacia la red 192.168.1.0/24 iptables -A 轉送 -i virbr10 -o br0 -j 接受 iptables -A 轉送 -o virbr10 -i br0 -j 接受 iptables -A 轉送 -i virbr10 -o lo -j 接受 ### #KVM 路由訪客 # 傳送到虛擬機器的 DHCP 封包沒有校驗和(由於長期存在的錯誤)。 iptables -t mangle -A POSTROUTING -o virbr10 -p udp -m udp --dport 68 -j CHECKSUM --checksum-fil # 不要偽裝這些保留地址塊。 iptables -t nat -A POSTROUTING -s 192.168.3.0/28 -d 224.0.0.0/24 -j 返回 iptables -t nat -A POSTROUTING -s 192.168.3.0/28 -d 255.255.255.255/32 -j 返回 # 偽裝從虛擬機器到 LAN/Internet 的所有資料包。 iptables -t nat -A POSTROUTING -s 192.168.3.0/28 ! -d 192.168.3.0/28 -p tcp -j MASQUERADE --to-埠 1024-65535 iptables -t nat -A POSTROUTING -s 192.168.3.0/28 ! -d 192.168.3.0/28 -p udp -j MASQUERADE --to-port 1024-65535 iptables -t nat -A POSTROUTING -s 192.168.3.0/28 ! -d 192.168.3.0/28 -j 偽裝 # 接受 SSH 連線。 iptables -A 輸入 -p tcp -m tcp --syn -m conntrack --ctstate 新 --dport 22 -j 接受 # 接受 Radmin iptables -A 輸入 -p tcp -m tcp --syn -m conntrack --ctstate 新 --dport 4899 -j 接受 # 允許入站流量到達私有子網路。 iptables -A 轉送 -d 192.168.3.0/28 -o virbr10 -m 狀態 --state 已建立,相關 -j 接受 #7218-12_07 桌面存取速度慢 iptables -A FORWARD -d 192.168.1.0/24 -o br0 -m state --state ESTABLISHED,RELATED -j ACCEPT #7218-12_07 桌面存取速度慢 iptables -A FORWARD -d 192.168.3.0/28 -o br0 -m state --state ESTABLISHED,RELATED -j ACCEPT # 允許來自私有子網路的出站流量。 iptables -A FORWARD -s 192.168.3.0/28 -i virbr10 -m state --state 已建立,相關 -j 接受 #7218-12_07 桌面存取速度慢 iptables -A FORWARD -s 192.168.1.0/24 -i br0 -m state --state ESTABLISHED,RELATED -j ACCEPT #7218-12_07 桌面存取速度慢 iptables -A FORWARD -s 192.168.3.0/28 -i br0 -m state --state ESTABLISHED,RELATED -j ACCEPT # 允許虛擬機器之間的流量。 iptables -A 轉送 -i virbr10 -o virbr10 -j 接受 # 拒絕其他一切。 iptables -A FORWARD -i virbr10 -j REJECT --reject-with icmp-port-unreachable # 接受來自虛擬機器的 DNS(連接埠 53)和 DHCP(連接埠 67)封包。 iptables -A 輸入 -i virbr10 -p udp -m udp -m 多埠 --dports 53,67 -j 接受 iptables -A 輸入 -i virbr10 -p tcp -m tcp -m 多埠 --dports 53,67 -j 接受 #ICMP iptables -A 輸出 -p icmp -m conntrack --ctstate 已建立,相關 -j 接受 # 拒絕其他一切。 iptables -A 輸入 -m conntrack --ctstate 無效 -j 刪除 iptables -A INPUT -p tcp -m tcp -j REJECT --reject-with tcp-reset iptables -A 輸入 -j REJECT --reject-with icmp-port-unreachable #記錄丟棄的資料包 iptables -A INPUT -m limit --limit 2/min -j LOG --log-prefix "IPTables-INPUT-Dropped:" --log-level 4 iptables -A FORWARD -m limit --limit 2/min -j LOG --log-prefix "IPTables-FWD-Dropped:" --log-level 4 iptables -A OUTPUT -m limit --limit 2/min -j LOG --log-prefix "IPTables-OUTPUT-Dropped:" --log-level 4
更新
- 將日誌鏈更改為腳本末尾並貼上新的日誌條目
答案1
在谷歌搜尋後我可以解決這個問題。
- Windows Server 2012 R2 中的網域控制站上的SMB 存取共用檔案速度緩慢的原因是,當目標中不存在資料夾時,資料夾重新導向GPO 在重定向過程中對使用者設定檔資料夾中的權限進行了更改。基於 Microsfot Technet 的 iamrafic (關聯),我們需要將資料夾權限變更為:
在所需位置建立資料夾 停用從父級繼承的權限,並透過點擊對應的按鈕刪除所有繼承的權限。 DACL 中已存在一項:本機管理員。
更改本機管理員:完全控制:此資料夾、子資料夾和文件
新增系統:完全控制:此資料夾、子資料夾和檔案。
新增創建者擁有者:完全控制:此資料夾、子資料夾和檔案。
新增經過身份驗證的使用者:列出資料夾/讀取數據,建立資料夾/附加資料:僅此資料夾
新增網域管理員:完全控制:此資料夾、子資料夾和檔案。
按一下“確定”。
- 另一個問題是我的 iptables 規則,我需要執行一個全新的鏈並修復每個 FORWARD 規則的順序,因為這會改變分析封包時的效能。這裡是新的。
#!/bin/sh #刷新所有規則 iptables -P 輸入接受 iptables -P 轉送接受 iptables -P 輸出接受 iptables -t nat -F iptables -t mangle -F iptables -F iptables-X iptables -t 原始 -F # 基本表 iptables -A 輸入 -m conntrack --ctstate 已建立,相關 -j 接受 iptables -A 輸入 -i lo -j 接受 # iptables -A 轉發 -o virbr32 -s 192.168.1.0/24 -d 192.168.100.0/28 -m conntrack --ctstate 已建立,相關 -j 接受 iptables -A 轉發 -i virbr32 -s 192.168.100.0/28 -d 192.168.1.0/24 -m conntrack --ctstate 已建立,相關 -j 接受 iptables -A 轉送 -o virbr32 -i br0 -j 接受 iptables -A 轉送 -i virbr32 -s 192.168.100.0/2 -j 接受 iptables -A 轉送 -i virbr32 -o virbr32 -j 接受 iptables -A FORWARD -i virbr32 -j LOG --log-prefix "iptables-FORWARD-REJECT: " iptables -A FORWARD -i virbr32 -j REJECT --reject-with icmp-port-unreachable # 偽裝本地子網 iptables -t nat -A POSTROUTING -s 192.168.100.0/28 -j MASQUERADE # 不要偽裝這些保留地址塊。 iptables -t nat -A POSTROUTING -s 192.168.100.0/28 -d 224.0.0.0/24 -j 返回 iptables -t nat -A POSTROUTING -s 192.168.100.0/28 -d 255.255.255.255/32 -j 返回 #中小企業 # RPC EPM TCP 135 # 透過 HTTPS TCP 593 進行 RPC # SMB(用於命名管道)TCP 445 # 短暫範圍,動態 * iptables -I FORWARD 6 -o virbr32 -i br0 -m conntrack --ctstate NEW -p tcp -d 192.168.100.12 --dport 445 -j 接受 iptables -I FORWARD 7 -o virbr32 -i br0 -m conntrack --ctstate NEW -p tcp -d 192.168.100.12 --dport 139 -j 接受 # 接受來自虛擬機器的 DNS(連接埠 53)和 DHCP(連接埠 67)封包。 iptables -I FORWARD 8 -o virbr32 -i br0 -m conntrack --ctstate NEW -p tcp -m tcp -m 多埠 --dports 53,67 -j ACCEPT iptables -I FORWARD 9 -i virbr32 -o br0 -m conntrack --ctstate NEW -p udp -m udp -m 多埠 --dports 53,67 -j ACCEPT # # # 下面的兩個規則確保只檢查 TCP 封包。所有其他人 # 繼續進入*篩選器表。 iptables -t 原始 -N TCPFLAGS iptables -t raw -A PREROUTING -p tcp -j TCPFLAGS iptables -t raw -A PREROUTING -j 接受 # 快速接受標準握手 # 允許 ACK 或 ACK/SYN #-A TCPFLAGS -j 接受 iptables -t raw -A TCPFLAGS -p tcp --tcp-flags FIN,ACK,URG,PSH,RST ACK -j ACCEPT # 允許使用 URG 或 PSH 或兩者都允許 ACK/FIN # 但SYN和RST不能設定 iptables -t raw -A TCPFLAGS -p tcp --tcp-flags FIN,SYN,ACK,RST ACK,FIN -j ACCEPT # 允許 SYN 或 ACK/SYN iptables -t raw -A TCPFLAGS -p tcp --tcp-flags FIN、SYN、URG、PSH、RST SYN -j 接受 # 允許 RST 或 ACK/RST iptables -t raw -A TCPFLAGS -p tcp --tcp-flags FIN,SYN,URG,PSH,RST RST -j ACCEPT # 此規則捕獲 xmas-tree 和 fin 攻擊 iptables -t raw -A TCPFLAGS -p tcp --tcp-flags FIN FIN -j DROP # 此規則捕獲 xmas-tree 和 syn/rst 攻擊 iptables -t raw -A TCPFLAGS -p tcp --tcp-flags SYN SYN -j DROP # 此規則捕獲空攻擊 iptables -t raw -A TCPFLAGS -p tcp --tcp-flags 全部無 -j DROP #-A TCPFLAGS -p tcp -ecn-tcp-cwr -j DROP # 這些規則捕獲錯誤的 ack 組合 #-A TCPFLAGS -p tcp --tcp-flags ACK ACK -j ACC #iptables -t raw -A TCPFLAGS -j 接受 # 那麼,我們接受什麼 TCP 協定呢? # 握手 (ACK/FIN)、(ACK/SYN)、(SYN)、(ACK)、(RST)、(ACK/RST)、 # 以及帶有 PSH 或 URG 或 FIN 或 ACK 的資料包 # #記錄丟棄的資料包 iptables -A INPUT -m limit --limit 2/min -j LOG --log-prefix "IPTables-INPUT-Dropped:" --log-level 4 iptables -A FORWARD -m limit --limit 2/min -j LOG --log-prefix "IPTables-FWD-Dropped:" --log-level 4 iptables -A OUTPUT -m limit --limit 2/min -j LOG --log-prefix "IPTables-OUTPUT-Dropped:" --log-level 4
- 正如您所看到的,我使用iptables -I FORWARD 而不是iptables -A FORWARD,因為這樣可以在我的過濾表上執行有序規則,首先放置更重要的規則,然後在DROP 或拒絕其餘規則後進行更深入的處理。所有 FORWARD 規則都在此行之前
iptables -A 輸入 -p icmp --icmp-type 8 -m conntrack --ctstate 新 -j 接受
編輯:我只需要進行一些更改即可在將檔案從虛擬機複製到區域網路192.168.1.0/24中的外部時獲得更高的傳輸速率,我不能超過4Mb/s。任何建議將不勝感激!