termux / proot

An chroot-like implementation using ptrace.
https://wiki.termux.com/wiki/PRoot
Other
742 stars 162 forks source link

Internet breaks #249

Closed HeavySnowJakarta closed 1 year ago

HeavySnowJakarta commented 1 year ago

Problem description

The network works finely in Termux, but not in proof-distro archlinux. Pinging neither 8.8.8.8 nor a local DNS server 114.114.114.114 works. Here is some information:

Termux layer: OS: Android 11 aarch64 Host: OPPO PEQM00 Kernel: 4.14.186+ CPU: MT6877V/ZA

Arch Linux layer: Uname: Linux localhost 5.4.0-faked #1 SMP PREEMPT Thu Feb 17 18:49:20 CST 2022 aarch64 GNU/Linux

Proot version: 5.1.0 built-in accelerators: process_vm = yes, seccomp_filter = yes

Proot-distro version 3.3.0

When I run ip addr in the proot layer it outputs:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ccmni0: <NOARP,UP,LOWER_UP> mtu 1400 qdisc mq state UNKNOWN group default qlen 1000
    link/[519] 46:ea:94:92:4a:2a brd ff:ff:ff:ff:ff:ff
    inet6 2408:852b:4200:31de:1:1:9be8:8fd2/64 scope global dynamic mngtmpaddr
       valid_lft forever preferred_lft forever
    inet6 fe80::1:1:9be8:8fd2/64 scope link
       valid_lft forever preferred_lft forever
3: ccmni1: <NOARP,UP,LOWER_UP> mtu 1400 qdisc mq state UNKNOWN group default qlen 1000
    link/[519] da:0a:26:82:f6:ec brd ff:ff:ff:ff:ff:ff
    inet 10.37.132.118/8 scope global ccmni1
       valid_lft forever preferred_lft forever
    inet6 2408:842b:4300:2d2:1:2:53f9:5292/64 scope global dynamic mngtmpaddr
       valid_lft forever preferred_lft forever
    inet6 fe80::1:2:53f9:5292/64 scope link
       valid_lft forever preferred_lft forever
4: ccmni2: <NOARP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/[519] ae:e8:2e:08:e9:4f brd ff:ff:ff:ff:ff:ff
5: ccmni3: <NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/[519] b6:77:62:15:3d:de brd ff:ff:ff:ff:ff:ff
6: ccmni4: <NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/[519] b6:29:ec:b6:fd:2e brd ff:ff:ff:ff:ff:ff
7: ccmni5: <NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/[519] 96:3c:cc:97:62:53 brd ff:ff:ff:ff:ff:ff
8: ccmni6: <NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/[519] be:e4:fa:c0:38:ca brd ff:ff:ff:ff:ff:ff
9: ccmni7: <NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/[519] aa:bf:fb:d8:97:b8 brd ff:ff:ff:ff:ff:ff
10: ccmni8: <NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/[519] e6:c3:3c:ff:6c:8b brd ff:ff:ff:ff:ff:ff
11: ccmni9: <NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/[519] ba:e6:ef:44:fe:9e brd ff:ff:ff:ff:ff:ff
12: ccmni10: <NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/[519] ae:c7:be:c1:75:3b brd ff:ff:ff:ff:ff:ff
13: ccmni11: <NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/[519] 92:c7:ab:55:5d:a8 brd ff:ff:ff:ff:ff:ff
14: ccmni12: <NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/[519] 26:6e:d1:79:b3:39 brd ff:ff:ff:ff:ff:ff
15: ccmni13: <NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/[519] 5a:6d:78:3b:78:68 brd ff:ff:ff:ff:ff:ff
16: ccmni14: <NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/[519] 7e:54:e1:72:e9:7c brd ff:ff:ff:ff:ff:ff
17: ccmni15: <NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/[519] f6:2d:f3:51:fd:6f brd ff:ff:ff:ff:ff:ff
18: ccmni16: <NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/[519] c2:7e:9c:84:67:82 brd ff:ff:ff:ff:ff:ff
19: ccmni17: <NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/[519] 9a:b7:42:1a:0e:db brd ff:ff:ff:ff:ff:ff
20: ccmni18: <NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/[519] ca:db:f6:58:15:5f brd ff:ff:ff:ff:ff:ff
21: ccmni19: <NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/[519] c6:d1:02:ae:6b:f2 brd ff:ff:ff:ff:ff:ff
22: ccmni20: <NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/[519] 06:be:ca:a3:33:84 brd ff:ff:ff:ff:ff:ff
23: ccmni-lan: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 72:35:48:40:32:41 brd ff:ff:ff:ff:ff:ff
24: dummy0: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
    link/ether 0a:e0:37:7b:a7:2e brd ff:ff:ff:ff:ff:ff
    inet6 fe80::8e0:37ff:fe7b:a72e/64 scope link
       valid_lft forever preferred_lft forever
