mirror of
https://mirror.suhoan.cn/https://github.com/EasyTier/EasyTier.git
synced 2025-12-12 20:57:26 +08:00
add test for ipv6 wireguard vpn portal (#1408)
This commit is contained in:
@@ -25,7 +25,7 @@ pub fn del_netns(name: &str) {
|
|||||||
.output();
|
.output();
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn create_netns(name: &str, ipv4: &str) {
|
pub fn create_netns(name: &str, ipv4: &str, ipv6: &str) {
|
||||||
// create netns
|
// create netns
|
||||||
let _ = std::process::Command::new("ip")
|
let _ = std::process::Command::new("ip")
|
||||||
.args(["netns", "add", name])
|
.args(["netns", "add", name])
|
||||||
@@ -76,20 +76,22 @@ pub fn create_netns(name: &str, ipv4: &str) {
|
|||||||
.output()
|
.output()
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
let _ = std::process::Command::new("ip")
|
for ip in [ipv4, ipv6] {
|
||||||
.args([
|
let _ = std::process::Command::new("ip")
|
||||||
"netns",
|
.args([
|
||||||
"exec",
|
"netns",
|
||||||
name,
|
"exec",
|
||||||
"ip",
|
name,
|
||||||
"addr",
|
"ip",
|
||||||
"add",
|
"addr",
|
||||||
ipv4,
|
"add",
|
||||||
"dev",
|
ip,
|
||||||
get_guest_veth_name(name),
|
"dev",
|
||||||
])
|
get_guest_veth_name(name),
|
||||||
.output()
|
])
|
||||||
.unwrap();
|
.output()
|
||||||
|
.unwrap();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn prepare_bridge(name: &str) {
|
pub fn prepare_bridge(name: &str) {
|
||||||
|
|||||||
@@ -40,10 +40,10 @@ pub fn prepare_linux_namespaces() {
|
|||||||
del_netns("net_c");
|
del_netns("net_c");
|
||||||
del_netns("net_d");
|
del_netns("net_d");
|
||||||
|
|
||||||
create_netns("net_a", "10.1.1.1/24");
|
create_netns("net_a", "10.1.1.1/24", "fd11::1/64");
|
||||||
create_netns("net_b", "10.1.1.2/24");
|
create_netns("net_b", "10.1.1.2/24", "fd11::2/64");
|
||||||
create_netns("net_c", "10.1.2.3/24");
|
create_netns("net_c", "10.1.2.3/24", "fd12::3/64");
|
||||||
create_netns("net_d", "10.1.2.4/24");
|
create_netns("net_d", "10.1.2.4/24", "fd12::4/64");
|
||||||
|
|
||||||
prepare_bridge("br_a");
|
prepare_bridge("br_a");
|
||||||
prepare_bridge("br_b");
|
prepare_bridge("br_b");
|
||||||
@@ -931,10 +931,18 @@ fn run_wireguard_client(
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "wireguard")]
|
#[cfg(feature = "wireguard")]
|
||||||
|
#[rstest::rstest]
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
#[serial_test::serial]
|
#[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;
|
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 net_ns = NetNS::new(Some("net_d".into()));
|
||||||
let _g = net_ns.guard();
|
let _g = net_ns.guard();
|
||||||
insts[2]
|
insts[2]
|
||||||
@@ -946,11 +954,17 @@ pub async fn wireguard_vpn_portal() {
|
|||||||
});
|
});
|
||||||
insts[2].run_vpn_portal().await.unwrap();
|
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 net_ns = NetNS::new(Some("net_d".into()));
|
||||||
let _g = net_ns.guard();
|
let _g = net_ns.guard();
|
||||||
let wg_cfg = get_wg_config_for_portal(&insts[2].get_global_ctx().get_network_identity());
|
let wg_cfg = get_wg_config_for_portal(&insts[2].get_global_ctx().get_network_identity());
|
||||||
run_wireguard_client(
|
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.my_public_key()).unwrap(),
|
||||||
Key::try_from(wg_cfg.peer_secret_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()],
|
vec!["10.14.14.0/24".to_string(), "10.144.144.0/24".to_string()],
|
||||||
|
|||||||
Reference in New Issue
Block a user