Samba DC
まだ検証途中
●●●=利用環境のグローバルIPアドレス
・ufw
ufw allow from ●●● to any port 9922,3306,53,88,135,139,389,445,464,636,3268,3269,49152:49252 proto tcp
ufw allow from ●●● to any port 53,88,123,137:138,389,464 proto udp
・フォルダ作成
cd /home
mkdir samba
cd samba
mkdir data
mkdir config
chmod 700 data
chmod 700 config
Docker
▲▲▲=Administratorのパスワード
◯◯◯=VPSのIPアドレス
△△△=ドメイン名
vim docker-compose.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
services: samba: image: nowsci/samba-domain:latest privileged: true container_name: samba-dc environment: - DOMAIN=△△△ - DOMAINPASS=▲▲▲ - DNSFORWARDER=8.8.8.8 - HOSTIP=◯◯◯ volumes: - /home/samba/data:/var/lib/samba - /home/samba/config:/etc/samba/external ports: - "53:53" - "53:53/udp" - "88:88" - "88:88/udp" - "123:123/udp" - "135:135" - "137-138:137-138/udp" - "139:139" - "389:389" - "389:389/udp" - "445:445" - "464:464" - "464:464/udp" - "636:636" - "3268-3269:3268-3269" - "49152-49252:49152-49252" hostname: samba-dc restart: always cap_add: - NET_ADMIN - SYS_TIME |
・もし再実行で既にコンテナがあるようだったら
docker ps -a
docker compose down
※カレントディレクトリにdocker-compose.ymlがある状態で実行
・通常終了しない場合
docker ps -a
docker rm -f コンテナID
・バインドボリューム削除
rm -rf ./data/* && rm -rf ./config/*
※再起動の場合
docker restart samba-dc
※一時停止の場合
docker pause samba-dc
docker unpause samba-dc
・起動
docker compose up -d
※カレントディレクトリにdocker-compose.ymlがある状態で実行
※dはバックグランド実行
・停止
※もし自動で再起動を繰り返している場合止める
docker stop samba-dc
・初回のみエラー
53ポートが使用中とのことでエラー。
lsof -i :53
vim /etc/systemd/resolved.conf
DNSStubListener
>no
に変更する。
systemctl restart systemd-resolved
SambaRPCポート変更
※直接変更する方法
docker exec -it samba-dc vi /etc/samba/smb.conf
rpc server dynamic port range = 49152-49172
を
rpc server dynamic port range = 49152-49252
に変更。
docker exec -it samba-dc supervisorctl restart samba
※ポートが多すぎるコンテナ生成で失敗する。(タイムアウトしてしまう)
ポートが少なすぎるとADの同期で問題が発生する。
コンテナエラー確認
・ログ確認
docker logs –tail 100 samba-dc
・Samba内のログ
一覧
docker exec -it samba-dc bash -c “cd /var/log/samba && ls -l”
開く
docker exec -it samba-dc bash -c “vi /var/log/samba/log.smbd”
NTP変更
docker logs samba-dc | grep ntp
でntp系のエラー確認
・ntpサーバー確認
docker exec -it samba-dc ntpq -p
現在のntpサーバー(*)を確認しping
docker exec -it samba-dc sntp xxx.xxx.xxx.xxx
/etc/ntp.conf or /etc/ntpd.conf
使用されている方の調べ方(ps aux | grep ntpd)
を編集する。
docker exec -it samba-dc vi /etc/ntpd.conf
server ntp.nict.jp iburst prefer
を追加し、
ntpsigndsocket /usr/local/samba/var/lib/ntp_signd/
を
ntpsigndsocket /var/lib/samba/ntp_signd/
に変更する
docker exec -it samba-dc supervisorctl restart ntpd
・一応確認
アクセス権限
cd /var/lib/ && ls -la
chown ntp:ntp /var/lib/ntp
chmod 755 /var/lib/ntp
になっていればOK。
ntpユーザがいるかどうか
id ntp
SambaTool(DNS逆引き)
VPSアドレス[AAA.BBB.CCC.DDD]
から
samba-dc.sk-tech.local
を取得する方法
docker exec -it samba-dc samba-tool dns zonecreate samba-dc CCC.BBB.AAA.in-addr.arpa –username=administrator –password=xxx
docker exec -it samba-dc samba-tool dns add samba-dc CCC.BBB.AAA.in-addr.arpa DDD PTR samba-dc.xxx.local –username=administrator –password=xxx
docker exec -it samba-dc supervisorctl restart samba
Windowクライアント設定
ncpa.cpl
利用しているNICのDNSをVPSのIPアドレスにする。
sysdm.cpl
コンピュータ名タブ>変更
ドメインを選択しドメイン名を入力する。
ユーザーはadministrator
パスワードはdocker-compose
で指定したパスワードを入力する。
再起動したらログイン画面で
ドメイン名\administrator
のように入力しログインできる。初回ログイン時はかなり時間がかかる。
※アカウントもADに参加しないと以下コマンドは使えないが、このタイミングでローカルorMSアカウントを入力して、端末だけAD参加という状態も可能。
・Windows RSAT 有効化(ユーザー参加必須)
システム>オプション機能>機能表示>使用可能な機能を表示する
RSAT: ActiveDirectoryDomainServices およびライトウェイトディレクトリサービスツール
をチェックし追加すると、
Active Directory サイトとサービス
Active Directory ドメインと信頼関係
Active Directory ユーザーとコンピュータ
Active Directory 管理センター(Samba-DCでは利用不可)
が有効化される。
RSAT: グループポリシー管理ツール
をチェックし追加すると、
gpmc.msc
が有効化される。
・DNSが問題ないか確認する。
nslookup ドメイン
これでVPSのIPアドレスが返ってくればOK。
nslookup VPSのIPアドレス
これでドメイン名が返ってくればOK。
・接続状況(信頼関係)確認※管理者
nltest /sc_verify:ドメイン名
nltest /dsgetdc:ドメイン名
・時刻関係※管理者
w32tm /config /syncfromflags:domhier /update
※DCから取得に変更
w32tm /query /status
ソースを確認
w32tm /resync
同期実行
・gpupdate
エラーが発生した場合
eventvwr>アプリケーションとサービスログ>Microsoft>Windows>GroupPolicy
で確認する。
メモ:コンテナエントリポイントを調べて
スクリプトを追加する方法
※この方法だとinit.sh後の処理ができないので不採用。
・エントリポイントのスクリプトを調べる
docker exec -it samba-dc bash
cat /proc/1/cmdline
・作成
vim setup.sh
#!/bin/sh
sed -i ‘s|xxx|xxx|’ /etc/samba/smb.conf
sed -i ‘s|xxx|xxx|’ /etc/ntpd.conf
docker-composeで呼び出す。
volumes:
– ./setup.sh:/setup.sh
command: sh -c “/setup.sh && exec /init.sh”
メモ:シンボリックリンク
バインドしているexternalに保存
上記と同じように、エントリスクリプト内でcpできないエラーになる。
#!/bin/sh
ln -sf /etc/samba/external/smb.conf /etc/samba/smb.conf
ln -sf /etc/samba/external/ntpd.conf /etc/ntpd.conf
※lnコマンド
ln -sf [実体] [リンク]
ls -laの見え方
ntpd.conf(リンク) -> /etc/samba/external/my_ntpd.conf(実体)
メモ:Docker Network
docker network ls
・基本
xxx bridge bridge local
xxx host host local
xxx none null local
・削除方法
docker network rm samba_default
・種類
bridge
host:portsの設定は意味ない
macvlan:VPSだと難しい
メモ:SambaTool(DNSレコード)
・DBチェック
docker exec -it samba-dc samba-tool dbcheck –cross-ncs –fix –username=administrator –password=xxx
・ADに登録されている端末取得
docker exec -it samba-dc samba-tool computer list
docker exec -it samba-dc samba-tool computer show xxx
・ADに登録されているユーザー取得
docker exec -it samba-dc samba-tool user list
・ゾーン一覧取得
docker exec -it samba-dc samba-tool dns zonelist localhost –username=administrator –password=xxx
xxx.localと_msdcs.xxxlocalが返ってくる。
・xxx.localのレコード一覧取得
docker exec -it samba-dc samba-tool dns query localhost xxx.local @ ALL –username=administrator –password=xxx
・_msdcs.xxx.localのレコード一覧取得
docker exec -it samba-dc samba-tool dns query localhost _msdcs.xxx.local @ ALL –username=administrator –password=xxx
・下位レコード取得
docker exec -it samba-dc samba-tool dns query localhost _msdcs.xxx.local gc ALL –username=administrator –password=xxx
・Aレコード削除
docker exec samba-dc samba-tool dns delete localhost xxx.local samba-dc A 172.19.0.2 -UAdministrator%xxx
・Aレコード登録
docker exec samba-dc samba-tool dns add localhost xxx.local samba-dc A サーバーIPアドレス -UAdministrator%xxx
メモ:アクセス制御リスト(ACL)
docker exec -it samba-dc samba-tool ntacl sysvolreset –username=administrator –password=xxx
docker exec -it samba-dc samba-tool ntacl sysvolcheck –username=administrator –password=xxx
docker exec -it samba-dc supervisorctl restart samba