标签: iproute

iptables:filter 和 mangle 有什么区别

我正在使用 iptables 来标记包并希望根据标记进行路由。

首先我添加了ip规则:

sudo ip rule add fwmark 1 prohibit
Run Code Online (Sandbox Code Playgroud)

(“禁止”仅用于测试,稍后我将其更改为某个路由表。)

然后我开始标记包裹:

sudo iptables -A OUTPUT -d 192.168.1.0/24 -j MARK --set-mark 1
Run Code Online (Sandbox Code Playgroud)

但是电脑仍然可以访问192.168.1.0/24网络。

经过长时间的谷歌搜索和挣扎,我尝试过:

sudo iptables -t mangle -A OUTPUT -d 192.168.1.0/24 -j MARK --set-mark 1
Run Code Online (Sandbox Code Playgroud)

它有效并且连接被阻止。

在第一种情况下,使用过滤器的默认表。所以我的问题是 mangle table 和 filter table 之间有什么区别?在什么情况下应该使用哪一个?据我了解,所有这些表都会在路由策略之前进行查询,那么为什么过滤表不能正常工作呢?

linux routing iptables iproute

3
推荐指数
1
解决办法
6014
查看次数

接口向上和向下?

$ ip link | grep vboxnet
10: vboxnet0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
Run Code Online (Sandbox Code Playgroud)

在尖括号中,它说UP。尖括号表示什么?

进一步,它声称state DOWN。这似乎与之前的信息相冲突。接口是up还是down?

在手册页、ip-linkip和 中ip-address,我找不到尖括号的含义。

iproute

3
推荐指数
1
解决办法
527
查看次数

如何在 Linux / Ubuntu 18.04 上利用 Windows 10 连接共享访问受 ZScaler 保护的网站

在没有专用 Ubuntu 客户端的情况下,如何使用 ZScaler 通过 Ubuntu 访问受保护的网站?

linux networking windows iproute

3
推荐指数
1
解决办法
5227
查看次数

ip link set &lt;interface&gt; up / down:如何调用脚本?

根据发行版,调用ip link set <iface> up(或 down;还有 ifup / ifdown)将查看各种配置文件(Debian 上的 /etc/network/interfaces 我认为,Gentoo 有 /etc/conf.d/net...),并进行更改(例如与 DHCP 交互等)

据我所见strace,该ip命令直接与内核对话(是这样吗?)。但最终,有人启动这些 shell 脚本/读取配置。这背后的机制是什么?init 系统是否在某些内核接口上侦听 up/down 状态更改并启动这些脚本?或者有什么不同吗?

iproute ifconfig

2
推荐指数
1
解决办法
3943
查看次数

iptables -p 使用 tcp/udp 以外的协议

根据我的理解,iptables 在传输层(第 4 层)上工作,发生的任何数据包过滤都基于第 4 层的 ip 协议,如 tcp 和 udp。因此,如果我们在iptables -p选项中输入 esp、gre 和 l2tp 等协议,这是否有意义?我们可以使用 iptables 过滤基于第 2/3 层协议的数据包吗?如果不是,那么iptables是如何基于icmp协议过滤数据包的呢?

iptables 新手,我仍在学习。谢谢!

linux iptables linux-kernel iproute network-interface

2
推荐指数
1
解决办法
402
查看次数

特定 IP 地址将通过哪个接口进行路由?

有没有办法确定给定 IP 地址将在 bash/shell 语言中通过 \xe2\x80\xa6 路由到哪个 netdev 或 IP 链接接口?

\n

这与 IP 地址是什么(给定网络设备名称)无关。

\n

给定目标 IP 地址,bash 将自动确定(在操作系统的内部 IP 路由表的帮助下netstat -i -n)打印网络设备名称。

\n

bash netstat iproute

2
推荐指数
1
解决办法
852
查看次数

如何将所有流量从特定接口路由到特定网关而不是默认路由?

