2026/07/03(金)ConohaのVPSのポートに穴をあけて外部通信できるようにした

投稿日:

任意のポートでSSH接続をしようとしたら全然繋がらず、ググっても出てこなかったので書く。

この記事ではSSH接続に限らず、IP制限なく任意のポートを開放する方法について扱う。

1. セキュリティグループの作成

  1. コントロールパネルにログインする
  2. 左のメニューからセキュリティ→セキュリティグループを開く
  3. 「+セキュリティグループ」ボタンを押し、MySSHとか適当な名前で設定を作る
  4. 作成したセキュリティグループを開き、左下の「+」を押す
  5. 通信方向:IN
    イーサタイプ:IPv4 or IPv6
    プロトコル:TCP or UDP。1つの設定でTCPとUDP両方開けることはできない
    ポート範囲:単体の場合は10092、範囲の場合は10000-11000のように指定すると思うが範囲指定は試していない
    IP/CIDR:IPv4なら0.0.0.0/0、IPv6なら::/0
  6. コンソールに入る
  7. 初期設定

2. NICへセキュリティグループを割り当て

  1. 左のメニューからサーバーを開き、適用するVPSを開く
  2. ネットワーク情報の「セキュリティグループ」を開く
  3. 「+」ボタンを押し、先ほど作成したセキュリティグループを選択
  4. 保存ボタンを押し、セキュリティグループが追加されていることを確認
  5. この時に、プリセットに存在するICMPのルールも割り当てておくと良い。「IPv4v6-ICMP」がそれだ

この設定の反映は即座には反映されないようで、数秒のタイムラグがあった。3秒くらい待つと繋がった。

3. VPSのファイアーウォールに穴をあける

  1. コンソールからVPSのシェルに入る
  2. /etc/nftables.confを開き、先ほどセキュリティグループで開けた穴が開くように設定する

    #!/usr/sbin/nft -f
    
    flush ruleset
    
    table inet filter {
        chain input {
            type filter hook input priority 0;
            policy drop;
    
            iif "lo" accept
    
            ct state established,related accept
    +
    +         meta l4proto { icmp, ipv6-icmp } accept
    +
    +         tcp dport 3000 accept
        }
    
        chain forward {
            type filter hook forward priority 0;
        }
    }
    
  3. nftablesを再起動する
    systemctl restart nftables
    

おまけ:公開鍵認証を使ったSSH接続について

コントロールパネルのセキュリティ→SSH Keyという項目があるが、ここを設定する必要はない。

/etc/ssh/sshd_configを書き換えて、公開鍵を所定の場所に設置すれば普通に設定できるので、わざわざWeb画面から設定する必要はない。

ここから追加したところでパスワード認証が無効になるのかどうかもわからないし、そもそもこれがSSHDに関連するのかもわからないし、謎設定だと思う。ひょっとしたら単に鍵を生成するだけなのかもしれないが、それならssh-keygenなどを使えばいいわけで…。

あとがき

Conoha公式のVPSスタートアップガイドにはSSH接続でVPSにログインするというのがあるが、セキュリティグループに関する記述がないので、そのままでは標準の22番ポートにすら繋がらないのが困りものだ。

VPSスタートアップガイドと言うからにはそのくらい書いてくれてもいいんじゃないだろうか?と思った。