使用同一端口连接两个网络接口

使用同一端口连接两个网络接口

我有 2 个主机

  • 一个具有两个网络接口的10.0.0.1172.0.0.1
  • 第二个有一个网络接口:172.0.0.2

两台主机使用172.0.0.0

第一个主机通过10.0.0.1接口公开一个端口,比如说 8088

我希望第二台主机不使用路由或 IP 转发来连接到这个端口,假设我这样做时172.0.0.1:8088我自动获得10.0.0.1:8088

我怎样才能做到这一点?

10.0.0.1:8088是一个 http 协议。

谢谢。

更新

我很抱歉,也许我没有很好地解释我的问题。

10.0.0.1:8088我有一个仅在(网络接口)上监听的 HTTP 服务,所以当我这样做时localhost:8088172.0.0.1:8088不起作用。

现在我想在 172.0.0.1 接口上开放一个新端口,公开与 10.0.0.1:8088 相同的内容,而无需更改 HTTP 服务配置。

其背后的想法是能够使用 172.0.0.1:8088 与 10.0.0.1:8088 相同,而无需更改 HTTP 服务器配置。

ifconfig

eth0      Link encap:Ethernet  HWaddr 02:42:0a:00:00:02  
          inet addr:10.0.0.1  Bcast:0.0.0.0  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1450  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

eth1      Link encap:Ethernet  HWaddr 02:42:ac:12:00:02  
          inet addr:172.0.0.1  Bcast:0.0.0.0  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:187 errors:0 dropped:0 overruns:0 frame:0
          TX packets:137 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:193840 (193.8 KB)  TX bytes:11435 (11.4 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:2 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:192 (192.0 B)  TX bytes:192 (192.0 B)

netstat -tulpn

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:50070           0.0.0.0:*               LISTEN      197/java        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      30/sshd         
tcp        0      0 10.0.0.1:8088           0.0.0.0:*               LISTEN      598/java        
tcp        0      0 10.0.0.1:8030           0.0.0.0:*               LISTEN      598/java        
tcp        0      0 10.0.0.1:8031           0.0.0.0:*               LISTEN      598/java        
tcp        0      0 10.0.0.1:8032           0.0.0.0:*               LISTEN      598/java        
tcp        0      0 10.0.0.1:8033           0.0.0.0:*               LISTEN      598/java        
tcp        0      0 127.0.0.11:43077        0.0.0.0:*               LISTEN      -               
tcp        0      0 10.0.0.1:9000           0.0.0.0:*               LISTEN      197/java        
tcp        0      0 0.0.0.0:50090           0.0.0.0:*               LISTEN      414/java        
tcp6       0      0 :::22                   :::*                    LISTEN      30/sshd         
udp        0      0 127.0.0.11:35495        0.0.0.0:*                           -     

答案1

具体来说对于您在此处讨论的服务,监听端口 8080,它使用 HTTP。此外,它仅在 上运行10.0.0.1:8088

我们可以配置nginx一个Web服务器软件,来对的IP和端口进行绑定172.0.0.1:8088

首先,安装nginxsudo apt-get install nginx

安装后,运行以下命令关闭 NGINX 服务:sudo systemctl stop nginxsudo service nginx stop

从 NGINX 的启动配置中删除默认配置文件:

sudo rm /etc/nginx/sites-enabled/default

创建一个名为“8088_reverse_proxy”的配置文件/etc/nginx/sites-available,或者您可以给此配置文件起的任何名称,这样您就知道它的作用了。创建文件后,将以下文本放入配置文件中:

server {
    listen 172.0.0.1:8088;

    server_name 172.0.0.1;

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://10.0.0.1:8088;
        proxy_intercept_errors on;
    }
}

输入后请保存文件。

然后,在以下位置创建指向此配置文件的符号链接/etc/nginx/sites-enabled

sudo ln -s /etc/nginx/sites-available/[FILENAME] /etc/nginx/sites-enabled/

...确保[FILENAME]用您为配置文件选择的确切文件名进行替换。

然后,完成后使用sudo service nginx start或启动 nginx 服务sudo systemctl start nginx

http://172.0.0.1:8088然后,您可以从 172.0.0.X 子网上的任何其他计算机(如果这是 Internet 地址,则从任何地方)通过在其他系统的地址栏中输入来访问 172.0.0.1:8088 上的服务。

相关内容