Skip to content

Commit

Permalink
Merge pull request #7382 from rancher-sandbox/change-network-ip-for-h…
Browse files Browse the repository at this point in the history
…ostname

Remove instances of IPv4 for hostnames
  • Loading branch information
mook-as authored Aug 29, 2024
2 parents 3f7b896 + c8056bc commit d8e428f
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 31 deletions.
8 changes: 4 additions & 4 deletions pkg/rancher-desktop/backend/wsl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -115,8 +115,8 @@ export default class WSLBackend extends events.EventEmitter implements VMBackend

if (this.cfg?.kubernetes.enabled) {
const k8sPort = 6443;
const gatewayIP = '192.168.127.2';
const k8sPortForwarding = `127.0.0.1:${ k8sPort }=${ gatewayIP }:${ k8sPort }`;
const eth0IP = '192.168.127.2';
const k8sPortForwarding = `127.0.0.1:${ k8sPort }=${ eth0IP }:${ k8sPort }`;

args.push('--port-forward', k8sPortForwarding);
}
Expand Down Expand Up @@ -769,7 +769,7 @@ export default class WSLBackend extends events.EventEmitter implements VMBackend
const credsPath = getServerCredentialsPath();

try {
const credentialServerAddr = '192.168.127.254:6109';
const credentialServerAddr = 'host.rancher-desktop.internal:6109';
const stateInfo: ServerState = JSON.parse(await fs.promises.readFile(credsPath, { encoding: 'utf-8' }));
const escapedPassword = stateInfo.password.replace(/\\/g, '\\\\')
.replace(/'/g, "\\'");
Expand Down Expand Up @@ -1294,7 +1294,7 @@ export default class WSLBackend extends events.EventEmitter implements VMBackend
try {
await this.progressTracker.action('Installing container engine', 0, Promise.all([
this.progressTracker.action('Starting WSL environment', 100, async() => {
const rdNetworkingDNS = '192.168.127.1';
const rdNetworkingDNS = 'gateway.rancher-desktop.internal';
const logPath = await this.wslify(paths.logs);
const rotateConf = LOGROTATE_K3S_SCRIPT.replace(/\r/g, '')
.replace('/var/log', logPath);
Expand Down
5 changes: 3 additions & 2 deletions src/go/guestagent/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,10 +57,11 @@ var (
adminInstall = flag.Bool("adminInstall", false, "indicates if Rancher Desktop is installed as admin or not")
k8sAPIPort = flag.String("k8sAPIPort", "6443",
"K8sAPI port number to forward to rancher-desktop wsl-proxy as a static portMapping event")
tapIfaceIP = flag.String("tap-interface-ip", "192.168.127.2",
"IP address for the tap interface eth0 in network namespace")
)

const (
wslInfName = "eth0"
iptablesUpdateInterval = 3 * time.Second
socketInterval = 5 * time.Second
socketRetryTimeout = 2 * time.Minute
Expand Down Expand Up @@ -113,7 +114,7 @@ func main() {
var portTracker tracker.Tracker

forwarder := forwarder.NewWSLProxyForwarder("/run/wsl-proxy.sock")
portTracker = tracker.NewAPITracker(forwarder, tracker.GatewayBaseURL, *adminInstall)
portTracker = tracker.NewAPITracker(forwarder, tracker.GatewayBaseURL, *tapIfaceIP, *adminInstall)
// Manually register the port for K8s API, we would
// only want to send this manual port mapping if both
// of the following conditions are met:
Expand Down
32 changes: 16 additions & 16 deletions src/go/guestagent/pkg/tracker/apitracker.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,15 +32,11 @@ import (
)

const (
// The Gateway IP address that is statically reserved
// by DHCP and will not change. It is used to initialize
// the NewAPITracker.
GatewayBaseURL = "http://192.168.127.1:80"
// Tap device (eth0) IP which is also allocated to the host-switch
// it is statically reserved by DHCP.
hostSwitchIP = "192.168.127.2"
exposeAPI = "/services/forwarder/expose"
unexposeAPI = "/services/forwarder/unexpose"
// The gateway represents the hostname where the hostSwitch API is hosted.
gateway = "gateway.rancher-desktop.internal"
GatewayBaseURL = "http://" + gateway + ":80"
exposeAPI = "/services/forwarder/expose"
unexposeAPI = "/services/forwarder/unexpose"
)

var (
Expand All @@ -56,20 +52,22 @@ var (
// and unexposing the ports on the host. This should only be used when
// the Rancher Desktop networking is enabled and the privileged service is disabled.
type APITracker struct {
forwarder forwarder.Forwarder
isAdmin bool
baseURL string
httpClient http.Client
portStorage *portStorage
forwarder forwarder.Forwarder
isAdmin bool
baseURL string
tapInterfaceIP string
httpClient http.Client
portStorage *portStorage
*ListenerTracker
}

// NewAPITracker creates a new instance of a API Tracker.
func NewAPITracker(forwarder forwarder.Forwarder, baseURL string, isAdmin bool) *APITracker {
func NewAPITracker(forwarder forwarder.Forwarder, baseURL, tapIfaceIP string, isAdmin bool) *APITracker {
return &APITracker{
forwarder: forwarder,
isAdmin: isAdmin,
baseURL: baseURL,
tapInterfaceIP: tapIfaceIP,
httpClient: *http.DefaultClient,
portStorage: newPortStorage(),
ListenerTracker: NewListenerTracker(),
Expand All @@ -90,6 +88,7 @@ func (a *APITracker) Add(containerID string, portMap nat.PortMap) error {
// The expose API only supports IPv4
ipv4, err := isIPv4(portBinding.HostIP)
if !ipv4 || err != nil {
log.Errorf("did not receive IPv4 for HostIP: %s", portBinding.HostIP)
continue
}

Expand All @@ -98,7 +97,7 @@ func (a *APITracker) Add(containerID string, portMap nat.PortMap) error {
err = a.expose(
&types.ExposeRequest{
Local: ipPortBuilder(a.determineHostIP(portBinding.HostIP), portBinding.HostPort),
Remote: ipPortBuilder(hostSwitchIP, portBinding.HostPort),
Remote: ipPortBuilder(a.tapInterfaceIP, portBinding.HostPort),
})
if err != nil {
errs = append(errs, fmt.Errorf("exposing %+v failed: %w", portBinding, err))
Expand Down Expand Up @@ -149,6 +148,7 @@ func (a *APITracker) Remove(containerID string) error {
// The unexpose API only supports IPv4
ipv4, err := isIPv4(portBinding.HostIP)
if !ipv4 || err != nil {
log.Errorf("did not receive IPv4 for HostIP: %s", portBinding.HostIP)
continue
}

Expand Down
18 changes: 9 additions & 9 deletions src/go/guestagent/pkg/tracker/apitracker_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ func TestBasicAdd(t *testing.T) {
defer testSrv.Close()

forwarder := testForwarder{}
apiTracker := tracker.NewAPITracker(&forwarder, testSrv.URL, true)
apiTracker := tracker.NewAPITracker(&forwarder, testSrv.URL, hostSwitchIP, true)
portMapping := nat.PortMap{
"80/tcp": []nat.PortBinding{
{
Expand Down Expand Up @@ -92,7 +92,7 @@ func TestAddOverride(t *testing.T) {
defer testSrv.Close()

forwarder := testForwarder{}
apiTracker := tracker.NewAPITracker(&forwarder, testSrv.URL, true)
apiTracker := tracker.NewAPITracker(&forwarder, testSrv.URL, hostSwitchIP, true)
portMapping := nat.PortMap{
"80/tcp": []nat.PortBinding{
{
Expand Down Expand Up @@ -184,7 +184,7 @@ func TestAddWithError(t *testing.T) {
defer testSrv.Close()

forwarder := testForwarder{}
apiTracker := tracker.NewAPITracker(&forwarder, testSrv.URL, true)
apiTracker := tracker.NewAPITracker(&forwarder, testSrv.URL, hostSwitchIP, true)
portMapping := nat.PortMap{
"80/tcp": []nat.PortBinding{
{
Expand Down Expand Up @@ -280,7 +280,7 @@ func TestGet(t *testing.T) {
defer testSrv.Close()

forwarder := testForwarder{}
apiTracker := tracker.NewAPITracker(&forwarder, testSrv.URL, true)
apiTracker := tracker.NewAPITracker(&forwarder, testSrv.URL, hostSwitchIP, true)
err := apiTracker.Add(containerID, portMapping)
require.NoError(t, err)

Expand Down Expand Up @@ -309,7 +309,7 @@ func TestRemove(t *testing.T) {
defer testSrv.Close()

forwarder := testForwarder{}
apiTracker := tracker.NewAPITracker(&forwarder, testSrv.URL, true)
apiTracker := tracker.NewAPITracker(&forwarder, testSrv.URL, hostSwitchIP, true)
portMapping1 := nat.PortMap{
"80/tcp": []nat.PortBinding{
{
Expand Down Expand Up @@ -374,7 +374,7 @@ func TestRemoveWithError(t *testing.T) {
defer testSrv.Close()

forwarder := testForwarder{}
apiTracker := tracker.NewAPITracker(&forwarder, testSrv.URL, true)
apiTracker := tracker.NewAPITracker(&forwarder, testSrv.URL, hostSwitchIP, true)

portMapping := nat.PortMap{
"80/tcp": []nat.PortBinding{
Expand Down Expand Up @@ -435,7 +435,7 @@ func TestRemoveAll(t *testing.T) {
defer testSrv.Close()

forwarder := testForwarder{}
apiTracker := tracker.NewAPITracker(&forwarder, testSrv.URL, true)
apiTracker := tracker.NewAPITracker(&forwarder, testSrv.URL, hostSwitchIP, true)

portMapping1 := nat.PortMap{
"80/tcp": []nat.PortBinding{
Expand Down Expand Up @@ -500,7 +500,7 @@ func TestRemoveAllWithError(t *testing.T) {
defer testSrv.Close()

forwarder := testForwarder{}
apiTracker := tracker.NewAPITracker(&forwarder, testSrv.URL, true)
apiTracker := tracker.NewAPITracker(&forwarder, testSrv.URL, hostSwitchIP, true)

portMapping1 := nat.PortMap{
"80/tcp": []nat.PortBinding{
Expand Down Expand Up @@ -581,7 +581,7 @@ func TestNonAdminInstall(t *testing.T) {
defer testSrv.Close()

forwarder := testForwarder{}
apiTracker := tracker.NewAPITracker(&forwarder, testSrv.URL, false)
apiTracker := tracker.NewAPITracker(&forwarder, testSrv.URL, hostSwitchIP, false)

portMapping := nat.PortMap{
"1025/tcp": []nat.PortBinding{
Expand Down

0 comments on commit d8e428f

Please sign in to comment.