无法通过 AWS Internet Gateway 路由 Strongswan VPN 流量

无法通过 AWS Internet Gateway 路由 Strongswan VPN 流量

谢谢,我想在 EC2 实例上设置 VPN 服务器,以便路由我的所有私人互联网流量,但我无法让它工作。任何帮助都将不胜感激。

我有以下设置:

    Private Network  10.0.0.0/24    |               Internet              |  AWS VPC / Subnet 10.0.1.0/24
   PC                        Fritzbox Router                             IGW         EC2
 10.0.0.11   ----    10.0.0.1 ------| -- MyPublicLocalIP -- EC2PublicIP --| ------ 10.0.1.193

路由器与 EC2 实例上运行的 Strongswan 实例建立了 IPSec 连接。EC2 实例的网络接口已禁用源/目标检查。安全组允许所有来自 PublicLocalIP 和子网(也尝试过“允许所有源”)且目标为任意的流量传入。

VPN 连接可以建立,我可以从我的私有网络 ping 10.0.1.142 和 10.0.1.1。EC2 实例本身也可以 ping 8.8.8.8 等公共 IP。但是我无法从我的私有网络 ping 8.8.8.8 或任何其他公共 IP,尽管我可以使用 tshark 在 EC2 实例上看到数据包朝一个方向传输:

tshark-f“icmp”

   10 7.320371756 10.0.0.11 → 8.8.8.8 ICMP 98 回显 (ping) 请求 id=0x0034,seq=1/256,ttl=63
   11 8.332639368 10.0.0.11 → 8.8.8.8 ICMP 98 回显 (ping) 请求 id=0x0034,seq=2/512,ttl=63
   12 9.356457465 10.0.0.11 → 8.8.8.8 ICMP 98 回显 (ping) 请求 id=0x0034,seq=3/768,ttl=63
   13 10.380464177 10.0.0.11 → 8.8.8.8 ICMP 98 回显 (ping) 请求 id=0x0034,seq=4/1024,ttl=63
   14 11.404715789 10.0.0.11 → 8.8.8.8 ICMP 98 回显 (ping) 请求 id=0x0034,seq=5/1280,ttl=63
   15 12.428989444 10.0.0.11 → 8.8.8.8 ICMP 98 回显 (ping) 请求 id=0x0034,seq=6/1536,ttl=63

这是 EC2 ipsec.conf

配置设置
conn %默认
 类型=隧道
 左=%任何
 leftid=EC2PublicIP
 左子网=0.0.0.0/0
 自动=添加
 碎片=是
 forceencaps=no
 mobike=是
 leftauth=psk
 权限验证=psk

连接 fb
 ike=aes256-sha-modp1024
 esp=aes256-sha1-modp1024
 右=MyPublicLocalFQ.net
 [电子邮件保护]
 右子网=10.0.0.0/24
 正确DNS=8.8.8.8,8.8.4.4
 ikelifetime=3600s
 密钥寿命=3600 秒

这是 Fritzbox 路由器 IPSec 配置

vpncfg {
  连接 {
    启用=否;
    可编辑=是;
    连接类型=连接类型lan;
    名称 = “EC2VPN”;
    box用户id=0;
    总是更新 = 是;
    拒绝未加密 = 否;
    不要过滤netbios =是;
    本地IP=0.0.0.0;
    本地虚拟IP=0.0.0.0;
    远程IP=0.0.0.0;
    远程虚拟IP=0.0.0.0;
    keepalive_ip=0.0.0.0;
    本地ID {
      fqdn = "MyPublicLocalFQ.net";
    }
    远程 ID {
      fqdn =“EC2公共IP”;
    }
    模式=阶段1_模式_idp;
    阶段1ss =“全部/全部/全部”;
    密钥类型 = connkeytype_pre_shared;
    密钥 = “THE_PSK_KEY”;
    cert_do_server_auth = 否;
    use_nat_t = 是;
    use_xauth = 否;
    使用_cfgmode=否;
    阶段2局部ID {
      网络地址 {
        IP地址=10.0.0.0;
        掩码=255.255.255.0;
      }
    }
    phase2remoteid {
      网络地址 {
        IP地址=10.0.1.0;
        掩码=255.255.255.0;
      }
    }
    phase2ss =“esp-all-all/ah-none/comp-all/pfs”;
    访问列表 = “允许任何 ip”;
  }
  ike_forward_rules = “udp 0.0.0.0:500 0.0.0.0:500”
  “udp 0.0.0.0:4500 0.0.0.0:4500”;
}

