prepareSTUNServer creates a STUN server networking spec in a network namespace and joins it to the bridge. It also sets up the DERP map for the clients to use the STUN.
(t *testing.T, internet *fakeInternet, number int)
| 764 | // namespace and joins it to the bridge. It also sets up the DERP map for the |
| 765 | // clients to use the STUN. |
| 766 | func prepareSTUNServer(t *testing.T, internet *fakeInternet, number int) TestNetworkingSTUN { |
| 767 | name := fmt.Sprintf("stn%d", number) |
| 768 | |
| 769 | stunNetNS := createNetNS(t, internet.NamePrefix+name) |
| 770 | stun := TestNetworkingSTUN{ |
| 771 | Process: TestNetworkingProcess{ |
| 772 | NetNS: stunNetNS, |
| 773 | }, |
| 774 | } |
| 775 | |
| 776 | stun.IP = "10.0.0." + fmt.Sprint(64+number) |
| 777 | err := joinBridge(joinBridgeOpts{ |
| 778 | bridgeNetNS: internet.BridgeNetNS, |
| 779 | netNS: stunNetNS, |
| 780 | bridgeName: internet.BridgeName, |
| 781 | vethPair: vethPair{ |
| 782 | Outer: internet.NamePrefix + "b-" + name, |
| 783 | Inner: internet.NamePrefix + name + "-b", |
| 784 | }, |
| 785 | ip: stun.IP, |
| 786 | }) |
| 787 | require.NoError(t, err, "join bridge with STUN server") |
| 788 | stun.ListenAddr = stun.IP + ":3478" |
| 789 | |
| 790 | // Define custom DERP map. |
| 791 | stunRegion := &tailcfg.DERPRegion{ |
| 792 | RegionID: 10000 + number, |
| 793 | RegionCode: name, |
| 794 | RegionName: name, |
| 795 | Nodes: []*tailcfg.DERPNode{ |
| 796 | { |
| 797 | Name: name + "a", |
| 798 | RegionID: 1, |
| 799 | IPv4: stun.IP, |
| 800 | IPv6: "none", |
| 801 | STUNPort: 3478, |
| 802 | STUNOnly: true, |
| 803 | }, |
| 804 | }, |
| 805 | } |
| 806 | client1DERP, err := internet.Net.Client1.ResolveDERPMap() |
| 807 | require.NoError(t, err, "resolve DERP map for client 1") |
| 808 | client1DERP.Regions[stunRegion.RegionID] = stunRegion |
| 809 | internet.Net.Client1.DERPMap = client1DERP |
| 810 | client2DERP, err := internet.Net.Client2.ResolveDERPMap() |
| 811 | require.NoError(t, err, "resolve DERP map for client 2") |
| 812 | client2DERP.Regions[stunRegion.RegionID] = stunRegion |
| 813 | internet.Net.Client2.DERPMap = client2DERP |
| 814 | |
| 815 | return stun |
| 816 | } |
| 817 | |
| 818 | func iptablesMasqueradeNonUDP(t *testing.T, netNS *os.File) { |
| 819 | t.Helper() |
no test coverage detected