add test for ipv6 wireguard vpn portal (#1408)

This commit is contained in:
Sijie.Sun
2025-09-25 08:24:56 +08:00
committed by GitHub
parent 67abf4446d
commit 7a694257d9
2 changed files with 37 additions and 21 deletions

View File

@@ -25,7 +25,7 @@ pub fn del_netns(name: &str) {
.output();
}
pub fn create_netns(name: &str, ipv4: &str) {
pub fn create_netns(name: &str, ipv4: &str, ipv6: &str) {
// create netns
let _ = std::process::Command::new("ip")
.args(["netns", "add", name])
@@ -76,20 +76,22 @@ pub fn create_netns(name: &str, ipv4: &str) {
.output()
.unwrap();
let _ = std::process::Command::new("ip")
.args([
"netns",
"exec",
name,
"ip",
"addr",
"add",
ipv4,
"dev",
get_guest_veth_name(name),
])
.output()
.unwrap();
for ip in [ipv4, ipv6] {
let _ = std::process::Command::new("ip")
.args([
"netns",
"exec",
name,
"ip",
"addr",
"add",
ip,
"dev",
get_guest_veth_name(name),
])
.output()
.unwrap();
}
}
pub fn prepare_bridge(name: &str) {

View File

@@ -40,10 +40,10 @@ pub fn prepare_linux_namespaces() {
del_netns("net_c");
del_netns("net_d");
create_netns("net_a", "10.1.1.1/24");
create_netns("net_b", "10.1.1.2/24");
create_netns("net_c", "10.1.2.3/24");
create_netns("net_d", "10.1.2.4/24");
create_netns("net_a", "10.1.1.1/24", "fd11::1/64");
create_netns("net_b", "10.1.1.2/24", "fd11::2/64");
create_netns("net_c", "10.1.2.3/24", "fd12::3/64");
create_netns("net_d", "10.1.2.4/24", "fd12::4/64");
prepare_bridge("br_a");
prepare_bridge("br_b");
@@ -931,10 +931,18 @@ fn run_wireguard_client(
}
#[cfg(feature = "wireguard")]
#[rstest::rstest]
#[tokio::test]
#[serial_test::serial]
pub async fn wireguard_vpn_portal() {
pub async fn wireguard_vpn_portal(#[values(true, false)] test_v6: bool) {
let mut insts = init_three_node("tcp").await;
if test_v6 {
ping6_test("net_d", "fd12::3", None).await;
} else {
ping_test("net_d", "10.1.2.3", None).await;
}
let net_ns = NetNS::new(Some("net_d".into()));
let _g = net_ns.guard();
insts[2]
@@ -946,11 +954,17 @@ pub async fn wireguard_vpn_portal() {
});
insts[2].run_vpn_portal().await.unwrap();
let dst_socket_addr = if test_v6 {
"[fd12::3]:22121".parse().unwrap()
} else {
"10.1.2.3:22121".parse().unwrap()
};
let net_ns = NetNS::new(Some("net_d".into()));
let _g = net_ns.guard();
let wg_cfg = get_wg_config_for_portal(&insts[2].get_global_ctx().get_network_identity());
run_wireguard_client(
"10.1.2.3:22121".parse().unwrap(),
dst_socket_addr,
Key::try_from(wg_cfg.my_public_key()).unwrap(),
Key::try_from(wg_cfg.peer_secret_key()).unwrap(),
vec!["10.14.14.0/24".to_string(), "10.144.144.0/24".to_string()],