あなたの集合的な脳力が私を助けることを願っています...
tl; dr-Ubuntuサーバーはいくつかのポートを開いているようです。外部(LAN)の世界からは何も見えません-WTFが進行中ですか?
より長いです:
VNCを使用して接続したいヘッドレス17.04サーバーがありますが、現在苦労しています。私は2つのクライアントを使用しています-両方ともWindows 10、1つはRealVNC、もう1つはTightVNCを使用しています。
UbuntuマシンにTightVNCサーバーをセットアップしました。ほとんどの手順は https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-vnc-on-ubuntu -16-04 、Xfceをデスクトップとして実行する予定:
$ Sudo apt install xfce4 xfce4-goodies tightvncserver
Xstartupファイルを次のように変更しました。
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &
そして、実行可能な特権を付与しました。
tightvncserver
を使用してサーバーを起動すると、次の結果が得られます。
New 'X' desktop is numbersix:1
Starting applications specified in /home/adam/.vnc/xstartup
Log file is /home/adam/.vnc/numbersix:1.log
nmap localhost
の結果:
Starting Nmap 7.40 ( https://nmap.org ) at 2017-11-09 21:05 GMT
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000076s latency).
Other addresses for localhost (not scanned): ::1
Not shown: 986 closed ports
PORT STATE SERVICE
22/tcp open ssh
53/tcp open domain
80/tcp open http
111/tcp open rpcbind
139/tcp open netbios-ssn
445/tcp open Microsoft-ds
631/tcp open ipp
5901/tcp open vnc-1
6001/tcp open X11:1
8000/tcp open http-alt
8001/tcp open vcom-tunnel
8010/tcp open xmpp
8080/tcp open http-proxy
9091/tcp open xmltec-xmlmail
nmap 192.168.1.6
は同じ結果になります。
サーバーをsystemdサービスとして設定します-このコンテンツで/etc/systemd/system/[email protected]
を作成しました:
[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target
[Service]
Type=forking
User=adam
PAMName=login
PIDFile=/home/adam/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :%i
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
その後、サービスを開始しました
$ Sudo systemctl daemon-reload
$ Sudo systemctl enable [email protected]
$ Sudo systemctl start vncserver@1
すべてが機能しているようです。 Sudo systemctl status vncserver@1
の結果:
● [email protected] - Start TightVNC server at startup
Loaded: loaded (/etc/systemd/system/[email protected]; enabled; vendor preset: enabled)
Active: active (running) since Thu 2017-11-09 21:38:13 GMT; 6s ago
Process: 3924 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :1 (code=exited, status=0/SUCCESS)
Process: 3916 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=2)
Main PID: 3937 (Xtightvnc)
Tasks: 0 (limit: 4915)
CGroup: /system.slice/system-vncserver.slice/[email protected]
‣ 3937 Xtightvnc :1 -desktop X -auth /home/adam/.Xauthority -geometry
1280x800 -depth 24 -rfbwait 120000 -rfbauth /h
Nov 09 21:38:12 numbersix systemd[1]: Starting Start TightVNC server at startup...
Nov 09 21:38:12 numbersix systemd[3916]: pam_unix(login:session): session opened for user adam by (uid=0)
Nov 09 21:38:12 numbersix systemd[3924]: pam_unix(login:session): session opened for user adam by (uid=0)
Nov 09 21:38:13 numbersix systemd[1]: Started Start TightVNC server at startup.
telnet localhost 5901
は正常に接続しているようです:
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
RFB 003.008
そしてSudo netstat -nlpt | grep :59
は以下を与えます:
tcp 0 0 0.0.0.0:5901 0.0.0.0:* LISTEN 3937/Xtightvnc
ただし、telnet numbersix 5901
およびtelnet 192.168.1.6
(Windowsから)は次のように失敗します。
Could not open connection to the Host, on port 5901: Connect failed
また、RealVNCもTightVNCも接続しません(ホスト名またはIPを使用)。 Pingは、IPまたはホスト名を持つ両方のWindowsホストで機能します。また、Ubuntuラップトップから接続できませんでした。繰り返しますが、pingを実行できます。問題なくsshできます。 UbuntuラップトップのSudo nmap numbersix
は以下を提供します。
Starting Nmap 7.01 ( https://nmap.org ) at 2017-11-10 12:50 GMT
Nmap scan report for numbersix (192.168.1.6)
Host is up (0.0032s latency).
Not shown: 997 filtered ports
PORT STATE SERVICE
22/tcp open ssh
8000/tcp open http-alt
8001/tcp open vcom-tunnel
MAC Address: 60:45:CB:64:2B:C8 (Unknown)
Nmap done: 1 IP address (1 Host up) scanned in 12.85 seconds
サーバー上のSudo iptables -L
からのINPUT、FORWARD、およびOUTPUTチェーンは次のとおりです。
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT udp -- anywhere anywhere udp dpt:domain
ACCEPT tcp -- anywhere anywhere tcp dpt:domain
ACCEPT udp -- anywhere anywhere udp dpt:bootps
ACCEPT tcp -- anywhere anywhere tcp dpt:bootps
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
ACCEPT all -- anywhere anywhere
INPUT_direct all -- anywhere anywhere
INPUT_ZONES_SOURCE all -- anywhere anywhere
INPUT_ZONES all -- anywhere anywhere
DROP all -- anywhere anywhere ctstate INVALID
REJECT all -- anywhere anywhere reject-with icmp-Host-prohibited
Chain FORWARD (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere 192.168.122.0/24 ctstate RELATED,ESTABLISHED
ACCEPT all -- 192.168.122.0/24 anywhere
ACCEPT all -- anywhere anywhere
REJECT all -- anywhere anywhere reject-with icmp-port-unreachable
REJECT all -- anywhere anywhere reject-with icmp-port-unreachable
DOCKER-USER all -- anywhere anywhere
DOCKER-ISOLATION all -- anywhere anywhere
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
DOCKER all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
ACCEPT all -- anywhere anywhere
FORWARD_direct all -- anywhere anywhere
FORWARD_IN_ZONES_SOURCE all -- anywhere anywhere
FORWARD_IN_ZONES all -- anywhere anywhere
FORWARD_OUT_ZONES_SOURCE all -- anywhere anywhere
FORWARD_OUT_ZONES all -- anywhere anywhere
DROP all -- anywhere anywhere ctstate INVALID
REJECT all -- anywhere anywhere reject-with icmp-Host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT udp -- anywhere anywhere udp dpt:bootpc
OUTPUT_direct all -- anywhere anywhere
だから、iptablesが何もブロックしていないことを示唆していると思う...
誰かが問題の診断を手伝ってくれますか?
答えは、iptablesの理解に失敗したこと、特にSudo iptables -L
からの出力が意味するものにありました...
代わりにSudo iptables -S
を実行すると、各ルールのより詳細な説明が表示されましたが、5901(または他のポートのいずれかでtcpトラフィックを許可する適切なINPUTルールがないことが明らかでした)を見ていた。次に、ルールに一致しないすべてのものを本質的に拒否する最後のINPUTルールは、このトラフィックを収集して拒否していました。私が考えていたルールは、lo
インターフェイス(ループバック)にのみ適用されるトラフィックを受け入れることでした。
これを実行しました:Sudo iptables -I INPUT 7 -s 192.168.1.0/24 -i enp37s0 -j ACCEPT
これは基本的に、INPUTチェーンの7行目にルールを挿入し、イーサネットポートに到着する192.168.1.0/24サブネットからのトラフィックを受け入れるように指示することです。
次の課題は、iptables-persistentを再起動時に実際に動作させることです!!