小编mat*_*ttm的帖子

Asterisk 不使用 externip

我正在尝试使用 hello-world 示例设置位于 NAT 后面的云 Asterisk 服务器。我有 NAT 问题。Asterisk 通过 SDP 提供给客户端的 IP 地址是它在 NAT 后面的本地地址,而不是外部地址。

我试图在 中设置externipsip.conf,但这似乎没有效果。

[general]
externip=xxx.yyy.zzz.vvv
nat=yes
tcpenable=yes
Run Code Online (Sandbox Code Playgroud)

客户端收到的SDP与服务器externip设置不一致:

v=0
o=root 291445984 291445984 IN IP4 172.31.46.110
s=Asterisk PBX 11.7.0~dfsg-1ubuntu1
c=IN IP4 172.31.46.110
t=0 0
m=audio 10078 RTP/AVP 0 101
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=ptime:20
a=sendrecv
m=video 0 RTP/AVP 96
Run Code Online (Sandbox Code Playgroud)

我希望 SDP 中的地址与externip字段中提供的地址相匹配。我已经尝试了实际 IP 地址和服务器名称,它们通过 DNS 正确解析为 IP 地址。

我设置的externip值不正确吗?或者是否需要不同的设置来让 Asterisk 通告其外部 IP 地址?

nat asterisk

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

如何将 curl 的结果分配给 systemd 变量?

我使用的是亚马逊网络服务的服务器,并正在试图建立一个systemd作业需要作为输入AWS外部IP检索的curl

[Unit]
Description=My example with AWS external IP
Wants=network-online.target
After=network-online.target

[Service]
Type=forking
Environment=EXTERNAL_IP=$(/usr/bin/curl http://169.254.169.254/latest/meta-data/public-ipv4)
ExecStart=/path/to/myexample $EXTERNAL_IP

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

验证工具systemd-analyze verify myexample.service表明curl环境分配存在问题。

Invalid environment assignment, ignoring: EXTERNAL_IP=$(/usr/bin/curl http://169.254.169.254/latest/meta-data/public-ipv4)

如果我用curl硬编码的 IP 字符串替换结果,我的守护进程就会启动。如何curl在我的 systemd 作业中使用结果?

curl amazon-web-services systemd

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

标签 统计

amazon-web-services ×1

asterisk ×1

curl ×1

nat ×1

systemd ×1