单网卡双 IP 如何禁止从某个 IP 入站?

2023-04-06 20:14:47 +08:00
 fat00119

Debian11

eth0 a.b.c.4

eth0:1 a.b.c.5

eth0 是主 IP 默认出站是此 IP; eth0 和 eth0:1 都能入站

现在想实现的是:禁止外部从 eth0 入站 其他不变

小鸡上有 iptables 和 ufw 能实现吗?或者其他能实现的方法 谢谢大家

1361 次点击
所在节点    宽带症候群
10 条回复
nkloveni
2023-04-06 20:29:24 +08:00
iptables -A INPUT -d a.b.c.4 -p tcp --dport 80 -j DROP
tril
2023-04-06 20:42:18 +08:00
ufw deny in on eth0
tril
2023-04-06 20:49:48 +08:00
如果防火墙里已有规则,则要改成插入到第一条:
如果用 ufw:
ufw insert 1 deny in on eth0

如果用 iptables:
iptables -I INPUT -i eth0 -j DROP
ip6tables -I INPUT -i eth0 -j DROP
fat00119
2023-04-06 22:17:47 +08:00
@nkloveni 针对单个端口有效果, 谢谢大佬。 再请教一下, 如果禁止“80 端口”改为“所有端口”, 我尝试把 --dport 80 删除 ,但是小鸡访问不到外网了。是有其他表达方式吗?


@tril 直接 eth0 的话 两个 IP 都连不进小鸡了
neroxps
2023-04-06 23:19:52 +08:00
这问题 bing new 都有答案吧。
fat00119
2023-04-07 02:10:10 +08:00
@neroxps 问过 他答出来的不对
tril
2023-04-07 03:20:04 +08:00
@fat00119 两个都不通可能是因为你这两个接口都是同一个物理网口,得改成匹配目的地。

用 ufw 可以这样( ufw 默认会把规则加在连接跟踪规则的后面,只需要这一条):
ufw insert 1 deny from any to a.b.c.4/32

用 iptables 的话,如果直接拒绝入站会导致从 a.b.c.4 访问网站收不到网站发来的回包,要加上连接跟踪,可以这样:
iptables -I INPUT -d a.b.c.4 -j DROP
iptables -I INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
ip6tables -I INPUT -d a.b.c.4 -j DROP
ip6tables -I INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
tril
2023-04-07 03:22:36 +08:00
@tril 两条 ipv6 的规则可以不加( ip6tables ),如果也需要的话得指定 ipv6 的地址,不是 a.b.c.4 ,我写错了。
fat00119
2023-04-07 14:23:33 +08:00
@tril 感谢大佬 亲测可用
nkloveni
2023-04-07 19:23:49 +08:00
@fat00119
/sbin/iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -d a.b.c.4 -p tcp --dport 80 -j DROP
这么配合着用。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/930370

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX