vopono
vopono copied to clipboard
Unable to connect
- Arch Linux (
Linux 5.16.2-zen1-1-zen x86_64 GNU/Linux
) - vopono 0.8.11-1 (built and installed via aur package
vopono
) - Networking system: systemd-networkd (no NetworkManager or firewalld; nftables modules loaded)
When trying Wireguard:
$ vopono -v exec --provider mullvad --server belgium --protocol wireguard --no-killswitch --firewall nftables -- 'curl -v https://1.1.1.1' 2022-02-28T13:25:06.629Z DEBUG vopono::util > Using config dir from $HOME config: /root/.config
2022-02-28T13:25:06.629Z DEBUG vopono::util > Using config dir from $SUDO_USER config: /home/user/.config
2022-02-28T13:25:06.633Z WARN vopono > Could not parse PULSE_SERVER from pactl info output: Err(Could not parse pactl output!:
)
2022-02-28T13:25:06.633Z DEBUG vopono::util > Using config dir from $HOME config: /root/.config
2022-02-28T13:25:06.633Z DEBUG vopono::util > Using config dir from $SUDO_USER config: /home/user/.config
2022-02-28T13:25:06.634Z DEBUG vopono::util > Existing namespaces: []
2022-02-28T13:25:06.634Z DEBUG vopono::util > Using config dir from $HOME config: /root/.config
2022-02-28T13:25:06.634Z DEBUG vopono::util > Using config dir from $SUDO_USER config: /home/user/.config
2022-02-28T13:25:06.634Z DEBUG vopono::util > Using config dir from $HOME config: /root/.config
2022-02-28T13:25:06.634Z DEBUG vopono::util > Using config dir from $SUDO_USER config: /home/user/.config
2022-02-28T13:25:06.634Z DEBUG vopono::exec > vopono config.toml: configuration property "custom_config" not found
2022-02-28T13:25:06.634Z DEBUG vopono::exec > vopono config.toml: configuration property "postup" not found
2022-02-28T13:25:06.634Z DEBUG vopono::exec > vopono config.toml: configuration property "predown" not found
2022-02-28T13:25:06.634Z DEBUG vopono::exec > vopono config.toml: configuration property "user" not found
2022-02-28T13:25:06.634Z DEBUG vopono::exec > vopono config.toml: configuration property "dns" not found
2022-02-28T13:25:06.634Z DEBUG vopono::util > Using config dir from $HOME config: /root/.config
2022-02-28T13:25:06.634Z DEBUG vopono::util > Using config dir from $SUDO_USER config: /home/user/.config
2022-02-28T13:25:06.634Z DEBUG vopono::network_interface > ip addr
2022-02-28T13:25:06.635Z DEBUG vopono::exec > Interface: enp6s0
2022-02-28T13:25:06.635Z DEBUG vopono::util > Using config dir from $HOME config: /root/.config
2022-02-28T13:25:06.635Z DEBUG vopono::util > Using config dir from $SUDO_USER config: /home/user/.config
2022-02-28T13:25:06.636Z INFO vopono::util > Chosen config: /home/user/.config/vopono/mv/wireguard/belgium-be1.conf
2022-02-28T13:25:06.636Z DEBUG vopono::util > Existing namespaces: []
2022-02-28T13:25:06.636Z DEBUG vopono::util > ip netns add vopono_mv_belgium
2022-02-28T13:25:06.637Z INFO vopono::netns > Created new network namespace: vopono_mv_belgium
2022-02-28T13:25:06.638Z DEBUG vopono::util > Existing interfaces: [...]
2022-02-28T13:25:06.639Z DEBUG vopono::util > Assigned IPs: [...]
2022-02-28T13:25:06.639Z DEBUG vopono::netns > ip netns exec vopono_mv_belgium ip addr add 127.0.0.1/8 dev lo
2022-02-28T13:25:06.640Z DEBUG vopono::netns > ip netns exec vopono_mv_belgium ip link set lo up
2022-02-28T13:25:06.641Z DEBUG vopono::veth_pair > NetworkManager not detected running
2022-02-28T13:25:06.641Z DEBUG vopono::veth_pair > firewalld not detected running
2022-02-28T13:25:06.641Z DEBUG vopono::util > ip link add mv_belgium_d type veth peer name mv_belgium_s
2022-02-28T13:25:06.643Z DEBUG vopono::util > ip link set mv_belgium_d up
2022-02-28T13:25:06.643Z DEBUG vopono::util > ip link set mv_belgium_s netns vopono_mv_belgium up
2022-02-28T13:25:06.655Z DEBUG vopono::util > ip addr add 10.200.6.1/24 dev mv_belgium_d
2022-02-28T13:25:06.656Z DEBUG vopono::netns > ip netns exec vopono_mv_belgium ip addr add 10.200.6.2/24 dev mv_belgium_s
2022-02-28T13:25:06.659Z DEBUG vopono::netns > ip netns exec vopono_mv_belgium ip route add default via 10.200.6.1 dev mv_belgium_s
2022-02-28T13:25:06.662Z INFO vopono::netns > IP address of namespace as seen from host: 10.200.6.2
2022-02-28T13:25:06.662Z INFO vopono::netns > IP address of host as seen from namespace: 10.200.6.1
2022-02-28T13:25:06.662Z DEBUG vopono::util > nft add table inet vopono_nat
2022-02-28T13:25:06.664Z DEBUG vopono::util > nft add chain inet vopono_nat postrouting { type nat hook postrouting priority 100 ; }
2022-02-28T13:25:06.665Z DEBUG vopono::util > nft add rule inet vopono_nat postrouting oifname enp6s0 ip saddr 10.200.6.0/24 counter masquerade 2022-02-28T13:25:06.667Z DEBUG vopono::util > nft add table inet vopono_bridge
2022-02-28T13:25:06.669Z DEBUG vopono::util > nft add chain inet vopono_bridge forward { type filter hook forward priority -10 ; }
2022-02-28T13:25:06.670Z DEBUG vopono::util > nft add rule inet vopono_bridge forward iifname mv_belgium_d oifname enp6s0 counter accept
2022-02-28T13:25:06.672Z DEBUG vopono::util > nft add rule inet vopono_bridge forward oifname mv_belgium_d iifname enp6s0 counter accept
2022-02-28T13:25:06.673Z DEBUG vopono::util > sysctl -q net.ipv4.ip_forward=1 2022-02-28T13:25:06.674Z DEBUG vopono::wireguard > Deserializing: $VPN_DNS to Vec<IpAddr>
2022-02-28T13:25:06.674Z DEBUG vopono::wireguard > TOML config: WireguardConfig { interface: WireguardInterface { private_key: "$PRIVKEY", address: [$IPV4/32, $IPV6/128], dns: Some([$VPN_DNS]) }, peer: WireguardPeer {public_key: "$PUBKEY", allowed_ips: [0.0.0.0/0, ::/0], endpoint: 193.9.114.2:51819 } } 2022-02-28T13:25:06.674Z DEBUG vopono::netns > ip netns exec vopono_mv_belgium ip link add mv_belgium type wireguard 2022-02-28T13:25:06.675Z DEBUG vopono::netns > ip netns exec vopono_mv_belgium wg setconf mv_belgium /tmp/vopono_nft.conf
2022-02-28T13:25:06.677Z DEBUG vopono::netns > ip netns exec vopono_mv_belgium ip -4 address add $IPV4/32 dev mv_belgium
2022-02-28T13:25:06.678Z DEBUG vopono::netns > ip netns exec vopono_mv_belgium ip -6 address add $IPV6/128 dev mv_belgium 2022-02-28T13:25:06.679Z DEBUG vopono::netns > ip netns exec vopono_mv_belgium ip link set mtu 1420 up dev mv_belgium
2022-02-28T13:25:06.680Z DEBUG vopono::dns_config > Setting namespace vopono_mv_belgium DNS server to $VPN_DNS
2022-02-28T13:25:06.680Z DEBUG vopono::netns > ip netns exec vopono_mv_belgium wg set mv_belgium fwmark $PORT
2022-02-28T13:25:06.681Z DEBUG vopono::netns > ip netns exec vopono_mv_belgium ip -4 route add 0.0.0.0/0 dev mv_belgium table $PORT
2022-02-28T13:25:06.682Z DEBUG vopono::netns > ip netns exec vopono_mv_belgium ip -4 rule add not fwmark $PORT table $PORT
2022-02-28T13:25:06.683Z DEBUG vopono::netns > ip netns exec vopono_mv_belgium ip -4 rule add table main suppress_prefixlength 0
2022-02-28T13:25:06.684Z DEBUG vopono::util > sysctl -q net.ipv4.conf.all.src_valid_mark=1
2022-02-28T13:25:06.684Z DEBUG vopono::netns > ip netns exec vopono_mv_belgium ip -6 route add ::/0 dev mv_belgium table $PORT
2022-02-28T13:25:06.685Z DEBUG vopono::netns > ip netns exec vopono_mv_belgium ip -6 rule add not fwmark $PORT table $PORT
2022-02-28T13:25:06.686Z DEBUG vopono::netns > ip netns exec vopono_mv_belgium ip -6 rule add table main suppress_prefixlength 0
2022-02-28T13:25:06.687Z DEBUG vopono::netns > ip netns exec vopono_mv_belgium nft -f /tmp/vopono_nft.sh
2022-02-28T13:25:06.689Z DEBUG vopono::util > Using config dir from $HOME config: /root/.config
2022-02-28T13:25:06.689Z DEBUG vopono::util > Using config dir from $SUDO_USER config: /home/user/.config
2022-02-28T13:25:06.690Z DEBUG vopono::netns > Writing lockfile: /home/user/.config/vopono/locks/vopono_mv_belgium
2022-02-28T13:25:06.690Z DEBUG vopono::netns > Lockfile written: /home/user/.config/vopono/locks/vopono_mv_belgium/xxxx
2022-02-28T13:25:06.690Z DEBUG vopono::util > Using config dir from $HOME config: /root/.config
2022-02-28T13:25:06.690Z DEBUG vopono::util > Using config dir from $SUDO_USER config: /home/user/.config
2022-02-28T13:25:06.737Z DEBUG vopono::netns > ip netns exec vopono_mv_belgium sudo -Eu user curl -v https://1.1.1.1
2022-02-28T13:25:06.738Z INFO vopono::exec > Application curl -v https://1.1.1.1 launched in network namespace vopono_mv_belgium withpid 2250980* Trying 1.1.1.1:443...* connect to 1.1.1.1 port 443 failed: Connection timed out
OpenVPN:
$ vopono -v exec --provider mullvad --server belgium --protocol openvpn --no-killswitch --firewall nftables -- 'curl -v https://1.1.1.1'
2022-02-28T13:34:50.405Z DEBUG vopono::util > Using config dir from $HOME config: /root/.config
2022-02-28T13:34:50.405Z DEBUG vopono::util > Using config dir from $SUDO_USER config: /home/user/.config
2022-02-28T13:34:50.409Z WARN vopono > Could not parse PULSE_SERVER from pactl info output: Err(Could not parse pactl output!:
)
2022-02-28T13:34:50.409Z DEBUG vopono::util > Using config dir from $HOME config: /root/.config
2022-02-28T13:34:50.409Z DEBUG vopono::util > Using config dir from $SUDO_USER config: /home/user/.config
2022-02-28T13:34:50.409Z DEBUG vopono::util > Existing namespaces: []
2022-02-28T13:34:50.409Z DEBUG vopono::util > Using config dir from $HOME config: /root/.config
2022-02-28T13:34:50.409Z DEBUG vopono::util > Using config dir from $SUDO_USER config: /home/user/.config
2022-02-28T13:34:50.409Z DEBUG vopono::util > Using config dir from $HOME config: /root/.config
2022-02-28T13:34:50.409Z DEBUG vopono::util > Using config dir from $SUDO_USER config: /home/user/.config
2022-02-28T13:34:50.409Z DEBUG vopono::exec > vopono config.toml: configuration property "custom_config" not found
2022-02-28T13:34:50.409Z DEBUG vopono::exec > vopono config.toml: configuration property "postup" not found
2022-02-28T13:34:50.409Z DEBUG vopono::exec > vopono config.toml: configuration property "predown" not found
2022-02-28T13:34:50.409Z DEBUG vopono::exec > vopono config.toml: configuration property "user" not found
2022-02-28T13:34:50.409Z DEBUG vopono::exec > vopono config.toml: configuration property "dns" not found
2022-02-28T13:34:50.409Z DEBUG vopono::util > Using config dir from $HOME config: /root/.config
2022-02-28T13:34:50.409Z DEBUG vopono::util > Using config dir from $SUDO_USER config: /home/user/.config
2022-02-28T13:34:50.409Z DEBUG vopono::network_interface > ip addr
2022-02-28T13:34:50.410Z DEBUG vopono::exec > Interface: enp6s0
2022-02-28T13:34:50.410Z DEBUG vopono::util > Using config dir from $HOME config: /root/.config
2022-02-28T13:34:50.410Z DEBUG vopono::util > Using config dir from $SUDO_USER config: /home/user/.config
2022-02-28T13:34:50.410Z INFO vopono::util > Chosen config: /home/user/.config/vopono/mv/openvpn/belgium-be.ovpn
2022-02-28T13:34:50.411Z DEBUG vopono::util > Existing namespaces: []
2022-02-28T13:34:50.411Z DEBUG vopono::util > ip netns add vopono_mv_belgium
2022-02-28T13:34:50.412Z INFO vopono::netns > Created new network namespace: vopono_mv_belgium
2022-02-28T13:34:50.413Z DEBUG vopono::util > Existing interfaces: 146: [...]
2022-02-28T13:34:50.413Z DEBUG vopono::util > Assigned IPs: [...]
2022-02-28T13:34:50.413Z DEBUG vopono::netns > ip netns exec vopono_mv_belgium ip addr add 127.0.0.1/8 dev lo
2022-02-28T13:34:50.414Z DEBUG vopono::netns > ip netns exec vopono_mv_belgium ip link set lo up
2022-02-28T13:34:50.416Z DEBUG vopono::veth_pair > NetworkManager not detected running
2022-02-28T13:34:50.416Z DEBUG vopono::veth_pair > firewalld not detected running
2022-02-28T13:34:50.416Z DEBUG vopono::util > ip link add mv_belgium_d type veth peer name mv_belgium_s
2022-02-28T13:34:50.418Z DEBUG vopono::util > ip link set mv_belgium_d up
2022-02-28T13:34:50.418Z DEBUG vopono::util > ip link set mv_belgium_s netns vopono_mv_belgium up
2022-02-28T13:34:50.429Z DEBUG vopono::util > ip addr add 10.200.6.1/24 dev mv_belgium_d
2022-02-28T13:34:50.431Z DEBUG vopono::netns > ip netns exec vopono_mv_belgium ip addr add 10.200.6.2/24 dev mv_belgium_s
2022-02-28T13:34:50.434Z DEBUG vopono::netns > ip netns exec vopono_mv_belgium ip route add default via 10.200.6.1 dev mv_belgium_s
2022-02-28T13:34:50.436Z INFO vopono::netns > IP address of namespace as seen from host: 10.200.6.2
2022-02-28T13:34:50.436Z INFO vopono::netns > IP address of host as seen from namespace: 10.200.6.1
2022-02-28T13:34:50.436Z DEBUG vopono::util > nft add table inet vopono_nat
2022-02-28T13:34:50.438Z DEBUG vopono::util > nft add chain inet vopono_nat postrouting { type nat hook postrouting priority 100 ; }
2022-02-28T13:34:50.440Z DEBUG vopono::util > nft add rule inet vopono_nat postrouting oifname enp6s0 ip saddr 10.200.6.0/24 counter masquerade
2022-02-28T13:34:50.442Z DEBUG vopono::util > nft add table inet vopono_bridge
2022-02-28T13:34:50.443Z DEBUG vopono::util > nft add chain inet vopono_bridge forward { type filter hook forward priority -10 ; }
2022-02-28T13:34:50.445Z DEBUG vopono::util > nft add rule inet vopono_bridge forward iifname mv_belgium_d oifname enp6s0 counter accept
2022-02-28T13:34:50.446Z DEBUG vopono::util > nft add rule inet vopono_bridge forward oifname mv_belgium_d iifname enp6s0 counter accept
2022-02-28T13:34:50.448Z DEBUG vopono::util > sysctl -q net.ipv4.ip_forward=1
2022-02-28T13:34:50.448Z DEBUG vopono::util > Using config dir from $HOME config: /root/.config
2022-02-28T13:34:50.448Z DEBUG vopono::util > Using config dir from $SUDO_USER config: /home/user/.config
2022-02-28T13:34:50.448Z DEBUG vopono::vpn > Read auth file: /home/user/.config/vopono/mv/openvpn/mullvad_userpass.txt
2022-02-28T13:34:50.448Z DEBUG vopono::dns_config > Setting namespace vopono_mv_belgium DNS server to $VPN_DNS
2022-02-28T13:34:50.448Z INFO vopono::openvpn > Launching OpenVPN...
2022-02-28T13:34:50.448Z DEBUG vopono::openvpn > Detected IPv6 enabled in /sys/module/ipv6/parameters/disable
2022-02-28T13:34:50.449Z DEBUG vopono::openvpn > Found remotes: [Remote { host: Hostname("be-bru-003.mullvad.net"), port: $PORT, protocol:UDP }, Remote { host: Hostname("be-bru-001.mullvad.net"), port: $PORT, protocol: UDP }, Remote { host: Hostname("be-bru-004.mullvad.net"), port: $PORT, protocol: UDP }, Remote { host: Hostname("be-bru-002.mullvad.net"), port: $PORT, protocol: UDP }, Remote { host: Hostname("be-bru-005.mullvad.net"),port: $PORT, protocol: UDP }]
2022-02-28T13:34:50.449Z DEBUG vopono::netns > ip netns exec vopono_mv_belgium openvpn --config /home/user/.config/vopono/mv/openvpn/belgium-be.ovpn --machine-readable-output --log /etc/netns/vopono_mv_belgium/openvpn.log --auth-user-pass /home/user/.config/vopono/mv/openvpn/mullvad_userpass.txt --pull-filter ignore block-outside-dns
2022-02-28T13:34:50.453Z DEBUG vopono::openvpn > "1646055290.453880 40 DEPRECATED OPTION: --cipher set to 'AES-256-CBC' but missing in --data-ciphers (AES-256-GCM:AES-128-GCM). Future OpenVPN version will ignore --cipher for cipher negotiations. Add 'AES-256-CBC' to --data-ciphers or change --cipher 'AES-256-CBC' to --data-ciphers-fallback 'AES-256-CBC' to silence this warning.\n"
2022-02-28T13:34:50.453Z DEBUG vopono::openvpn > "1646055290.453880 40 DEPRECATED OPTION: --cipher set to 'AES-256-CBC' but missing in --data-ciphers (AES-256-GCM:AES-128-GCM). Future OpenVPN version will ignore --cipher for cipher negotiations. Add 'AES-256-CBC' to --data-ciphers or change --cipher 'AES-256-CBC' to --data-ciphers-fallback 'AES-256-CBC' to silence this warning.\n1646055290.453981 40 WARNING: file '/home/user/.config/vopono/mv/openvpn/mullvad_userpass.txt' is group or others accessible\n"
2022-02-28T13:34:50.454Z DEBUG vopono::openvpn > "1646055290.453880 40 DEPRECATED OPTION: --cipher set to 'AES-256-CBC' but missing in --data-ciphers (AES-256-GCM:AES-128-GCM). Future OpenVPN version will ignore --cipher for cipher negotiations. Add 'AES-256-CBC' to --data-ciphers or change --cipher 'AES-256-CBC' to --data-ciphers-fallback 'AES-256-CBC' to silence this warning.\n1646055290.453981 40 WARNING: file '/home/user/.config/vopono/mv/openvpn/mullvad_userpass.txt' is group or others accessible\n1646055290.454004 1 OpenVPN 2.5.5 [git:makepkg/869f194c23ae93c4+] x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Dec 15 2021\n"
2022-02-28T13:34:50.454Z DEBUG vopono::openvpn > "1646055290.453880 40 DEPRECATED OPTION: --cipher set to 'AES-256-CBC' but missing in --data-ciphers (AES-256-GCM:AES-128-GCM). Future OpenVPN version will ignore --cipher for cipher negotiations. Add 'AES-256-CBC' to --data-ciphers or change --cipher 'AES-256-CBC' to --data-ciphers-fallback 'AES-256-CBC' to silence this warning.\n1646055290.453981 40 WARNING: file '/home/user/.config/vopono/mv/openvpn/mullvad_userpass.txt' is group or others accessible\n1646055290.454004 1 OpenVPN 2.5.5 [git:makepkg/869f194c23ae93c4+] x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Dec 15 2021\n1646055290.454027 1 libraryversions: OpenSSL 1.1.1m 14 Dec 2021, LZO 2.10\n"
2022-02-28T13:35:00.464Z DEBUG vopono::openvpn > "1646055290.453880 40 DEPRECATED OPTION: --cipher set to 'AES-256-CBC' but missing in --data-ciphers (AES-256-GCM:AES-128-GCM). Future OpenVPN version will ignore --cipher for cipher negotiations. Add 'AES-256-CBC' to --data-ciphers or change --cipher 'AES-256-CBC' to --data-ciphers-fallback 'AES-256-CBC' to silence this warning.\n1646055290.453981 40 WARNING: file '/home/user/.config/vopono/mv/openvpn/mullvad_userpass.txt' is group or others accessible\n1646055290.454004 1 OpenVPN 2.5.5 [git:makepkg/869f194c23ae93c4+] x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Dec 15 2021\n1646055290.454027 1 libraryversions: OpenSSL 1.1.1m 14 Dec 2021, LZO 2.10\n1646055300.464807 4000021 RESOLVE: Cannot resolve host address: be-bru-002.mullvad.net:$PORT (Temporary failure in name resolution)\n"
Adding killswitch or --firewall iptables
does not resolve it.
OpenVPN hangs and needs to be force-killed (resulting in leftover ip links)
Do you have anything configured with systemd-networkd?
I can try to test it on the weekend as I also use Arch Linux, but with NetworkManager.
My systemd-networkd
files below. The wireguard network is unrelated to vopono or any of the providers.
Given that others seem to have vopono working fine with NetworkManager, I'm suspecting that could be a factor for reproducing the issue.
30-default.network
[Match]
Name=en*
[Network]
DHCP=yes
10-internal-wg.netdev
[NetDev]
Name=wg-internal
Kind=wireguard
Description=WireGuard internal tunnel
MTUBytes=1360
[WireGuard]
ListenPort=1234
PrivateKey=xxx
[WireGuardPeer]
PublicKey=xxx
PresharedKey=xxx
Endpoint=xxx
AllowedIPs=10.1.0.0/16
10-internal-wg.network
[Match]
Name=wg-internal
[Network]
Address=10.1.11.123/24
[Route]
Destination=10.1.0.0/16
@3nprob is the given log output unprocessed or did you replace certain strings?
e.g
2022-02-28T13:34:50.448Z DEBUG vopono::dns_config > Setting namespace vopono_mv_belgium DNS server to $VPN_DNS
$VPN_DNS is not an valid DNS server ip address.
and therefore the name resolution does not work: Cannot resolve host address
@niki-on-github that's a placeholder - in reality it was an actual working and otherwise reachable DNS server.
As can be seen, it is not an issue of DNS per se - you can see in the WG case that it can't reach hosts over IP either, no name resolution taking place there.
seeing a similar issue - using version 0.10.3
on a raspberry pi Debian GNU/Linux 11 (bullseye)
, failure to connect to vpn server: https://gist.github.com/jpcastberg/074f6be1be89b5a1000b69284abe6326
hoping someone can halp! it was working great before, not quite sure what triggered the breakage.
after lots of debugging, i got things working again by passing flag --firewall iptables
to exec, sourced from this comment https://github.com/jamesmcm/vopono/issues/40#issuecomment-716877647 (i didn't set any policies in iptables, just passed the flag)
i see here that nftables is favored if it is installed https://github.com/jamesmcm/vopono/blob/7b645a3ebbdfc84f0e62800a3dd1bcc83544a1a1/vopono_core/src/util/mod.rs#L449-L457
I recently installed nextcloud on the machine in a docker container, and i see the nft table nat has configurations probably relating to it: https://gist.github.com/jpcastberg/db423f8446ee8d94e736100758f4cb86 , i'm wondering if this configuration broke vopono somehow. glad to get it working though! please lmk if you'd like any more info