FreeBSD(ゲストOS / VM)起動プロセス中に、特定の時点でLinuxホストOS(Devuan 5)のtap0に割り当てられているIPアドレス(169.254.149.209)を削除したいと思います。次のようにudevルールを作成します。 /etc/udev/rules.d/01-flush-tap0.rules:
KERNEL=="tap0", ACTION=="add", RUN+="/bin/bash -c '/bin/sleep 5; /sbin/ip a fl dev tap0'"
次のコマンドで有効にしました。 udevadm trigger
再起動してfreeebd VMを起動しました。残念ながら、tap0のIPは消えませんでした。以下のログメッセージが理由を理解するのに役立ちますか? [ 86.952262] bridge: filtering via arp/ip/ip6tables is no longer available by
default. Update your scripts to load br_netfilter if you need this.
[ 88.828606] br1: port 1(tap0) entered blocking state [ 88.828627] br1: port 1(tap0) entered disabled state
[ 88.828941] device tap0 entered promiscuous mode
[ 88.829104] br1: port 1(tap0) entered blocking state [ 88.829119] br1: port 1(tap0) entered forwarding state
とにかく以下のルールを見てください。 70-persistent-net.rules :
This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.
# USB device 0x:0x (usb)
SUBSYSTEM=="net", ACTION=="add",DRIVERS=="?*",ATTR{address}=="00:60:70:01:00:bf",
ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
SUBSYSTEM=="net" を使用しますが、KERNEL=="tap0" を使用します。 KERNEL=="tap0"が合っているかどうかわかりません。私はSUBSYSTEM =="net"が良いと思います...または?エラーがどこにあるのかご存知ですか?
Tracerouteはすべてのユーザーに機能しますが、rootとして実行するとすべてが「* * *」です。 # As root user
[root]# /usr/bin/traceroute 1.1.1.1 -I
traceroute to 1.1.1.1 (1.1.1.1), 30 hops max, 60 byte packets
1 * * *
2 * * *
3 * * *
4 one.one.one.one (1.1.1.1) 2.436 ms 2.433 ms 2.417 ms
# Switch to non-root user
[root]# su sam
# As non-root user
[sam]$ /usr/bin/traceroute 1.1.1.1 -I
traceroute to 1.1.1.1 (1.1.1.1), 30 hops max, 60 byte packets
1 169.254.100.0 (169.254.100.0) 1.291 ms 1.250 ms 1.243 ms
2 13.106.232.74 (13.106.232.74) 3.202 ms 3.188 ms 3.420 ms
3 172.70.160.4 (172.70.160.4) 6.058 ms 6.053 ms 6.035 ms
4 one.one.one.one (1.1.1.1) 2.437 ms 2.434 ms 2.431 ms
[sam]$
Environment:
RockyLinux 9.2 (Blue Onyx)
kernel 5.14.0-284.18.1.el9_2.x86_64
traceroute-2.1.0-16.el9.src.rpm
Azure VM (Official Rocky image - clean install)
ファイアウォールや権限のあるルート以外のユーザーが追跡パスを実行できないことを見たことがありますが、今日はその逆のことが起こりました! 以下は、以下の意見に基づいたいくつかの調査です。 IPテーブル: [root]# iptables-save -c
# Generated by iptables-save v1.8.8 (nf_tables) on Sun Oct 8 13:33:21 2023
*security
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [8239:955658]
[0:0] -A OUTPUT -d 168.63.129.16/32 -p tcp -m tcp --dport 53 -j ACCEPT
[6259:1742375] -A OUTPUT -d 168.63.129.16/32 -p tcp -m owner --uid-owner 0 -j ACCEPT
[0:0] -A OUTPUT -d 168.63.129.16/32 -p tcp -m conntrack --ctstate INVALID,NEW -j DROP
COMMIT
# Completed on Sun Oct 8 13:33:21 2023
# Generated by iptables-save v1.8.8 (nf_tables) on Sun Oct 8 13:33:21 2023
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
# Completed on Sun Oct 8 13:33:21 2023
帽子を受け取る # As root user
[root]# /sbin/getcap $(readlink -e /usr/bin/traceroute)
/usr/bin/traceroute cap_net_admin=ep
# Switch to non-root user
[root]# su sam
# As non-root user
[sam]$ /sbin/getcap $(readlink -e /usr/bin/traceroute)
/usr/bin/traceroute cap_net_admin=ep
[sam]$
知的財産権規則 # ip rule
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
NFTルールセット # nft list ruleset
table ip security {
chain OUTPUT {
type filter hook output priority 150; policy accept;
ip daddr 168.63.129.16 tcp dport 53 counter packets 0 bytes 0 accept
meta l4proto tcp ip daddr 168.63.129.16 skuid 0 counter packets 6159 bytes 1716902 accept
meta l4proto tcp ip daddr 168.63.129.16 ct state invalid,new counter packets 0 bytes 0 drop
}
}
table ip filter {
}
SELinux # sestatus
SELinux status: disabled