6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

UDP通信のリバースプロキシサーバを立てる

Last updated at Posted at 2018-11-17

こんにちは、しんた(@trajanme)です。

今回、UDP通信のリバースプロキシサーバを立てることになってちょっと色々調べてます。
とりあえず、もう少ししっかり調べないとQiita記事としては残せないのですが、いったんアウトプットとして投稿します。

認識誤りや誤字などありましたら、随時ご指摘くださいませ。
アドバイスも大歓迎でございます(๑•̀ㅂ•́)و✧

要件

  • client1/2からproxyにきたリクエストを特定のwebserverに対して中継する。

  • 負荷分散はなし。

  • UDP(53)で双方向の通信(client→webserver、webserver→client)がある

  • clientは直接webserverにアクセスできない

  • client1: 192.168.0.11

  • client2: 192.168.0.12

  • proxy: 192.168.0.101 / 192.100.110.101

  • webserver: 192.100.100.101

  • client1/2 <-|`udp(53)`|-> proxy <-|`udp(53)`|-> webserver

Nginxを使う

NginxがUDPのロードバランシングに対応しているようなので、これができないかやってみた。
(というか、他があまりでてこない。。)

Nginxを使う場合は、--with-streamオプションをつけてmakeしなければいけないらしい。

/usr/local/nginx/conf/nginx.conf
user  nginx;
worker_processes  1;
pid logs/nginx.pid;

events {
  worker_connections  1024;
}

http {
  include mime.types;
  default_type  application/octet-stream;

  log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';
  access_log  logs/access.log  main;
  sendfile  on;
  keepalive_timeout 65;

  include /usr/local/nginx/conf.d/*.http.conf;
}

stream {
  include /usr/local/nginx/conf.d/*.stream.conf;
}
/usr/local/nginx/conf.d/backend.steram.conf
upstream backend {
  server webserver:53 udp;
  proxy_pass backend-server;
}

backend-server {
  listen WEBSERVER_HOSTNAME:53;  
}

これで、クライアントからWEBSERVER_HOSTNAME53ポートのUDPでアクセスできた。
ただ、今回はやりたい環境に--with-streamつきのNginxを入れられないという制約なので、別プランを考えなければいけない。

ルーティングテーブルでそれっぽくやる

リバプロサーバがWEBSERVER_HOSTNAMEを受け取ったり、クライアントのIPアドレスを受け取ったときに、自動で転送するようにルーティングテーブルに細工する方法、というのも考えてみている。

参考

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?