Networking

aws ec2:通過公共 IP 地址在實例之間建立 ipip 隧道

  • May 23, 2019

誰能告訴我這首先是可能的還是不可能的?認為:

  • 有兩個 ec2 實例

    • 在一個 aws 帳戶/vpc 中。
    • 在不同的子網/可用區域中。
    • 在 CentOS 7 上執行。
  • 出於某種原因,需要通過它們的公共 IP 地址在實例之間創建一個 ipip 隧道。

  • 而且,隧道不會工作。

    • 關聯網路 acl 和安全組明確允許所有流量。
    • iptables/firewalld 在每個 ec2 實例上都被禁用。
    • 當隧道通過他們的公共地址時,它實際上工作得很好。

為了詳細說明,我嘗試如下所述,但徒勞無功:

  • 實例#1:

    • 公共IP地址:xxxx(彈性IP地址)
  • 實例#2:

    • 公共IP地址:yyyy(非彈性IP地址)
  • 在實例 #1 上添加隧道:

$ sudo ip tunnel add tun0 mode ipip remote y.y.y.y local x.x.x.x
$ sudo ip address add 192.168.1.11 peer 192.168.2.11 dev tun0
$ sudo ip link set mtu 1480 dev tun0
$ sudo ip link tun0 up
$ ip address show
(snip)
4: tun0@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1480 qdisc noqueue state UNKNOWN group default qlen 1000
   link/ipip x.x.x.x peer y.y.y.y
   inet 192.168.1.11 peer 192.168.2.11/32 scope global tun0
      valid_lft forever preferred_lft forever
  • 在實例 #2 上添加隧道:
$ sudo ip tunnel add tun0 mode ipip remote x.x.x.x local y.y.y.y
$ sudo ip address add 192.168.2.11 peer 192.168.1.11 dev tun0
$ sudo ip link set mtu 1480 dev tun0
$ sudo ip link tun0 up
$ ip address show
(snip)
4: tun0@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1480 qdisc noqueue state UNKNOWN group default qlen 1000
   link/ipip y.y.y.y peer x.x.x.x
   inet 192.168.2.11 peer 192.168.1.11/32 scope global tun0
      valid_lft forever preferred_lft forever
  • 在實例 #1 上進行測試:
$ ping 192.168.2.11
PING 192.168.2.11 (192.168.2.11) 56(84) bytes of data.
^C
--- 192.168.2.11 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 999ms
  • 在實例 #2 上進行測試:
$ ping 192.168.1.11
PING 192.168.1.11 (192.168.1.11) 56(84) bytes of data.
^C
--- 192.168.1.11 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 999ms

非常感謝任何答案/建議,謝謝。

非常感謝邁克爾,你的評論就是全部。在這裡我將引用它並結束這個問題:

sudo ip tunnel add tun0 mode ipip remote xxxx local yyyy 在這裡,您應該使用 xxxx = remote public 但 yyyy = local private。Internet 網關知道本地實例的公網 IP,但本地實例不知道自己的公網 IP。

再次感謝你。

引用自:https://serverfault.com/questions/965465