谢谢,我想在 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/24
ipsec,将 pahse2remoteid.ipnet.ipaddr 替换为将 tables-save 输出中的ipaddr = 10.10.10.0
所有内容替换为,并使用 tables-restore,但仍然不起作用。客户端没有获得任何 VirtualIP 分配,即使池已分配:10.0.0.0/24
10.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
欢迎任何想法。