여러 기본 게이트웨이를 라우팅하는 Docker의 네트워크

여러 기본 게이트웨이를 라우팅하는 Docker의 네트워크

Docker가 있는 웹서버 호스트가 있습니다. 이 인스턴스에 2개의 유동 IP를 연결하고 싶습니다. 그러나 결국 Docker는 유동 IP 중 하나만 공개적으로 제공합니다.

나는 다음을 따른다: https://www.notion.so/bigstack/Dual-WAN-routing-5e4f25a6f7a74a658ec1ead16af86968#57acc41726b749168da9c07c7ed78c0d

다중 기본 게이트웨이 설정의 경우

규칙 추가 - ens3

sudo ip route add 192.168.100.0/24 dev ens3 src 192.168.100.38 table 100
sudo ip route add default via 192.168.100.1 dev ens3 table 100
sudo ip rule add from 192.168.100.38/32 table 100
sudo ip rule add to 192.168.100.38/32 table 100
sudo ip route add default via 192.168.100.1 metric 100 dev ens3

규칙 추가 - ens4

sudo ip route add 192.168.101.0/24 dev ens4 src 192.168.101.24 table 200
sudo ip route add default via 192.168.101.1 dev ens4 table 200
sudo ip rule add from 192.168.101.24/32 table 200
sudo ip rule add to 192.168.101.24/32 table 200
sudo ip route add default via 192.168.101.1 metric 200 dev ens4

IP 라우팅 및 규칙

ubuntu@bs-web-test: /var/www/html
$ ip rule show                                                                                                            [11:47:28]
0:  from all lookup local
32762:  from all to 192.168.101.24 lookup 200
32763:  from 192.168.101.24 lookup 200
32764:  from all to 192.168.100.38 lookup 100
32765:  from 192.168.100.38 lookup 100
32766:  from all lookup main
32767:  from all lookup default

ubuntu@bs-web-test: /var/www/html
$ ip route show                                                                                                           [11:47:32]
default via 192.168.100.1 dev ens3 metric 100
default via 192.168.101.1 dev ens4 metric 200
169.254.169.254 via 192.168.101.1 dev ens4 proto dhcp src 192.168.101.24 metric 100
169.254.169.254 via 192.168.100.1 dev ens3 proto dhcp src 192.168.100.38 metric 100
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
172.18.0.0/16 dev br-7399437930c9 proto kernel scope link src 172.18.0.1 linkdown
172.19.0.0/16 dev br-9bf79dfaaf1d proto kernel scope link src 172.19.0.1
192.168.100.0/24 dev ens3 proto kernel scope link src 192.168.100.38
192.168.101.0/24 dev ens4 proto kernel scope link src 192.168.101.24

Docker - 포트 8080에서 docker 서비스를 사용하여 웹 서버를 만들었습니다.

Apache2(호스트 수준) - apt를 사용하여 apache2를 설치하고 포트 80에서 제공합니다.

nmap을 사용하여 유동 IP 스캔

$ nmap 45.x.x.x
Starting Nmap 7.80 ( https://nmap.org ) at 2020-05-20 11:32 CST
Nmap scan report for 45.x.x.x
Host is up (0.089s latency).
Not shown: 997 closed ports
PORT     STATE    SERVICE
22/tcp   open     ssh
80/tcp   open     http
8080/tcp filtered http-proxy

Nmap done: 1 IP address (1 host up) scanned in 2.53 seconds

$ nmap 119.x.x.x
Starting Nmap 7.80 ( https://nmap.org ) at 2020-05-20 11:32 CST
Nmap scan report for isp.chiefchief.net.tw (119.x.x.x)
Host is up (0.010s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
8080/tcp open  http-proxy

컬로 테스트됨

$ curl 192.168.100.38:8080
<h1>Welcome</h1>

$ curl 119.x.x.x:8080
<h1>Welcome</h1>

curl 192.168.101.24:8080
<h1>Welcome</h1>

$ curl 45.x.x.x:8080
curl: (7) Failed to connect to 45.x.x.x port 8080: Operation timed out

$ curl 192.168.100.38
<h1> This is Apache2 Test page </h1>

curl 192.168.101.24
<h1> This is Apache2 Test page </h1>

$ curl 119.x.x.x
<h1> This is Apache2 Test page </h1>

$ curl 45.x.x.x
<h1> This is Apache2 Test page </h1>

질문: 로컬 네트워크를 통해 웹서버(docker)를 문제 없이 컬링하지만 공용 IP에서는 문제가 없나요?

읽어주셔서 감사하고 도움주셔서 감사합니다~

관련 정보