ホームIPテーブル

ホームIPテーブル

ホームネットワーク上のデスクトップのルールを設定しようとしましたが、最初はこの設定が機能しましたが、どこかで何かを変更しても、今のところどのような接続も通過しません。このスクリプトは、システムの起動時に実行されます。

#!/bin/bash   

### Variables ###
LAN="eth0"
WLAN="wlan0"
iptables="/sbin/iptables"
ip6tables="/sbin/ip6tables"
ssh_port=50000


### Initial set up ###
clear
# echo -e "\n"


### Flush ###
$iptables -F
$iptables -X
$iptables -Z
echo "Rules flushed; tables are empty now" && echo ""    


### Basic rules ###
$iptables -A INPUT -s 127.0.0.1 -j ACCEPT
$iptables -A OUTPUT -s 127.0.0.1 -j ACCEPT
$iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
echo "Basic rules written"&&echo""


### Special rules ###
# slsk
$iptables -A INPUT -p tcp --dport 63922 -j ACCEPT
$iptables -A INPUT -p tcp --dport 63923 -j ACCEPT
$iptables -A INPUT -p tcp --dport 2416 -j ACCEPT
# mpd
$iptables -A INPUT -p tcp --dport 8800 -j ACCEPT
$iptables -A INPUT -p udp --dport 8800 -j ACCEPT
# allow pings 
$iptables -A INPUT -p icmp -m state --state NEW -j ACCEPT
# ssh server
$iptables -A INPUT -p tcp --dport $ssh_port -j LOG
$iptables -A INPUT -p tcp --dport $ssh_port -j ACCEPT
#$ip6tables -A INPUT -p tcp --dport $ssh_port -j LOG
#$ip6tables -A INPUT -p tcp --dport $ssh_port -j ACCEPT
echo "Special rules set" && echo ""


#### Default policies ###
$iptables -A INPUT -j DROP
$iptables -A OUTPUT -j ACCEPT
$iptables -A FORWARD -j DROP 
echo "Default policies set" && echo ""


echo "Firewall set up finished" && echo ""

質問がありますか?問題を解決するにはどうすればよいですか?

---編集---回答アレクサンダー・チェン

以下は、ログルールを追加した後の抜粋ログです(ubはマイコンピュータ名です)。

5月12日 18:37:19 ub カーネル: [30205.793422] iptables 拒否: IN=wlan0 OUT= MAC=e8:de:27:07:1f:d6:64:d9:54:c2:d0:ec: 08:00 SRC=212.89.0.77 DST=192.168.1.3 LEN=175 TOS=0x00 PREC=0x00 TTL=250 ID=43075 DF PROTO=UDP SPT=53 DPT=27334 LEN=155

### Basic rules ###
[...]
#### Default policies ###
$iptables -A INPUT -j LOG --log-prefix "iptables denied: " --log-level 7
$iptables -A INPUT -j DROP
$iptables -A OUTPUT -j ACCEPT
$iptables -A FORWARD -j DROP 
echo "Default policies set" && echo ""

これが小さなUDP修正を再試行した後に設定ファイルを取得する方法です。ログルールを使用する前はまだトラフィックを許可していませんが、ルールを削除する前にトラフィックを追加した後は、コマンドラインで何もpingできなくても正常に動作するようです。少し頭が痛い)。引き続きいくつかテストします。編集*はい、うまくいきません。最初はうまくいかなかったようですが、うまくいきますが、最終的には機能しません。ログ全体を公開する必要がありますか?

答え1

カーネルロギングのエラーメッセージは、ポート53のインバウンドUDPパケットが廃棄されたことを知らせます。

設定を見ると、ファイアウォールにUDPを受け入れるように指示するものはありません。 (規則を受け入れる必要があります。設立と関連TCP 接続パケットですが、UDP にはパケットはありません。 )

解決策は制限を取り除くことです設立と関連TCPパケットなのでUDPでも動作します。

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

答え2

UDP接続が許可されていないため、UDPポート53でDNSをブロックしているようです。

DHCPを使用している場合は、UDPポート67〜68でもDHCPを許可する必要があります。

次の2行を追加するとリンクされます。

$iptables -A INPUT -p udp --dport 67:68 -j ACCEPT
$iptables -A INPUT -p udp --dport 53 -j ACCEPT

実行している他のポートによっては、UDPで別のポートを開く必要があります。

関連情報