ipsec 状态全部

IKE charon 守护进程的状态(strongSwan 5.8.2,Linux 5.4.0-1029-aws,x86_64):
  正常运行时间:91 秒,自 2020 年 12 月 13 日 01:57:01 起
  malloc:sbrk 1622016,mmap 0,已用648096,可用973920
  工作线程:16 个中 11 个空闲,5/0/0/0 正在工作,作业队列:0/0/0/0,计划:3
  已加载插件:charon aesni aes rc2 sha2 sha1 md5 mgf1 随机随机数 x509 撤销约束 pubkey pkcs1 pkcs7 pkcs8 pkcs12 pgp dnskey sshkey pem openssl fips-prf gmp 代理 xcbc hmac gcm drbg attr kernel-netlink 解析套接字默认 connmark stroke updown eap-mschapv2 xauth-generic 计数器
监听IP地址:
  10.0.1.193
连接:
          fb:%任何... MyPublicLocalFQ IKEv1 / 2
          fb:本地:[EC2PublicIP] 使用预共享密钥身份验证
          fb: remote: [MyPublicLocalFQ] 使用预共享密钥身份验证
          fb:子:0.0.0.0/0 === 10.0.0.0/24 隧道
安全关联 (1 个启动,0 个连接):
          fb[2]:90 秒前建立,10.0.1.193[EC2PublicIP]...MyPublicLocalIP[MyPublicLocalFQ]
          fb[2]: IKEv1 SPIs: c1c1ef074becc316_i 3e3007efcc116605_r*,预共享密钥重新认证需要 43 分钟
          fb[2]: IKE 提议: AES_CBC_256/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024
          fb{1}:已安装,隧道,reqid 1,ESP 在 UDP SPI 中:cba035a9_i 4fbe83d8_o
          fb{1}:AES_CBC_256/HMAC_SHA1_96/MODP_1024,5610 bytes_i(83 个数据包,74 秒前),840 bytes_o(10 个数据包,74 秒前),43 分钟后重新加密
          fb{1}:10.0.1.0/24 === 10.0.0.0/24

iptables-保存

