我有 2 个主机
- 一个具有两个网络接口的
10.0.0.1
:172.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:8088
它172.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
。
首先,安装nginx
: sudo apt-get install nginx
安装后,运行以下命令关闭 NGINX 服务:sudo systemctl stop nginx
或sudo 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 上的服务。