
지난 한 달 동안 나는 이 문제를 해결할 수 없었습니다. 다른 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.231 LEN=104 TOS=0x10 PREC=0x00 TTL=64 ID=61932 DF PROTO=TCP SPT=22115 DPT=49225 WINDOW=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.231 LEN=40 TOS=0x10 PREC=0x00 TTL=64 ID=61933 DF PROTO=TCP SPT=22115 DPT=49225 WINDOW=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.231 LEN=40 TOS=0x10 PREC=0x00 TTL=64 ID=61934 DF PROTO=TCP SPT=22115 DPT=49225 WINDOW=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.231 LEN=136 TOS=0x10 PREC=0x00 TTL=64 ID=61935 DF PROTO=TCP SPT=22115 DPT=49225 WINDOW=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:4f:14:c1:00:16:3e :ea:18:01:08:00 SRC=192.168.1.156 DST=192.168.1.125 LEN=319 TOS=0x00 PREC=0x00 TTL=128 ID=16660 DF PROTO=TCP SPT=49169 DPT=54820 WINDOW=256 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.231 LEN=104 TOS=0x10 PREC=0x00 TTL=64 ID=29023 DF PROTO=TCP SPT=22115 DPT=52214 WINDOW=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:ea:18:01:90:2b: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=TCP SPT=49244 DPT=49169 WINDOW=1879 RES= 0x00 ACK 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.231 LEN=104 TOS=0x10 PREC=0x00 TTL=64 ID=29069 DF PROTO=TCP SPT=22115 DPT=52214 WINDOW=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:ea:18:01:74:d4: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 DF PROTO=TCP SPT=49678 DPT=49169 WINDOW=256 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.231 LEN=136 TOS=0x10 PREC=0x00 TTL=64 ID=61969 DF PROTO=TCP SPT=22115 DPT=49225 WINDOW=384 RES=0x00 ACK PSH URGP=0
iptables와 브리지 2개가 있는 데비안 서버
- BR0은 게이트웨이 192.168.1.1에 대한 인터넷 액세스가 가능한 브리지이며 모든 사용자는 이 네트워크에 있습니다.
- 두 번째 브리지인 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 유 0 0 0 br0 192.168.3.0 * 255.255.255.240 유 0 0 0 virbr10
~ brctl 쇼
브리지 이름 브리지 ID STP 지원 인터페이스 br0 8000.0cc47ac18d3c 네 eth2 virbr10 8000.525400c4b847 예 virbr10-dummy vnet2
~ iptables 규칙
#!/bin/sh #모든 규칙을 플러시 iptables -P 입력 수락 iptables -P 앞으로 수락 iptables -P 출력 수락 iptables -t nat -F iptables -t 맹글 -F iptables -F iptables -X # 기본 INPUT 트래픽을 허용합니다. iptables -A INPUT -m state --state ESTABLISHED, RELATED -j ACCEPT iptables -A 입력 -i lo -j 수락 iptables -A INPUT -p icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT iptables -A INPUT -p icmp -m conntrack --ctstate NEW -j ACCEPT # #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 #중소기업 #포트: netbios - 445/tcp #포트: netbios-ns – 137/udp -- NETBIOS 이름 서비스 #포트: netbios-dgm – 138/udp -- NETBIOS 데이터그램 서비스 #포트: netbios-ssn – 139/tcp -- NETBIOS 세션 서비스 iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT iptables -A 입력 -p udp -m udp --dport 445 -j 수락 iptables -A 입력 -p udp -m udp --dport 137:138 -j 수락 iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT #iptables -A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --sport 137 -j ACCEPT #iptables -A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --sport 138 -j ACCEPT #iptables -A INPUT -p tcp -m tcp -m conntrack --ctstate NEW --sport 139 -j ACCEPT #RDP #포트: 3389 # 외부로부터의 연결 iptables -I 앞으로 -o virbr10 -d 192.168.3.12 -j 수락 iptables -t nat -I 사전 설정 중 -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 RELATED,ESTABLISHED -j ACCEPT #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 라우팅 게스트 # VM으로 전송된 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 RETURN iptables -t nat -A POSTROUTING -s 192.168.3.0/28 -d 255.255.255.255/32 -j 반환 # VM에서 LAN/인터넷으로 이동하는 모든 패킷을 가장합니다. iptables -t nat -A POSTROUTING -s 192.168.3.0/28 ! -d 192.168.3.0/28 -p tcp -j MASQUERADE --포트 1024-65535 iptables -t nat -A POSTROUTING -s 192.168.3.0/28 ! -d 192.168.3.0/28 -p udp -j MASQUERADE --포트 1024-65535 iptables -t nat -A POSTROUTING -s 192.168.3.0/28 ! -d 192.168.3.0/28 -j 가장 무도회 # SSH 연결을 수락합니다. iptables -A INPUT -p tcp -m tcp --syn -m conntrack --ctstate NEW --dport 22 -j ACCEPT # Radmin을 수락하세요 iptables -A INPUT -p tcp -m tcp --syn -m conntrack --ctstate NEW --dport 4899 -j ACCEPT # 프라이빗 서브넷으로의 인바운드 트래픽을 허용합니다. iptables -A FORWARD -d 192.168.3.0/28 -o virbr10 -m state --state ESTABLISHED, RELATED -j ACCEPT #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 ESTABLISHED, RELATED -j ACCEPT #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 # VM에서 DNS(포트 53) 및 DHCP(포트 67) 패킷을 수락합니다. iptables -A INPUT -i virbr10 -p udp -m udp -m multiport --dports 53,67 -j 수락 iptables -A INPUT -i virbr10 -p tcp -m tcp -m multiport --dports 53,67 -j 수락 #ICMP iptables -A OUTPUT -p icmp -m conntrack --ctstate 설정됨, 관련됨 -j 수락 # 다른 모든 것을 거부합니다. iptables -A INPUT -m conntrack --ctstate INVALID -j DROP iptables -A INPUT -p tcp -m tcp -j REJECT --reject-with tcp-reset iptables -A INPUT -j REJECT --reject-with icmp-port-unreachable #로그 패킷이 삭제되었습니다. iptables -A INPUT -m 제한 --limit 2/min -j LOG --log-prefix "IPTables-INPUT-Dropped: " --log-level 4 iptables -A FORWARD -m 제한 --limit 2/min -j LOG --log-prefix "IPTables-FWD-Dropped: " --log-level 4 iptables -A OUTPUT -m 제한 --limit 2/min -j LOG --log-prefix "IPTables-OUTPUT-Dropped: " --log-level 4
업데이트
- 로그 체인을 스크립트 끝으로 변경하고 새 로그 항목을 붙여넣었습니다.
답변1
구글에서 검색하니 해결되네요.
- Windows Server 2012 R2의 도메인 컨트롤러에서 SMB를 사용하여 공유 파일에 대한 액세스 속도가 느린 이유는 폴더 리디렉션 GPO가 대상에 폴더가 없을 때 리디렉션 프로세스 중에 사용자 프로필 폴더의 권한을 변경하기 때문입니다. Microsfot Technet의 iamrafic을 기반으로 합니다(링크), 폴더 권한을 다음으로 변경해야 합니다.
필요한 위치에 폴더를 생성합니다. 해당 버튼을 클릭하여 상위로부터의 권한 상속을 비활성화하고 상속된 모든 권한을 제거합니다. DACL에는 로컬 관리자라는 항목이 이미 있습니다.
로컬 관리자 변경: 모든 권한: 이 폴더, 하위 폴더 및 파일
시스템 추가: 모든 권한: 이 폴더, 하위 폴더 및 파일.
CREATOR OWNER 추가: 모든 권한: 이 폴더, 하위 폴더 및 파일.
인증된 사용자 추가: 폴더 나열/데이터 읽기, 폴더 생성/데이터 추가: 이 폴더만
도메인 관리자 추가: 모든 권한: 이 폴더, 하위 폴더 및 파일.
확인을 클릭하세요.
- 다른 문제는 내 iptables 규칙이었습니다. 완전히 새로운 체인을 수행하고 모든 FORWARD 규칙의 순서를 수정해야 했습니다. 이는 패킷이 분석될 때 성능을 변경하기 때문입니다. 여기 새로운 것들이 있습니다.
#!/bin/sh #모든 규칙을 플러시 iptables -P 입력 수락 iptables -P 앞으로 수락 iptables -P 출력 수락 iptables -t nat -F iptables -t 맹글 -F iptables -F iptables -X iptables -t 원시 -F # 기본 테이블 iptables -A INPUT -m conntrack --ctstate 설정됨, 관련됨 -j 수락 iptables -A 입력 -i lo -j 수락 # iptables -A FORWARD -o virbr32 -s 192.168.1.0/24 -d 192.168.100.0/28 -m conntrack --ctstate 설정됨, 관련됨 -j 수락 iptables -A FORWARD -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 RETURN 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 ACCEPT iptables -I 앞으로 7 -o virbr32 -i br0 -m conntrack --ctstate NEW -p tcp -d 192.168.100.12 --dport 139 -j 수락 # VM에서 DNS(포트 53) 및 DHCP(포트 67) 패킷을 수락합니다. iptables -I FORWARD 8 -o virbr32 -i br0 -m conntrack --ctstate NEW -p tcp -m tcp -m multiport --dports 53,67 -j 수락 iptables -I FORWARD 9 -i virbr32 -o br0 -m conntrack --ctstate NEW -p udp -m udp -m multiport --dports 53,67 -j ACCEPT # # # 아래 두 가지 규칙은 TCP 패킷만 검사하도록 보장합니다. 다른 모든 # *filter 테이블로 계속 진행합니다. iptables -t 원시 -N TCPFLAGS iptables -t raw -A 사전 설정 -p tcp -j TCPFLAGS iptables -t raw -A PREROUTING -j 수락 # 표준 악수를 빠르게 수락합니다. # ACK 또는 ACK/SYN 허용 #-A TCPFLAGS -j 수락 iptables -t 원시 -A TCPFLAGS -p tcp --tcp-flags FIN,ACK,URG,PSH,RST ACK -j 수락 # URG나 PSH 중 하나 또는 둘 다를 사용하거나 둘 다 사용하지 않고 ACK/FIN을 허용합니다. # 하지만 SYN과 RST는 설정할 수 없습니다 iptables -t 원시 -A TCPFLAGS -p tcp --tcp-flags FIN,SYN,ACK,RST ACK,FIN -j ACCEPT # SYN 또는 ACK/SYN 허용 iptables -t 원시 -A TCPFLAGS -p tcp --tcp-flags FIN,SYN,URG,PSH,RST SYN -j 수락 # RST 또는 ACK/RST 허용 iptables -t 원시 -A TCPFLAGS -p tcp --tcp-flags FIN,SYN,URG,PSH,RST RST -j 수락 # 이 규칙은 xmas-tree 및 fin 공격을 포착합니다. iptables -t 원시 -A TCPFLAGS -p tcp --tcp-flags FIN FIN -j DROP # 이 규칙은 xmas-tree 및 syn/rst 공격을 포착합니다. iptables -t 원시 -A TCPFLAGS -p tcp --tcp-flags SYN SYN -j DROP # 이 규칙은 널 공격을 포착합니다 iptables -t 원시 -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 원시 -A TCPFLAGS -j 수락 # 그렇다면 우리는 TCP에 대해 무엇을 받아들일까요? # 핸드셰이크 (ACK/FIN), (ACK/SYN), (SYN), (ACK), (RST), (ACK/RST), # 및 PSH, URG, FIN 또는 ACK가 포함된 데이터 패킷 # #로그 패킷이 삭제되었습니다. iptables -A INPUT -m 제한 --limit 2/min -j LOG --log-prefix "IPTables-INPUT-Dropped: " --log-level 4 iptables -A FORWARD -m 제한 --limit 2/min -j LOG --log-prefix "IPTables-FWD-Dropped: " --log-level 4 iptables -A OUTPUT -m 제한 --limit 2/min -j LOG --log-prefix "IPTables-OUTPUT-Dropped: " --log-level 4
- 보시다시피, iptables -A FORWARD 대신 iptables -I FORWARD를 사용했습니다. 이를 사용하면 더 중요한 규칙을 먼저 배치하고 DROP 후에 더 깊이 들어가거나 나머지를 거부할 수 있으므로 필터 테이블에서 순서화된 규칙을 수행할 수 있기 때문입니다. 모든 FORWARD 규칙은 이 줄 앞에 옵니다.
iptables -A INPUT -p icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT
편집하다: VM에서 LAN 192.168.1.0/24 외부로 파일을 복사할 때 더 많은 전송 속도를 사용하려면 몇 가지 변경만 하면 4Mb/s 이상을 사용할 수 없습니다. 어떤 조언이라도 감사하겠습니다!!