在我的机器上,我有两个接口:(wlan0默认路由)和tun0. 该tun0接口只是一个本地网络,它的 IP 范围是172.16.150.0/24,我的机器(机器 A)的 IP 地址是172.16.150.1,另一台机器(机器 B)的 IP 地址是172.16.150.128。我设置了一个 wifi 热点,它为我创建了另一个界面ap0。我想ap0通过机器B路由来自接口的所有流量(因此网关应该是172.16.150.128)。

$ ip route
default via 192.168.0.1 dev wlan0 proto dhcp src 192.168.0.179 metric 1024
172.16.150.0/24 dev tun0 proto kernel scope link src 172.16.150.1 metric 1024
192.168.0.0/24 dev wlan0 proto kernel scope link src 192.168.0.179 metric 1024 
192.168.0.1 dev wlan0 proto dhcp scope link src 192.168.0.179 metric 1024 
192.168.12.0/24 dev ap0 …
Run Code Online (Sandbox Code Playgroud)

linux routing iproute

2
推荐指数
1
解决办法
1万
查看次数

如何通过URL删除ip路由?

运行(可能已损坏)openvpn 脚本后,我有一个 IP 路由表,其中一个条目是 URL:

# netstat -r                                        
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
default         10.0.0.1        0.0.0.0         UG        0 0          0 wlp58s0
10.0.0.0        0.0.0.0         255.255.255.0   U         0 0          0 wlp58s0
google.com      10.0.0.1        255.255.255.255 UGH       0 0          0 wlp58s0
Run Code Online (Sandbox Code Playgroud)

如何删除最后一行?常规方式抛出错误:

# ip route del google.com
Error: any valid prefix is expected rather than "google.com".
Run Code Online (Sandbox Code Playgroud)

如果这很重要,我在 gentoo linux 上。

linux networking iproute

1
推荐指数
1
解决办法
826
查看次数

使用 ip netns (iproute2) 进行命名空间管理

我想知道在哪里查找应用于自定义命名空间的更改。假设我有一个命名空间“ns1”,里面有虚拟接口“vpeer”和“lo”,我想通过 dnsmasq 或 hostapd 修改接口“vpeer”的配置,然后我知道我可以这样做,例如

$ ip netns exec ns1 bash
$ dnsmasq --interface=vpeer-ns1 --dhcp-range=192.168.0.100,192.168.0.200,255.255.255.0
Run Code Online (Sandbox Code Playgroud)

并且 netns 正在通过为我安装它并管理任何任务来完成其余的工作,我对此表示感谢。但是,在全局命名空间中,我可以监视在相应文件中所做的更改或直接将它们应用到文件中。例如在/etc/dnsmasq.conf/etc/hostapd/hostapd.conf 中

所以我的问题是,如何在某个 netns 命名空间中复制默认命名空间行为。我真的需要知道我已经做了什么以及“ns1”中接口的当前配置是什么。尤其是因为大多数教程都解释了这样的过程。该IP netns手册页说,配置文件位于

$ /etc/netns/ns1/
Run Code Online (Sandbox Code Playgroud)

但在创建命名空间“ns1”后,甚至目录 /etc/netns 都不存在。新命名空间仅在 /var/run/netns/ns1 中表示。该文件始终为空 - 即使在应用上述 dnsmasq 命令之后 - 并且 nano 显示为空文件,但在文件关闭后给我一些奇怪的错误说

ns1: Argument is invalid.
Run Code Online (Sandbox Code Playgroud)

所以我切换到命名空间“ns1”并再次尝试。结果一样。所以我关闭了新命名空间中的每个设备

$ ip netns exec ns1 ip link set dev lo down
$ ip netns exec ns1 ip link set dev vpeer down
Run Code Online (Sandbox Code Playgroud)

同样的结果。

那么如何访问与给定命名空间相关的配置文件,因为应用程序根本不知道非默认命名空间?先感谢您。

dnsmasq iproute namespace hostapd

1
推荐指数
1
解决办法
2596
查看次数