家用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。

添加以下两行,它应该连接:

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

您可能需要打开 udp 上的其他端口,具体取决于正在运行的其他端口。

相关内容