25: ifb0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 32
    link/ether 66:47:6c:86:a9:5e brd ff:ff:ff:ff:ff:ff
26: ifb1: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 32
    link/ether 16:44:39:c8:22:1a brd ff:ff:ff:ff:ff:ff
27: imq0: <NOARP> mtu 16000 qdisc noop state DOWN group default qlen 1000
    link/void
28: imq1: <NOARP> mtu 16000 qdisc noop state DOWN group default qlen 1000
    link/void
29: ip_vti0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
    link/ipip 0.0.0.0 brd 0.0.0.0
30: ip6_vti0@NONE: <NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/tunnel6 :: brd ::
31: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
    link/sit 0.0.0.0 brd 0.0.0.0
32: ip6tnl0@NONE: <NOARP> mtu 1452 qdisc noop state DOWN group default qlen 1000
    link/tunnel6 :: brd ::
34: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1420 qdisc mq state UP group default qlen 3000
    link/ether 4c:50:f1:a5:ab:7f brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.3/24 brd 192.168.1.255 scope global wlan0
       valid_lft forever preferred_lft forever
    inet6 fe80::2146:5de5:4a79:54e/64 scope link stable-privacy
       valid_lft forever preferred_lft forever
35: wlan1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 3000
    link/ether 4c:50:f1:a7:ab:7f brd ff:ff:ff:ff:ff:ff
36: p2p0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 8a:e1:77:0d:96:de brd ff:ff:ff:ff:ff:ff
37: ap0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 4a:50:f1:a5:ab:7f brd ff:ff:ff:ff:ff:ff
39: tun0: <POINTOPOINT,UP,LOWER_UP> mtu 9000 qdisc pfifo_fast state UNKNOWN group default qlen 500
    link/none
    inet 172.19.0.1/30 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::d207:80d6:150:37ba/64 scope link stable-privacy
       valid_lft forever preferred_lft forever

And when I run dhcpcd it outputs:

ps_root_startcb: dhcp_openraw: Operation not permitted
ps_root_startcb: ipv6nd_open: Operation not permitted
ps_root_startcb: dhcp6_openraw: Operation not permitted
ps_inet_startcb: dhcp_open: Permission denied
ps_inet_startcb: ipv6nd_open: Operation not permitted
dhcp6_openudp: Permission denied
ps_inet_startcb: dhcp6_open: Permission denied

Hope them to be useful.

What steps will reproduce the bug?

Ping any hosts

What is the expected behavior?

Network works

Originally submitted by @HeavySnowJakarta in https://github.com/termux/proot-distro/issues/267

michalbednarski commented 1 year ago

Unfortunately I wasn't able to reproduce issue even though I used test device with Android 11 and matching kernel version via BrowserStack

Because of that I'm not able to identify issue myself, although I might have few suspicions

Could you try running following commands and reporting if they work (outside proot, after installing curl and dnsutils from Termux apt):

proot-distro login ubuntu -- apt update
proot-distro login ubuntu -- $(which curl) example.com
proot -b /dev/null:/dev/socket/fwmarkd curl example.com
dig example.com
dig @8.8.8.8 example.com