/
カテゴリー

問題名

アンインストールされたがらない呪い

概要

apt-getでvimをアンインストールしたところ、エラーが表示される

前提条件

初期状態

  • sudo apt remove vim が成功しない(※vimに限らず任意のパッケージでも)

終了状態

  • sudo apt remove vim が成功する(※vimに限らず任意のパッケージでも)

解説

apt updateやdpkg(apt install)がアップデート・インストール時に排他制御に使う以下のファイルが、ファイルシステムの機能で保護されていました。

  • /var/lib/dpkg/lock
  • /var/lib/apt/lists/lock

そのため、chattr -iコマンドを打つことで、保護のアトリビュートを外すことができます。

 /
カテゴリー

問題名

ping が通らない

概要

natの設定をしたが、なぜかつながらない。原因を究明してつながるようにしてほしい。

前提条件

  • nat の設定を消さないで
  • Router A, B 両方でnatを使用してつながるようにしてください。

初期状態

hostA から hostB(192.168.25.94) に ping が通らない

終了状態

hostA から hostB(192.168.25.94) に ping が通る

問題環境

RouterA

[email protected]:~$ show conf
interfaces {
    ethernet eth0 {
        address 192.168.25.30/27
        hw-id 9c:a3:ba:30:8f:64
    }
    ethernet eth1 {
        address 192.168.25.33/27
        hw-id 9c:a3:ba:30:68:2a
    }
    loopback lo {
    }
}
nat {
    source {
        rule 100 {
            destination {
                address 192.168.25.32/27
            }
            outbound-interface eth1
            source {
                address 192.168.25.1
            }
            translation {
                address 192.168.25.33
            }
        }
    }
}

RouterB

[email protected]:~$ show conf
interfaces {
    ethernet eth0 {
        address 192.168.25.65/27
        hw-id 9c:a3:ba:30:88:03
    }
    ethernet eth1 {
        address 192.168.25.62/27
        hw-id 9c:a3:ba:30:7a:2a
    }
    loopback lo {
    }
}
nat {
    source {
        rule 110 {
            destination {
                address 192.168.25.32/27
            }
            outbound-interface eth1
            source {
                address 192.168.25.33
            }
            translation {
                address 192.168.25.65
            }
        }
    }
}

解説

RouterのNATの設定が足りないという問題

想定していた解放

  1. Router に static route を追加する
  • routerA : set protocols static route 192.168.25.64/27 next-hop 192.168.25.62
  • routerB : set protocols static route 192.168.25.0/27 next-hop 192.168.25.33
  1. RouterB の nat の設定を正しくする
  • routerB : set nat source rule 110 source address 192.168.25.94
  • routerB : set nat source rule 110 translation address 192.168.25.62
 /
カテゴリー

問題名

なんでつながらない!?

概要

なぜかつながらない。原因を究明してつながるようにしてほしい。

前提条件

  • static routesを書かないでください。
  • Router A, Bのサブネットを変更しないでください。
  • Router A, Bに新しくIPを追加しないでください。

初期状態

RouterAからRouterB(192.168.2.129)にpingが通らない

終了状態

RouterAからRouterB(192.168.2.129)にpingが通ること

問題環境

RouterA

[email protected]:~$ show conf
interfaces {
    ethernet eth0 {
        address 192.168.255.2/24
        hw-id 9c:a3:ba:30:f4:4f
    }
    ethernet eth1 {
        address 192.168.2.1/25
        hw-id 9c:a3:ba:30:8a:d2
        mtu 1400
    }
    loopback lo {
    }
}
protocols {
    ospf {
        area 0 {
            authentication plaintext-password
            network 192.168.2.0/25
        }
    }
    static {
        route 0.0.0.0/0 {
            next-hop 192.168.255.254 {
            }
        }
    }
}

RouterB

[email protected]:~$ show conf
interfaces {
    ethernet eth0 {
        address 192.168.2.2/25
        hw-id 9c:a3:ba:30:6b:5a
        ip {
        }
    }
    loopback lo {
        address 192.168.2.129/25
    }
}
protocols {
    ospf {
        area 0 {
            network 192.168.2.0/25
            network 192.168.2.128/25
        }
    }
}

解説

OSPF は MTU 長が違う機器同士だとネイバーになれない.
OSPF は認証プロトコルが違う

以上2点を解決する問題.

想定していた解法

  1. MTU を合わせる
    • パターン1
      • RouterA に ” set interfaces eth eth1 ip ospf mtu-ignore “
      • RouterB に ” set interfaces eth eth0 ip ospf mtu-ignore “
    • パターン2
      • RouterA に ” delete interfaces eth eth1 mtu ”
    • パターン3
      • RouterB に ” set interfaces eth eth0 mtu 1400 “
  2. パスワードを同じにする
    • パターン1
      • RouterA に ” delete protocols ospf area 0 authentication ”
    • パターン2
      • RouterB に ” set protocols ospf area 0 authentication plaintext-password “
 /
カテゴリー

概要

外部からウェブページへのアクセスを遮断したい A さんは、iptables の設定をしました。しかし A さんの設定ではウェブページへのアクセスは意図したとおりに遮断できていないようです。A さんに代わってアクセス制御の設定をしてください。

A さんは以下のコマンドで iptables の設定をしたと言っています。

iptables -A INPUT -p tcp --dport 80 -j DROP

また、~/app にウェブページを作成するのに使用したファイルがまとまっています。

前提条件

  • ~/app 以下のファイルを変更しても良いが、ファイルを削除したり移動したりしないこと。