# 由 iptables-save v1.8.4 于 2020 年 12 月 13 日星期日 02:30:39 生成
*弄脏
:预路由接受 [214:19671]
:输入接受 [163:15822]
:转发接受 [0:0]
:输出接受 [82:7863]
:后路由接受 [82:7863]
-A FORWARD -s 10.0.0.0/24 -o eth0 -p tcp -m policy --dir in --pol ipsec -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360
犯罪
# 于 2020 年 12 月 13 日(星期日)02:30:39 完成
# 由 iptables-save v1.8.4 于 2020 年 12 月 13 日星期日 02:30:39 生成
*自然
:预路由接受 [51:3849]
:输入接受 [0:0]
:输出接受 [4:361]
:路由后接受 [4:361]
-A POSTROUTING -s 10.0.0.0/24 -o eth0 -m policy --dir out --pol ipsec -j 接受
-A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE
犯罪
# 于 2020 年 12 月 13 日(星期日)02:30:39 完成
# 由 iptables-save v1.8.4 于 2020 年 12 月 13 日星期日 02:30:39 生成
*筛选
:输入下降 [0:0]
:前锋丢球 [0:0]
:输出接受 [0:0]
:ufw-之后-前进 - [0:0]
:ufw-输入后-[0:0]
:ufw-登录后转发 - [0:0]
:ufw-日志输入后-[0:0]
:ufw-日志记录后输出 - [0:0]
:ufw-输出后-[0:0]
:ufw-之前-前进 - [0:0]
:ufw-输入前-[0:0]
:ufw-登录前-[0:0]
:ufw-日志输入前 - [0:0]
:ufw-日志记录输出前 - [0:0]
:ufw-输出前-[0:0]
:ufw-日志记录-允许 - [0:0]
:ufw-日志记录拒绝 - [0:0]
:ufw-非本地 - [0:0]
:ufw-拒绝转发 - [0:0]
:ufw-拒绝输入-[0:0]
:ufw-拒绝输出-[0:0]
:ufw-跳过政策转发 - [0:0]
:ufw-跳过策略输入 - [0:0]
:ufw-跳过策略输出 - [0:0]
:ufw-轨道前进 - [0:0]
:ufw-轨道输入-[0:0]
:ufw-轨道输出-[0:0]
:ufw-用户转发 - [0:0]
:ufw-用户输入-[0:0]
:ufw-用户限制-[0:0]
:ufw-用户限制接受-[0:0]
:ufw-用户登录转发 - [0:0]
:ufw-用户日志输入-[0:0]
:ufw-用户日志输出 - [0:0]
:ufw-用户输出-[0:0]
-A 输入 -j ufw-日志记录前输入
-A 输入 -j ufw 输入前
-A 输入 -j ufw 输入后
-A 输入 -j ufw-日志记录后输入
-A 输入 -j ufw 拒绝输入
-A 输入 -j ufw-轨道输入
-A 转发 -j ufw-在日志记录转发之前
-A 转发 -j ufw-转发之前
-A 转发 -j ufw-后转发
-A 转发 -j ufw-日志记录后转发
-A 转发 -j ufw-拒绝转发
-A 前进 -j ufw-track-forward
-A 输出 -j ufw-记录前输出
-A 输出 -j ufw 输出前
-A 输出 -j ufw 输出后
-A 输出 -j ufw-日志记录后输出
-A 输出 -j ufw-拒绝输出
-A 输出 -j ufw-轨道输出
-A ufw-after-input -p udp -m udp --dport 137 -j ufw-skip-to-policy-input
-A ufw-输入后-p udp -m udp --dport 138 -j ufw-跳过策略输入
-A ufw-after-input -p tcp -m tcp --dport 139 -j ufw-skip-to-policy-input
-A ufw-after-input -p tcp -m tcp --dport 445 -j ufw-skip-to-policy-input
-A ufw-after-input -p udp -m udp --dport 67 -j ufw-skip-to-policy-input
-A ufw-after-input -p udp -m udp --dport 68 -j ufw-skip-to-policy-input
-A ufw-after-input -m 地址类型 --dst 类型广播 -j ufw-skip-to-policy-input
-A ufw-after-logging-forward -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix “[UFW BLOCK] ”
-A ufw-after-logging-input -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix “[UFW BLOCK] ”
-A ufw-before-forward -s 10.0.0.0/24 -m policy --dir in --pol ipsec --proto esp -j 接受
-A ufw-before-forward -d 10.0.0.0/24 -m 策略 --dir out --pol ipsec --proto esp -j 接受
-A ufw-before-forward -m conntrack --ctstate 相关,已建立 -j 接受
-A ufw-before-forward -p icmp -m icmp --icmp-type 3 -j 接受
-A ufw-before-forward -p icmp -m icmp --icmp-type 11 -j 接受
-A ufw-before-forward -p icmp -m icmp --icmp-type 12 -j 接受
-A ufw-before-forward -p icmp -m icmp --icmp-type 8 -j 接受
-A ufw-转发之前-j ufw-用户转发
-A ufw-before-input -i lo -j 接受
-A ufw-before-input -m conntrack --ctstate 相关,已建立 -j 接受
-A ufw-before-input -m conntrack --ctstate 无效 -j ufw-logging-deny
-A ufw-before-input -m conntrack --ctstate INVALID -j DROP
-A ufw-before-input -p icmp -m icmp --icmp-type 3 -j 接受
-A ufw-before-input -p icmp -m icmp --icmp-type 11 -j 接受
-A ufw-before-input -p icmp -m icmp --icmp-type 12 -j 接受
-A ufw-before-input -p icmp -m icmp --icmp-type 8 -j 接受
-A ufw-before-input -p udp -m udp --sport 67 --dport 68 -j 接受
-A ufw 输入前 -j ufw 非本地
-A ufw-before-input -d 224.0.0.251/32 -p udp -m udp --dport 5353 -j 接受
-A ufw-before-input -d 239.255.255.250/32 -p udp -m udp --dport 1900 -j 接受
-A ufw-输入前-j ufw-用户输入
-A ufw-before-output-o lo -j 接受
-A ufw-before-output -m conntrack --ctstate RELATED,ESTABLISHED -j 接受
-A ufw-输出前-j ufw-用户输出
-A ufw-logging-allow -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix “[UFW ALLOW] ”
-A ufw-logging-deny -m conntrack --ctstate INVALID -m limit --limit 3/min --limit-burst 10 -j RETURN
-A ufw-logging-deny -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix “[UFW BLOCK] ”
-A ufw-not-local -m 地址类型 --dst 类型 LOCAL -j RETURN
-A ufw-not-local -m 地址类型 --dst-type 多播 -j 返回
-A ufw-not-local -m 地址类型 --dst 类型广播 -j 返回
-A ufw-not-local -m 限制 --limit 3/分钟 --limit-burst 10 -j ufw-logging-deny
-A ufw-非本地-j DROP
-A ufw-跳过策略转发 -j DROP
-A ufw-跳过策略输入-j DROP
-A ufw-跳过策略输出-j 接受
-A ufw-track-output-p tcp-m conntrack --ctstate 新-j 接受
-A ufw-track-output-p udp-m conntrack --ctstate 新-j 接受
-A ufw-user-input -p tcp -m tcp --dport 22 -m comment --comment "\'dapp_OpenSSH\'" -j 接受
-A ufw-用户输入-p udp-m 多端口 --dports 500,4500-j 接受
-A ufw-user-limit -m limit --limit 3/min -j LOG --log-prefix “[UFW LIMIT BLOCK] ”
-A ufw-用户限制-j REJECT --reject-with icmp-port-unreachable
-A ufw-用户限制-接受-j 接受
犯罪
# 于 2020 年 12 月 13 日(星期日)02:30:39 完成

