如何在 Linux 下阻止用户访问 Internet?
我正在尝试以下操作:
iptables -A OUTPUT -p tcp --dport 80,443 -m owner --uid-owner $USERNAME -j DROP
Run Code Online (Sandbox Code Playgroud)
这是正确的语法或命令吗?
我有一个绑定到localhost:7060. 它使用 ipv6 套接字而不是 ipv4。下面是 netstat 输出。
# netstat -an
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 10.200.32.98:1720 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:4122 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:4123 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:4123 127.0.0.1:43051 ESTABLISHED
tcp 0 0 10.200.32.98:5555 10.200.32.44:53162 ESTABLISHED
tcp6 0 0 :::5060 :::* LISTEN
tcp6 0 0 ::ffff:127.0.0.1:7060 :::* LISTEN
tcp6 0 0 :::23 :::* LISTEN
tcp6 0 0 ::ffff:10.200.32.98:23 ::ffff:10.200.32.142:43505 ESTABLISHED
tcp6 0 0 ::ffff:127.0.0.1:43051 ::ffff:127.0.0.1:4123 ESTABLISHED …Run Code Online (Sandbox Code Playgroud) 有一个 linux 盒子,希望它被锁定,但只能在上面上网。为什么这个脚本也阻塞了 http?
#!/bin/sh # # iptables -F # #为 INPUT、FORWARD 和 OUTPUT 链设置默认策略 # iptables -P 输入删除 iptables -P FORWARD DROP iptables -P 输出下降 # # 允许 tcp 端口 80 上的 TCP 连接 # iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A 输出 -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT # # 设置本地主机的访问权限 # iptables -A 输入 -i lo -j 接受 # # 列出规则 …
我正在使用 CentOS 6.2 设置新的 Web 服务器,但无法通过 Web 进行连接。一切看起来都设置正确httpd.conf并且 Apache 正在运行,所以我假设这是一个 iptables 问题。
以下是否有任何可能导致问题的内容?
编辑:如果我停止 iptables,我可以正常连接,所以必须在下面进行调整。我已经运行iptables -A INPUT -p tcp --dport 80 -j ACCEPT并保存并重新启动了 iptables 但没有任何区别
# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
ACCEPT tcp -- anywhere anywhere tcp …Run Code Online (Sandbox Code Playgroud) 我需要标记发送到指定 MAC 地址的数据包。
我需要这个在 shaper 中使用tc。
--mac-destination不存在于iptables.
我也尝试使用ebtables:
ebtables -t nat -A POSTROUTING -d 9c:4e:36:aa:bb:cc -j mark --set-mark 0x2003 --mark-target ACCEPT
但它没有标记任何东西(至少ebtables -t nat -L --Lc显示了 0 个计数器)
请帮忙!太感谢了!
这与this question类似,但不同:
Linux 电脑有两个网卡。eth0静态分配了一个 IP。eth1 是由现场人员分配的,可以是相同的IP,也可以是不同的IP。该计划是为了eth0并且eth1将在不同的网络上,并且永远不会交换或桥接任何数据包。而我的Linux应用程序只监听和接受的连接eth0和eth1,并开始在接收到数据包发送,但从未尝试开展任何活动。
两个网卡是否可以在同一个子网中拥有 IP:192.168.1.4和 192.168.1.5?正如您所看到的eth0,eth1它们被分配到同一个子网 ( 255.255.255.0) 中,但它们没有连接,也不应该连接。
在这种情况下,当应用程序侦听eth0port 55555,接受连接并返回数据包时,底层是否知道它应该返回 eth0 ?或者它可能会尝试,eth1因为操作系统认为它在同一个子网上?我需要对路由表做些什么来确保它不认为这两个网卡实际上在同一个子网上?
在这种情况下,我应该不仅避免使用相似的 IP,还应该避免使用相同的子网吗?
如果 PC0 和 PC1 的 IP 相同怎么办?
PC0 (1.100) <-------> [eth0 (1.4) My System eth1 (1.5)]<-------PC1(1.100)
Run Code Online (Sandbox Code Playgroud)
我的应用程序需要在 eth0 和 eth1 上侦听端口 55555,并且请求通过 eth1 传入,操作系统是否知道通过 eth1 进行回复?这样的配置会不会有问题?
商业案例是我正在构建这个嵌入式系统,并且我为 eth0 和 PC0 预定义了 IP(PC0 也可以是 DHCP)。但是我的客户已经在右侧有一个网络。如果他们的设备与 PC0 …
通常我使用 MikroTik 嵌入式路由器,它们基于 Linux,因此它们的防火墙设置感觉与 iptables 几乎 1:1 相同,只是命令有点不同,但机制相同。一些更高级的带有原始 iptables 的 MTK 防火墙功能可以使用-m扩展来实现- 例如连接状态或注释。
我在原始 iptables 中找不到禁用选项。是否有任何 iptables 扩展允许暂时禁用 iptables 规则?
暂时我的意思是禁用规则而不实际将其从表中删除,以便它仍然可见iptables -L但不起作用。在 MTK 中,您可以输入类似的内容set 40 disabled=yes然后稍后set 40 disabled=no
我试图让我的应用程序在 Docker 中正常运行,但遇到了问题。
该应用程序以 PASV 模式连接到远程 FTP 服务器,并 PUT 文件。非常简单,无需 docker 即可正常工作。FTP 服务器和客户端都不在任何 NAT 之后;但是客户端变成了 NAT,因为我使用的是 Docker 桥接网络。(使用默认网桥配置http://pastie.org/10954592)
如果我在运行客户端应用程序时查看 FTP 服务器上的 tshark,它会交换大量数据包,因此它正在“连接”到服务器,但应用程序没有收到任何回复。这让我假设当 FTP 服务器尝试在该经验端口上响应时,它不会从主机操作系统路由回 Docker 容器。
所以,希望总结一下,有没有什么好的方法可以将这些 pasv 端口正确转发到 docker 网桥?约束:我无法控制生产中的 FTP 服务器,所以我不能简单地硬编码 iptables 的 pasv 端口列表。
感谢您的任何想法!
这对你来说似乎是一个愚蠢的问题,但我需要确保我的想法是正确的。我正在使用 USB 无线适配器(连接到我的笔记本电脑)、dnsmasq 和 hostapd 来创建本地无线网络。它正在工作,我可以连接更多设备并相互ping通。现在我想在这个无线局域网中阻止主机内的 ping。我尝试在插入 USB 无线适配器的笔记本电脑上使用 iptables,但它不起作用,这是我的命令:
iptables -A FORWARD -p icmp -j DROP
Run Code Online (Sandbox Code Playgroud)
但是我还是可以ping通。所以我认为作为同一个无线局域网中的两台主机,我不能使用 iptables,因为发送帧时没有使用第 3 层标头,我在无线适配器上运行的热点只是使用 802.11 地址字段来路由数据包(L2 标头)。这是正确的吗?谢谢
我正在做家庭项目,并且想为我的机器提供分配给我在云中的 VPS 的公共 IP 地址。
在家里,我有一个公共 IP 地址,并且已经设置了 Wireguard 服务器,外部端口 1194 被转发到该计算机,因此来自互联网的 WG 客户端可以连接到它。
现在,我在云中有一个带有静态公共IP地址的VPS(假设有一个IP 44.44.44.44),而且我在本地网络中有一台机器(假设有一个IP 192.168.1.3),我希望本地网络中的机器将流量处理为它实际上拥有44.44.44.44云中 VPS 的公共 IP( )。这意味着到达 VPS 的所有传入流量都将路由到192.168.1.3本地网络中的计算机 ( )。
我使用 Wireguard 连接 WG 服务器和 VPS 没有任何问题,甚至通过 WG 服务器重定向来自 VPS 的所有流量(使用 iptables NAT 规则),但我陷入了路由来自 VPS 的传入流量保留原始流量的部分本地网络中机器的 IP 地址。
我的客户端(VPS)WG配置:
[Interface]
PrivateKey = dGhpcyBpcyBub3QgdGhlIGtleSA7KQ==
Address = 10.66.66.2/24
#This was part of the test usin
#PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 …Run Code Online (Sandbox Code Playgroud)