測試環境 Ubuntu 22.04.1
因為我的工作環境有兩個網段,其中 192.168.31.0/255.255.255.0 的 IP 透過 NAT( 192.168.31.133 ) Port Forwarding 轉出去.
目前有一台 Gitlab server (IP: 192.168.31.131 ) 放在 192.168.31.0 網段,關於 NAT Port Forwarding 或 DNAT ( Destination Network Address Translation) 請參考 – https://benjr.tw/103990
Gitlab Server IP:Port 192.168.31.131:80 NAT Port Forwarding 到 192.168.88.128:80 如下圖.
使用者透過 192.168.31.0 網段使用 GitLab 192.168.31.131 時都沒問題,但連線 192.168.88.128 時在編輯 wiki 時,卻發現無法插入附件,並會顯示 Server responded with 0 code
檢視 Gitlab 的訊息,可以看到以下兩個錯誤.
root@ben-virtual-machine:~# cat /var/log/gitlab/gitlab-rails/production.log Raven 3.1.2 configured not to capture errors: DSN not set [ActionDispatch::HostAuthorization::DefaultResponseApp] Blocked host: example.org
- DNS rebinding attacks
- Blocked host: example.org
上網查詢好像是這一類的錯誤.
HTTP Host header attacks – https://portswigger.net/web-security/host-header
Cross-Origin Resource Sharing (CORS) or cross domain error – https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple_requests
透過 Chrome 工具檢視錯誤為 dropzone.js:1371
上網查了半天說是 還是不知道要怎麼辦,目前只知道以下兩種方式來避免這個問題.
- 變更 external_url 為其他 IP
最後是把 external_url 改成 192.168.88.128root@ben-virtual-machine:~# vi /etc/gitlab/gitlab.rb external_url 'http://192.168.88.128'
重新配置運行(gitlab-ctl reconfigure )
root@ben-virtual-machine:~# gitlab-ctl reconfigure
但會變成透過 192.168.31.131 連 Gitlab 時無法插入附件.
- 變更 external_url 為 Hostname
這個要靠 DNS 或是 hosts (Windows : C:\Windows\System32\drivers\etc\hosts 檔案 ) 來幫忙解析.root@ben-virtual-machine:~# vi /etc/gitlab/gitlab.rb external_url 'http://Internal-Gitlab'
重新配置運行(gitlab-ctl reconfigure )
root@ben-virtual-machine:~# gitlab-ctl reconfigure
Gitlab 有一個關於 allowed_hosts 設定 – https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab ,但試過沒用.
root@ben-virtual-machine:~# /etc/gitlab/gitlab.rb gitlab_rails['allowed_hosts'] = ['gitlab.example.com']