2017-04-25 12 views
0

나는 범위의 포트에서 UDP와 TCP 모두로부터 패킷을 듣는 자바 프로그램을 가지고있다. 나는 그 포트에서 내부 네트워크 트래픽을 차단하거나 차단 해제 할 리눅스 박스에 스크립트를 가지고있다. 이 스크립트는 잘 작동합니다. 그러나이 스크립트를 사용하여 트래픽을 중지하면 트래픽을 중지시키는 데 약 40 분이 걸립니다. 그때까지 나는 패킷을등록 리눅스의 방화벽

java.net.DatagramSocket.receive() and 
java.net.Socket.getInputStream().read() 

개의 방법으로 수신합니다. 40 분이 지나면 트래픽이 중지됩니다. 나는 무슨 일이 일어나고 있는지 전혀 모른다. 들어오는 트래픽이 즉시 멈출 것으로 예상했습니다. 리눅스 박스에서 놓친 구성이 있습니까?

소켓 버퍼 크기는 UDP와 TCP에 대한 것은 다음과 같습니다

여기
[[email protected] ~]# cat /proc/sys/net/ipv4/udp_mem 
6164448 8219264 12328896 
[[email protected] ~]# cat /proc/sys/net/ipv4/udp_rmem_min 
4096 
[[email protected] ~]# cat /proc/sys/net/ipv4/udp_wmem_min 
4096 

[[email protected] ~]# cat /proc/sys/net/ipv4/tcp_mem 
6164448 8219264 12328896 
[[email protected] ~]# cat /proc/sys/net/ipv4/tcp_rmem 
4096 87380 4194304 
[[email protected] ~]# cat /proc/sys/net/ipv4/tcp_wmem 
4096 16384 4194304 

이 iptables에 스크립트의 조각입니다. 나는 방화벽의 첫 번째 규칙은 당신은 단지 새로운 연결

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 

해당 규칙을 제거하는 시도를 차단되도록 모든 설립 연결을 수락 iptables를 알려줍니다 5100

*filter 
:INPUT ACCEPT [0:0] 
:FORWARD ACCEPT [0:0] 
:OUTPUT ACCEPT [218796:15563881] 
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -p icmp -j ACCEPT 
-A INPUT -i lo -j ACCEPT 

-A INPUT -p tcp -m state --state NEW,ESTABLISHED -m tcp --dport 5000:5100 -j DROP 
-A INPUT -p tcp -m state --state NEW,ESTABLISHED -m tcp --dport 4814 -j DROP 
-A INPUT -p tcp -m state --state NEW,ESTABLISHED -m tcp --dport 8000 -j DROP 
-A INPUT -p tcp -m state --state NEW,ESTABLISHED -m tcp --dport 4815 -j DROP 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT 
-A INPUT -p tcp -m state --state ESTABLISHED --sport 53 -j ACCEPT 
-A INPUT -p tcp -m state --state ESTABLISHED --sport 587 -j ACCEPT 
-A INPUT -p tcp -m state --state NEW,ESTABLISHED --dport 2814 -j ACCEPT 

-A INPUT -p udp -m state --state ESTABLISHED --sport 53 -j ACCEPT 
-A INPUT -p udp --dport 5000:5100 -j DROP 
-A INPUT -p udp --dport 4814 -j DROP 

-A INPUT -j REJECT --reject-with icmp-host-prohibited 

-A FORWARD -j REJECT --reject-with icmp-host-prohibited 

-A OUTPUT -p tcp -m state --state NEW,ESTABLISHED --dport 53 -j ACCEPT 
-A OUTPUT -p tcp -m state --state NEW,ESTABLISHED --dport 587 -j ACCEPT 
-A OUTPUT -p tcp -m state --state ESTABLISHED -m tcp --sport 5000:5100 -j ACCEPT 
-A OUTPUT -p tcp -m state --state ESTABLISHED -m tcp --sport 4814 -j ACCEPT 
-A OUTPUT -p tcp -m state --state ESTABLISHED -m tcp --sport 4815 -j ACCEPT 
-A OUTPUT -p tcp -m state --state ESTABLISHED -m tcp --sport 2814 -j ACCEPT 

-A OUTPUT -p udp -m state --state NEW,ESTABLISHED --dport 53 -j ACCEPT 
-A OUTPUT -p udp --sport 5000:5100 -j ACCEPT 
-A OUTPUT -p udp --sport 4814 -j ACCEPT 
+0

아마도 관련이 있습니다 : https://unix.stackexchange.com/questions/217450/iptables-i-forward-j-drop-does-not-cut-existing-connections – assylias

+0

나는 관련 게시물 : sysctl -w net.netfilter.nf_conntrack_skip_filter = 0 오류 : "net.netfilter.nf_conntrack_skip_filter"는 알 수없는 키입니다. – Parasu

+0

이 명령은 OpenWrt 용이므로 표준 Linux에서는 작동하지 않습니다. 제 요점은 기존 연결을 닫지 않고 새 연결 만 차단하고있는 것일 수 있습니다. – assylias

답변

0

5000 사이의 포트에 관심 무슨 일이 일어나는 지 알아보십시오

+0

좋아요. 나는 이것을 시도하고 돌아올 것이다. – Parasu

+0

은 완벽하게 작동했습니다. 내 경우 방화벽 규칙의 나머지 부분과 귀하가 지적한 주된 규칙을 제거했습니다. 감사. – Parasu