У меня есть провайдер (A), который хочет отправлять нам данные через входящее TCP-соединение. К сожалению, служба-получатель (B) не может принимать входящие TCP-соединения. Также у него нет статического IP-адреса, еще одно требование.
Одним из способов решения этой проблемы может быть служба, которая соединяет входящий порт TCP A с другим портом TCP B, чтобы потребитель мог установить исходящее соединение с B.
Это не уникальная проблема [1] [2], и с помощью socat я могу сделать что-то очень близкое к тому, что я хочу:
socat -d -d -d -u TCP4-LISTEN: PORT-A, reuseaddr TCP4-LISTEN : PORT-B, reuseaddr
Однако здесь возникают следующие проблемы:
TCP4-LISTEN: PORT-B, reuseaddr, fork
он может подключаться, но не получает данные.
эти правила брандмауэра по умолчанию не действуют:> $ gcloud compute --project "plop" firewall-rules
> описать default-allow-http ... Я заметил странное поведение моего вычислительного движка gcloud " эти правила брандмауэра по умолчанию не действуют:
> $ gcloud compute --project "plop" firewall-rules
> describe default-allow-http allowed:
> - IPProtocol: tcp ports:
> - '80' creationTimestamp: '2018-07-26T05:17:16.627-07:00' description: '' direction: INGRESS kind: compute#firewall name:
> default-allow-http network:
> https://www.googleapis.com/compute/v1/projects/plop/global/networks/default
> priority: 1000 selfLink:
> https://www.googleapis.com/compute/v1/projects/plop/global/firewalls/default-allow-http
> sourceRanges:
> - 0.0.0.0/0 targetTags:
> - http-server
И я добавил следующее:
> $ gcloud compute --project "plop" firewall-rules
> describe web allowed:
> - IPProtocol: tcp ports:
> - '80' creationTimestamp: '2018-06-26T01:48:18.068-07:00' description: '' direction: INGRESS kind: compute#firewall name: web
> network:
> https://www.googleapis.com/compute/v1/projects/plop/global/networks/default
> priority: 1000 selfLink:
> https://www.googleapis.com/compute/v1/projects/plop/global/firewalls/web
> sourceRanges:
> - 0.0.0.0/0
>
Хотя мне кажется, что эти два правила идентичны, есть идеи, почему?
Первое правило брандмауэра default-allow-http - это правило по умолчанию на платформе Google Cloud, которое вы найдете в любом проекте. Второй, как и первый, разрешает http ( Порт 80 ), с той лишь разницей, что только первый имеет Target . Правило брандмауэра применяется только к виртуальным машинам с соответствующий сетевой тег .
И снова второй межсетевой экран web будет применен к любым виртуальным машинам в сети по умолчанию, поскольку не указана цель.