我目前遇到一个问题,我对 unix 的路由部分不太有经验,如果能得到帮助就太好了。
我目前正在使用 Hetzner 作为云实例。
我目前需要使用公共加密域来设置站点到站点的连接。
我的堆栈包含:
1 - Ubuntu 主机版本为 20.04.01(命名为 Serv-A) 2 - 我在 Serv-A 上安装了 strongswan 3 - 我在 Serv-A 上有一个默认的 eth0 接口,该接口具有一个随机生成的公共 IP,作为 heztner 云计划的一部分分配给它。 4 - 我在 Hetzner 上创建了一个私有网络(172.16.0.0/24)并将其连接到 Serv-A 5 - Serv-A 现在有另一张名为 ens11 的接口卡和 ip 172.16.0.2 6 - 我还将一个公共 IP(EIP/浮动 IP)连接到该盒子。所以 Serve-A 有 2 个公共 IP。
对于这个例子,我们可以说:
另一端的 VPN 有一个公共 IP 42.102.1.200
对面的VPN有42.102.1.215、42.102.1.216、42.102.1.220的加密域
在我这边,我有 Serv-A,其 Eth0 现在绑定到 2 个公共 IP,例如 (102.58.0.22 和浮动 IP - 196.9.0.109)
设置需要是站点到站点的 VPN,并使用公共 IP 作为加密域。
所以我被要求将公共 IP NAT 到私有网络。
我的VPN设置如下:
config setup
# strictcrlpolicy=yes
# uniqueids = no
conn %default
ikelifetime=600m # 36,000 s
keylife=180m # 10,800 s
rekeymargin=3m
keyingtries=3
keyexchange=ikev2
mobike=no
type=transport
ike=aes256-sha256-modp2048!
esp=aes256-sha256!
auto=start
dpdaction=restart
authby=psk
left= 102.58.0.22
leftid=196.9.0.109
leftsubnet=172.16.0.0/24
leftauth=psk
conn tunnel_1
right=42.102.1.200
rightid=42.102.1.200
rightsubnet=42.102.1.215/32
rightnexthop=%defaultroute
rightauth=psk
conn tunnel_
right=42.102.1.200
rightid=42.102.1.200
rightsubnet=42.102.1.216/32
rightnexthop=%defaultroute
rightauth=psk
conn tunnel_3
right=42.102.1.200
rightid=42.102.1.200
rightsubnet=42.102.1.229/32
rightnexthop=%defaultroute
rightauth=psk
请注意,另一端的 VPN 允许连接到 102.58.0.22(serv-A 初始 IP)
那么我猜我需要使用第二个 IP 196.9.0.109 作为隧道。
我尝试使用以下方法将 196.9.0.109(新 IP / 浮动 IP)映射到 ens11
+ iptables -t nat -I POSTROUTING -s 172.16.0.1/24 -d 42.102.1.0/24 -j SNAT --to 196.9.0.109
(因此,从私有网络尝试到达另一端的所有信息都要通过浮动 IP)
但是当我执行 traceroute -s 172.16.0.2 42.102.1.215 时,它会通过互联网 -.-“而不是隧道
+ iptables -t nat -A PREROUTING -d 196.9.0.109 -j DNAT --to-destination 172.16.0.2
并且另一边的人也无法 ping 我。
你能告诉我应该怎么做吗?使用加密域和私有子网
谢谢S
答案1
我在设置同样的东西时遇到了问题。隧道没有启动。你的最终配置和路由规则是什么?