2017-04-25 1 views
0

私は、一連のポートでUDPとTCPの両方からパケットを受信するjavaプログラムを持っています。私はそれらのポートで内部ネットワークトラフィックをブロックまたはブロック解除するLinuxボックスにスクリプトをローカルに持っています。これらのスクリプトはうまくいきます。しかし、このスクリプトを使用してトラフィックを停止すると、トラフィックを停止させるのにおよそ40分かかります。それまで私はパケットを登録Linuxのファイアウォール

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

の方法で受信します。 40分後、トラフィックは停止します。何が起こっているのかわからない。着信トラフィックが直ちに停止することを期待していました。私がLinuxの箱で見逃した設定はありますか?

サイズは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のスクリプトの抜粋です。私は5100

に5000の間のポートに興味があります
*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

ファイアウォールの最初のルールは、あなただけ

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

は、そのルールを削除してください新規接続をブロックしているように、すべての確立された接続を受け入れるためにはiptablesに指示し、何が起こるかを見てください

+0

私はこれを試み、戻ってくる。 – Parasu

+0

は完璧に機能しました。私の場合は、残りのファイアウォールルールとあなたが指摘した主要なものから状態を削除しました。ありがとう。 – Parasu