路由

默认通过 10.0.1.1 dev eth0 proto dhcp src 10.0.1.193 metric 100
10.0.1.0/24 dev eth0 proto 内核范围链接 src 10.0.1.193
10.0.1.1 dev eth0 proto dhcp 范围链接源 10.0.1.193 度量 100

EC2 使用 Ubuntu 20.04.1 LTS 映像。

我还尝试添加rightsourceip=10.10.10.0/24ipsec,将 pahse2remoteid.ipnet.ipaddr 替换为将 tables-save 输出中的ipaddr = 10.10.10.0所有内容替换为,并使用 tables-restore,但仍然不起作用。客户端没有获得任何 VirtualIP 分配,即使池已分配:10.0.0.0/2410.10.10.0/24

IKE charon 守护进程的状态(strongSwan 5.8.2,Linux 5.4.0-1029-aws,x86_64):
  正常运行时间:32 分钟,自 2020 年 12 月 13 日 01:09:10 起
  malloc:sbrk 1622016,mmap 0,已用728048,可用893968
  工作线程:16 个中 11 个空闲,5/0/0/0 正在工作,作业队列:0/0/0/0,计划:3
  已加载插件:charon aesni aes rc2 sha2 sha1 md5 mgf1 随机随机数 x509 撤销约束 pubkey pkcs1 pkcs7 pkcs8 pkcs12 pgp dnskey sshkey pem openssl fips-prf gmp 代理 xcbc hmac gcm drbg attr kernel-netlink 解析套接字默认 connmark stroke updown eap-mschapv2 xauth-generic 计数器
虚拟 IP 池(大小/在线/离线):
  10.10.10.0/24:254/0/0
监听IP地址:
  10.0.1.193
连接:
          fb:%any...MyPublicLocalFQ.net IKEv1/2
          fb:本地:[EC2PublicIP] 使用预共享密钥身份验证
          fb:remote:[MyPublicLocalFQ.net] 使用预共享密钥身份验证
          fb:子:0.0.0.0/0 === 10.0.0.0/24 隧道
路由连接:
          fb{1}:路由,隧道,请求 1
          fb{1}:0.0.0.0/0 === 10.0.0.0/24
安全关联 (1 个启动,0 个连接):
          fb[2]: 32 分钟前建立,10.0.1.193[EC2PublicIP]...MyPublicLocalIP[MyPublicLocalFQ.net]
          fb[2]: IKEv1 SPIs: 0da6b7368f560272_i 166b8161eae230c8_r*,12 分钟后预共享密钥重新认证
          fb[2]: IKE 提议: AES_CBC_256/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024
          fb{2}:已安装,隧道,reqid 2,ESP 在 UDP SPI 中:cda4bbc0_i 1ea590b2_o
          fb{2}:AES_CBC_256/HMAC_SHA1_96/MODP_1024,170072 bytes_i(2601 个数据包,26 秒前),1344 bytes_o(16 个数据包,26 秒前),12 分钟后重新加密
          fb{2}:10.0.1.0/24 === 10.0.0.0/24

欢迎任何想法。

相关内容