使用 nmcli 配置 gsm 连接

std*_*err 12 command-line configuration modem networkmanager gsm

我有一个没有 X 显示的系统,我想用它nmcli来配置我的蜂窝调制解调器以连接到某个 apn。我可以在 Ubuntu(使用 X)上使用这个调制解调器很好地运行它,我现在想在命令行上实现相同的目标。如何设置连接?

到目前为止,我得到了这个:

# nmcli dev status

** (process:2379): WARNING **: Could not initialize NMClient /org/freedesktop/NetworkManager: Permissions request failed: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.PolicyKit1 was not provided by any .service files
DEVICE     TYPE              STATE        
ttyUSB1    gsm               disconnected 
eth0       802-3-ethernet    connected 
Run Code Online (Sandbox Code Playgroud)

Chr*_*tts 18

聚会有点晚了,但我被困在了同样的障碍上。自从我解决了这个问题,我想我会分享我的发现,因为关于这个主题的所有其他帖子都像泥巴一样清晰。

虽然 NetworkManager 可以看到设备,但它不知道设备支持的任何连接。与 WiFi 不同,我们不能仅仅通过扫描来列出可用连接。我们需要自己添加一个。

在创建连接之前,请确保 NetworkManager 不会阻止设备被管理。默认情况下,这是在 Ubuntu Server 上发生的,以防止 NetworkManager 接管现有的合法旧连接(请参阅此处来自 Ubuntu 开发人员的解释)。

nmcli device显示unmanaged设备的状态时,您可以验证该设备是否不受管理,相反的是disconnected。在这种情况下,请跳到下一段。

要使 Ubuntu Server 上的 NetworkManager 处理连接,请将文件复制/usr/lib/NetworkManager/conf.d/10-globally-managed-devices.conf/etc/NetworkManager/conf.d/10-globally-managed-devices.conf,然后编辑它:unmanaged-device通过将gsm类型添加到例外列表来修改以开头的行:

unmanaged-devices=*,except:type:wifi,except:type:wwan,except:type:gsm
Run Code Online (Sandbox Code Playgroud)

升级 NetworkManager 时不要忘记检查原始 /usr/lib 文件的更新。

创建连接

首先,我们使用(适当命名的 /s)edit命令创建一个您希望命名的新连接,例如:

sudo nmcli connection edit type gsm con-name "My GPRS Connection"
Run Code Online (Sandbox Code Playgroud)

使用sudo,如果你不想失望,当您试图保存连接。

当然,如果您不使用 GSM,您可以将类型参数更改为 NetworkManager 支持的其他协议。

现在您将进入编辑模式。您需要的大部分设置都会自动为您填写。您可以使用以下print命令查看所有当前设置 :

nmcli> print
===============================================================================
                Connection profile details (My GPRS Connection)
===============================================================================
connection.id:                          My GPRS Connection
connection.uuid:                        27b012ca-453f-482f-bc0e-c81bbab07310
connection.interface-name:              --
connection.type:                        gsm
connection.autoconnect:                 yes
connection.timestamp:                   0
connection.read-only:                   no
connection.permissions:                 
connection.zone:                        --
connection.master:                      --
connection.slave-type:                  --
connection.secondaries:                 
connection.gateway-ping-timeout:        0
-------------------------------------------------------------------------------
ipv4.method:                            auto
ipv4.dns:                               
ipv4.dns-search:                        
ipv4.addresses:                         
ipv4.routes:                            
ipv4.ignore-auto-routes:                no
ipv4.ignore-auto-dns:                   no
ipv4.dhcp-client-id:                    --
ipv4.dhcp-send-hostname:                yes
ipv4.dhcp-hostname:                     --
ipv4.never-default:                     no
ipv4.may-fail:                          yes
-------------------------------------------------------------------------------
ipv6.method:                            auto
ipv6.dns:                               
ipv6.dns-search:                        
ipv6.addresses:                         
ipv6.routes:                            
ipv6.ignore-auto-routes:                no
ipv6.ignore-auto-dns:                   no
ipv6.never-default:                     no
ipv6.may-fail:                          yes
ipv6.ip6-privacy:                       -1 (unknown)
ipv6.dhcp-hostname:                     --
-------------------------------------------------------------------------------
gsm.number:                             *99#
gsm.username:                           --
gsm.password:                           --
gsm.password-flags:                     0 (none)
gsm.apn:                                --
gsm.network-id:                         --
gsm.network-type:                       -1
gsm.allowed-bands:                      1 (any)
gsm.pin:                                --
gsm.pin-flags:                          0 (none)
gsm.home-only:                          no
-------------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

键入help以查看完整的命令列表。

您可能唯一需要编辑的是您网络的 APN。这可以设置为set gsm.apn <APN>APN 之类的地方epc.t-mobile.comwholesale或者vzwinternet为 verizon。

您还可以将连接限制为特定接口。对于设备名称很容易更改的基于串行的连接,尤其不建议这样做。如果你愿意,你可以做set connection.interface-name ttyS4例如。

如果您以 root 身份运行,您现在可以保存连接

nmcli> save
Run Code Online (Sandbox Code Playgroud)

就是这样。如果您需要返回编辑连接,请使用nmcli c edit "My GPRS Connection",或直接编辑配置文件。在基于 Debian 的系统上,您会/etc/NetworkManager/system-connections//etc/sysconfig/network-scripts/. 这些文件似乎可以从系统转移到系统 - UUID 基本上是随机的。

连接到我们的新连接

现在你应该能够连接

sudo nmcli device connect <interface name>
Run Code Online (Sandbox Code Playgroud)

如果一切顺利,NetworkManager 会自动选择“我的 GPRS 连接”。如果不,

sudo nmcli connection up "My GPRS Connection" ifname <interface name>
Run Code Online (Sandbox Code Playgroud)

这就是我现在崩溃的地方。它在连接期间超时,但我认为我超出了信号范围。希望它对你更有效。

如果您需要更多信息,请发表评论。