通过VPN的Erlang节点通信

3
我正在尝试通过VPN连接Amazon AWS上的服务器和客户端之间的2个Erlang节点进行通信。 当我启动Erlang shell时,我指定了节点名称和cookie,但不起作用。 有没有特殊的考虑因素来通过VPN进行Erlang通信? 需要设置设备,例如我的tun0设备吗?
这是路由结果:
目标 网关 子网掩码 标志 MSS 窗口 irtt 接口 0.0.0.0 10.8.0.5 128.0.0.0 UG 0 0 0 tun0 0.0.0.0 192.168.1.254 0.0.0.0 UG 0 0 0 wlan0 10.8.0.1 10.8.0.5 255.255.255.255 UGH 0 0 0 tun0 10.8.0.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun0 46.51.166.55 192.168.1.254 255.255.255.255 UGH 0 0 0 wlan0 128.0.0.0 10.8.0.5 128.0.0.0 UG 0 0 0 tun0 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 wlan0 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
提前感谢!

您是否在使用带有 IP 地址的长名称? - Jr0
是的,我使用了长名称。 - Giovanni C
3个回答

1

我已经解决了问题。
以下是操作步骤。

Erlang服务器启动命令如下:
erl -name server@10.8.0.1 -setcookie aStringCookie -kernel inet_dist_listen_min 9000 inet_dist_listen_max 9005

其中,10.8.0.1是VPN服务器IP地址。

客户端启动命令如下:
erl -name client@10.8.0.6 -setcookie aStringCookie -kernel inet_dist_listen_min 9000 inet_dist_listen_max 9005

其中,10.8.0.6是VPN客户端IP地址。

在AWS安全组中,我打开了4369 TCP/UDP端口和用于初始化服务器的其他端口。我还打开了ICMP端口以进行ping测试。
在VPN服务器配置文件中,您可以启用/禁用以下行:
push "redirect-gateway def1 bypass-dhcp",该行将客户端默认网络网关通过VPN重定向。

我测试了一些rpc并且它们正常工作。

感谢大家。

Giovanni C


0

我认为问题可能与erl的长名称和短名称有关。

你现在使用sname了吗?

-sname Name

将Erlang运行时系统变成一个分布式节点,类似于-name,但节点名称Name@Host的主机名部分将是短名称,而不是完全合格的名称。

如果DNS(域名系统)未运行,则有时这是运行分布式Erlang的唯一方法。运行使用-sname标志和使用-name标志的节点之间不能进行通信,因为节点名称在分布式Erlang系统中必须是唯一的。

http://www.erlang.org/doc/reference_manual/distributed.html


我使用以下语法: erl -name client -setcookie cookie erl -name server -setcookie cookie 我认为问题在于tun0设备。需要指定它吗? - Giovanni C
这两台电脑之间还有其他的网络服务吗?如果您不知道这些DNS,请检查您的/etc/hosts文件。我认为您现在有两个网络,请检查路由表。 - Chen Yu
VPN连接正常,我可以通过AWS服务器上网冲浪。 - Giovanni C
  1. 你是否在本地网络中练习过连接技术?
  2. 你是否在没有 VPN 环境下连接了另一个互联网 Erlang 节点?
  3. 你是否检查了所有相关端口以避免防火墙问题?
  4. 你是否使用 Ethereal/Tcpdump 工具检查了你的 IP 详细信息?
  5. 我认为在逐一检查以上原因之前,Erlang 应该是最后考虑的原因。
- Chen Yu

0

防火墙设置都正确吗?Erlang需要在所有主机上运行的epmd实例之间建立TCP连接。

尝试打开TCP端口4369,或接受从tun0出来的任何内容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接