Tóm tắt: Tôi nghĩ rằng tôi đang thiếu một số tuyến trên máy chủ Ubuntu của mình khi kết nối với AWS VPN bằng Strongswan Ipsec. Bất kỳ ý tưởng những tuyến đường tôi cần trên máy chủ của tôi?
Tôi đang cố gắng thiết lập VPN được định tuyến BGP từ máy chủ đến AWS. Tôi đã làm việc này với VPN được định tuyến tĩnh, vì vậy tôi biết phía AWS và ipsec của mình là chính xác. Tuy nhiên, BGP đang tỏ ra phức tạp.
Tôi đang sử dụng Strongswan trên Ubuntu với tư cách là bên "khách hàng". Đường hầm ipsec của tôi đã hoạt động (được xác nhận bởi trạng thái ipsec
và trong bảng điều khiển AWS). Vấn đề dường như là máy khách BGP của tôi (frr) không thể kết nối với quy trình BGP trong AWS (và ngược lại).
Lấy một trong hai đường hầm, ip một
trông như thế này:
5: tunnel1@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1419 qdisc trạng thái noqueue nhóm UNKNOWN mặc định qlen 1000
liên kết/ipip 1.2.3.4 ngang hàng 2.3.4.5
inet 169.254.10.146 ngang hàng 169.254.10.145/30 phạm vi đường hầm toàn cầu1
hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
Giao diện được tạo bằng một tập lệnh do Strongswan gọi, có dạng như sau:
đường hầm ip thêm khóa vti ${VTI_INTERFACE} cục bộ ${PLUTO_ME} từ xa chế độ ${PLUTO_PEER} ${PLUTO_MARK_IN_ARR[0]}
sysctl -w net.ipv4.conf.${VTI_INTERFACE}.disable_policy=1
sysctl -w net.ipv4.conf.${VTI_INTERFACE}.rp_filter=2 || sysctl -w net.ipv4.conf.${VTI_INTERFACE}.rp_filter=0
địa chỉ ip thêm ${VTI_LOCALADDR} điều khiển từ xa ${VTI_REMOTEADDR} nhà phát triển ${VTI_INTERFACE}
thiết lập liên kết ip ${VTI_INTERFACE} lên mtu ${MTU}
iptables -t mangle -I FORWARD -o ${VTI_INTERFACE} -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
iptables -t mangle -I INPUT -p esp -s ${PLUTO_PEER} -d ${PLUTO_ME} -j MARK --set-xmark ${PLUTO_MARK_IN}
Tôi có một lộ trình như thế này:
169.254.10.144/30 dev tunnel1 liên kết phạm vi kernel proto src 169.254.10.146
Tôi có thể ping đầu cục bộ (khách hàng) của mình (169.254.10.146), nhưng ping đầu từ xa cho biết:
PING 169.254.10.145 (169.254.10.145) 56(84) byte dữ liệu.
Từ 169.254.10.146 icmp_seq=1 Máy chủ đích không thể truy cập
Mặc dù nói rằng không thể truy cập được, nhưng tôi thấy một gói trên giao diện đường hầm, mặc dù có vẻ như gói này thực sự không được gửi xuống đường hầm tới AWS (ít nhất, số liệu thống kê AWS Cloudwatch không hiển thị hoạt động bổ sung).
Một trong các bước gỡ lỗi BGP là cố gắng 'telnet' tới hàng xóm (169.254.10.145) trên cổng 179 - nhưng điều này không thành công với "không có tuyến đến máy chủ". Tuy nhiên, thật kỳ lạ là tôi có thể thấy AWS đang cố gắng kết nối với máy khách BGP của mình trong tcpdump trên giao diện đường hầm:
12:49:45.860899 IP 169.254.10.145.43731 > 169.254.10.146.179: Flags [S], seq 857645259, win 26880, tùy chọn [mss 1375,sackOK,TS val 3261400514 ecr 0,nop, wscale 0 7]
12: 49: 45.860931 IP 169.254.10.146.179> 169.254.10.145.43731: Cờ [S.], SEQ 2284055933, ACK 857645260, WIN 64249, ], chiều dài 0
Có vẻ như máy chủ của tôi đang trả về gói ACK, nhưng kết nối chưa bao giờ được thiết lập. Nếu tôi dừng dịch vụ BGP, chúng tôi sẽ bắt đầu gửi phản hồi RST:
12:52:02.055473 IP 169.254.10.145.43679 > 169.254.10.146.179: Flags [S], seq 2280717367, win 26880, tùy chọn [mss 1375,sackOK,TS val 3261536708 ecr 0,nop, w0 7]
12:52:02.055498 IP 169.254.10.146.179 > 169.254.10.145.43679: Flags [R.], seq 0, ack 1, thắng 0, độ dài 0
Từ đó, tôi đoán rằng gói ACK của kernel và gói ping của tôi đang đi vào giao diện đường hầm, nhưng không thực sự vào được ipsec hoặc đến AWS.
Sau đó, có vẻ như tôi cần thêm một số tuyến đường bổ sung, nhưng tôi không thể tìm ra những gì có thể được yêu cầu. Cảm giác như tôi đã có mọi thứ tại chỗ rồi. Tôi đã xem vô số ví dụ và hướng dẫn, nhưng ít ví dụ hiển thị bất cứ điều gì tôi không có, và thậm chí còn ít hơn nữa xác nhận rằng tôi cần các tuyến đường mà tôi nghĩ là tôi cần hoặc những tuyến đường nào cần thiết để BGP hoạt động. Bất kỳ trợ giúp nhiều đánh giá cao.