Rust Dedicated Server(以下RDS)のコンテナをDocker NATを経由せずホストに直接バインドすれば、ちょっと困っていたことが解消できそうな気がしたので、昨晩ログイン数が0になっているときにネットワーク構成を変えてみました。
ネットワーク構成のイメージは構成変更前後でこんなふうに変わっています。
左が変更前、右が変更後です。NATを経由しないのでIPアドレス変換は起こらなくなるはず。果たしてその結果は…
ログやユーザ一覧にプライベートIPアドレスで記録される件
変更した結果、ユーザ一覧に表示されるユーザのIPアドレスが変わりました。
完璧です。
ゲーム内のサーバ一覧から消える件
昨晩の設定変更後、数時間プレイした後、今朝の出勤前にRustのサーバ一覧を確認しましたがしっかり掲載されていました。それだけではなく、今までちゃんと表示できていなかったサーバ説明欄もしっかり表示されるようになっています!
完璧です。
結論
昨日の予想通り、NAT環境下からホストに直接バインドすることで万事上手く動作するようになりました。
これでF1キーでコンソールを開いたりすることなく簡単にサーバに入ることができます! 入ってくる人いないけど!
おまけ
現在docker stack deploy
で使用しているcomposeファイルはこんなふうに変わっています。
version: '3.3'
services:
rustds:
image: didstopia/rust-server
networks:
- on-host
volumes:
- rustds-data:/steamcmd/rust
environment:
TZ: Asia/Tokyo
RUST_SERVER_STARTUP_ARGUMENTS: -batchmode -nographics -logfile /dev/stdout +decay.scale 0.3
RUST_SERVER_IDENTITY: plusultra
RUST_SERVER_SEED: 1234568
RUST_SERVER_NAME: PlusUltra dedicated server
RUST_SERVER_DESCRIPTION: A playroom for PlusUltra members.
RUST_SERVER_URL: https://xxx.xxx.xxx/
RUST_SERVER_BANNER_URL: http://xxx.xxx.xxx/banner.jpg
RUST_RCON_PASSWORD: xxxxxxxxxxxxxxxx
RUST_UPDATE_CHECKING: 1
RUST_SERVER_WORLDSIZE: 3500
RUST_SERVER_MAXPLAYERS: 15
RUST_SERVER_SAVE_INTERVAL: 300
RUST_OXIDE_ENABLED: 1
deploy:
replicas: 1
restart_policy:
condition: any
update_config:
parallelism: 1
networks:
on-host:
external:
name: "host"
volumes:
rustds-data:
driver_opts:
type: none
device: /var/rust/rustds
o: bind
composeファイルのバージョンを3.3にしたのと、rustdsサービスが使用するネットワークを「このcomposeファイルの外で宣言している"host"というネットワーク」に指定することでホストに直接バインドしています。この指定ができるのはおそらくDocker 17.06.02以降かなと思います。