初期状態

prob12-host にて自身の IP アドレスに curl を実行するとウェブページにアクセスできる ( 以下のように結果が出力される )。

[email protected]:~$ curl 192.168.12.1:8080
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>ICTSC-2021-WINTER</title>
</head>
<body>
<h1>Prob 12</h1>
<p>Please filter this page :)</p>
</body>
</html>

終了状態

  1. prob12-host にて curl を実行するとウェブページへのアクセスが iptables によって遮断される ( 以下のように結果が出力される )。
$ curl 192.168.12.1:8080
curl: (7) Failed to connect to 192.168.12.1 port 8080: Connection refused

この出力と同じようにConnection refusedとアクセスが遮断されていることがわかるようにすること。

  1. localhost を指定してアクセスした場合はアクセスできる。
$ curl localhost:8080
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>ICTSC-2021-WINTER</title>
</head>
<body>
<h1>Prob 12</h1>
<p>Please filter this page :)</p>
</body>
</html>

上記 1. 2. の状態が永続化されていること。

解説

初期状態で docker-compose.yaml はこのようになっています。

version: '3'
services:
  ictsc-web-app:
    image: ictsc-web-app:latest
    container_name: ictsc-web-app
    restart: always
    ports:
      - "8080:80"

8行目の ports ディレクティブでは IP アドレスを指定しない場合に 0.0.0.0 にポートがバインドされます。

よって以下のように ports ディレクティブを変更することで、iptables のルールを変更することなく問題を解決できます。

ports:
      - "127.0.0.1:8080:80"

別解

この問題では iptables のルール変更を禁止していないので、iptables のルールを変更することでも問題の解決が可能です。

/etc/iptables/rules.v4 に変更を加えます。

# -A INPUT -p tcp -m tcp --dport 80 -j DROP
-A INPUT -p tcp -m tcp --dport 8080 -j REJECT

ただしこの場合には終了条件からパケットを DROP ではなく、REJECT するルールを設定する必要があります。

 /
カテゴリー

概要

あなたはA社に勤めています。
A社では明日からVPNサーバーを用いたリモートワークの予定でしたが、構築を担当から連絡が入り、VPNサーバーが正常に動作していなかったことが発覚しました。
あなたは、明日からのリモートワークのため、VPNサーバーで起きているの問題を特定し解決してください。

前提条件

担当者から受け取った前提条件は以下のものでした。

  • 必要であれば192.168.3.17を踏み台としてのみ使用してもよい
  • VPNへ接続する際は192.168.3.2を接続先アドレスとする

初期状態

hostからvpnへ接続を行うことができない。

終了状態

hostからvpnへ正常に接続を行うことができる。

解説

この問題では SoftEther の VPN サーバの SecureNAT にて 192.168.3.0/29 を使用する設定となっており、VPN サーバのインターフェースに振られた IP アドレスのネットワークと重複していることが原因でトラブルが発生していました。

まず、SecureNAT で使用するネットワークの範囲を変更します。ここでは 192.168.33.0/29 を設定します。DNS などは任意の値で構いません。

VPN Server/DEFAULT> SecureNatHostSet /MAC:none /IP:192.168.33.2 /MASK:none
VPN Server/DEFAULT> DhcpSet /START:192.168.33.3 /END:192.168.33.5 /MASK:255.255.255.248 /GW:192.168.33.2 

DhcpGet コマンドで設定を確認します。

VPN Server/Default>DhcpGet
DhcpGet command - Get Virtual DHCP Server Function Setting of SecureNAT Function
Item                           |Value
-------------------------------+---------------
Use Virtual DHCP Function      |Yes
Start Distribution Address Band|192.168.33.3
End Distribution Address Band  |192.168.33.5
Subnet Mask                    |255.255.255.248
Lease Limit (Seconds)          |7200
Default Gateway Address        |192.168.33.2
DNS Server Address 1           |1.1.1.1
DNS Server Address 2           |1.0.0.1
Domain Name                    |
Save NAT and DHCP Operation Log|No
Static Routing Table to Push   |
The command completed successfully.

次に、上記の VPN サーバの変更を host にて反映します。

sudo systemctl restart vpnclient.service

設定が反映されているか vpncmd にて確認します。

VPN Client>AccountList
AccountList command - Get List of VPN Connection Settings
Item                        |Value
----------------------------+------------------------------------------
VPN Connection Setting Name |prob03
Status                      |Connected
VPN Server Hostname         |192.168.3.2:443 (Direct TCP/IP Connection)
Virtual Hub                 |DEFAULT
Virtual Network Adapter Name|DEFAULT
The command completed successfully.

最後に VPN サーバでも host の接続を確認します。

VPN Server/Default>SessionList
SessionList command - Get List of Connected Sessions
Item            |Value
----------------+-----------------
Session Name    |SID-SECURENAT-1
VLAN ID         |-
Location        |SecureNAT Session
User Name       |SecureNAT
Source Host Name|Virtual Host
TCP Connections |None
Transfer Bytes  |126,856
Transfer Packets|2,131
----------------+-----------------
Session Name    |SID-USER-3
VLAN ID         |-
Location        |Local Session
User Name       |user
Source Host Name|192.168.3.10
TCP Connections |2 / 2
Transfer Bytes  |46,414
Transfer Packets|702
The command completed successfully.

別解として、SecureNAT ではなくローカルブリッジで接続するような設定も正答としています。

ただし、踏み台となっている VyOS に DHCP の設定を加えるようなことは前提条件に反するので不正としています。