ホームネットワーク上のデスクトップのルールを設定しようとしましたが、最初はこの設定が機能しましたが、どこかで何かを変更しても、今のところどのような接続も通過しません。このスクリプトは、システムの起動時に実行されます。
#!/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で別のポートを開く必要があります。