다소 개방적인 질문이 될까봐 두렵지만, 이 문제에 대해 몇 주를 소비했지만 아무 소용이 없었기 때문에 여기에 질문해야 할 것 같습니다. 제가 시도한 것을 추가하고 범위를 좁힐 수 있기를 바랍니다.
저는 데스크탑에서 Arch Linux를 실행하고 있으며 로컬 네트워크에 서비스를 제공하기 위해 웹 서버를 실행하고 싶습니다. 몇 가지 일반적인 웹 서비스를 시도했지만 아무것도 작동하지 않습니다.
SSH가 작동합니다. 포트 22에서 들어오는 연결을 허용하는 규칙을 추가하고 sshd 서비스를 시작했는데 안정적으로 작동했습니다. 디버깅을 위해 원격 호스트에 대한 연결을 비활성화하는 포트 22를 닫았으므로 방화벽이 확실히 작동하고 있습니다. 현재 방화벽 구성은 다음과 같습니다.
sudo iptables -nL
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:3838
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:4999
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:2121
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
DROP all -- 0.0.0.0/0 0.0.0.0/0 ctstate INVALID
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmptype 8 ctstate NEW
UDP udp -- 0.0.0.0/0 0.0.0.0/0 ctstate NEW
TCP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:0x17/0x02 ctstate NEW
REJECT udp -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
REJECT tcp -- 0.0.0.0/0 0.0.0.0/0 reject-with tcp-reset
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-proto-unreachable
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain TCP (1 references)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:3838
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:4999
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
Chain UDP (1 references)
target prot opt source destination
내 네트워크 장치 구성은 다음과 같습니다.
ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp3s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether e0:d5:5e:23:ee:3f brd ff:ff:ff:ff:ff:ff
3: enp0s31f6: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
link/ether e0:d5:5e:23:ee:3d brd ff:ff:ff:ff:ff:ff
4: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 9c:b6:d0:1d:f7:97 brd ff:ff:ff:ff:ff:ff
inet 192.168.30.123/24 brd 192.168.30.255 scope global dynamic noprefixroute wlp2s0
valid_lft 406681sec preferred_lft 406681sec
inet6 fe80::5dfe:2375:7e24:d383/64 scope link noprefixroute
valid_lft forever preferred_lft forever
그런 다음 이 구성으로 nginx를 시작했습니다(발췌)(다른 웹서버를 사용해 보았습니다. 특별한 것을 시도하고 싶다면 댓글을 달아주세요).
/etc/nginx/nginx.conf
server {
listen 80;
server_name 0.0.0.0;
server_name 192.168.30.123;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
ss -tulnp
이것을 보여주세요:
NetidState Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 192.168.30.123%wlp2s0:68 0.0.0.0:*
udp UNCONN 0 0 192.168.30.123:123 0.0.0.0:*
udp UNCONN 0 0 127.0.0.1:123 0.0.0.0:*
udp UNCONN 0 0 0.0.0.0:123 0.0.0.0:*
udp UNCONN 0 0 [fe80::5dfe:2375:7e24:d383]%wlp2s0:123 [::]:*
udp UNCONN 0 0 [::1]:123 [::]:*
udp UNCONN 0 0 [::]:123 [::]:*
tcp LISTEN 0 128 0.0.0.0:80 0.0.0.0:*
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
tcp LISTEN 0 5 127.0.0.1:631 0.0.0.0:*
tcp LISTEN 0 128 127.0.0.1:4999 0.0.0.0:* users:(("R",pid=13147,fd=10))
tcp LISTEN 0 128 [::]:22 [::]:*
tcp LISTEN 0 5 [::1]:631 [::]:*
tcp LISTEN 0 128 *:3838 *:*
그래서 나에게는 포트가 열려 있고 무언가가 포트를 듣고 있는 것처럼 보입니다. 샘플 페이지는 localhost에 제공되지만 LAN에서는 제공되지 않습니다. 동일한 무선 LAN의 랩톱에 유사한 서버가 설정되어 있고 전체 LAN(문제의 컴퓨터 포함)을 제공하므로 이는 네트워크 자체가 괜찮다는 것을 의미한다고 가정합니다. 또한 tcpdump를 사용하여 테스트했습니다(즉, tcpdump가 문제의 컴퓨터에서 실행되었습니다).
sudo tcpdump port 80
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on wlp2s0, link-type EN10MB (Ethernet), capture size 262144 bytes
16:22:56.156589 IP 192.168.30.132.51764 > s-l.http: Flags [S], seq 1909655952, win 29200, options [mss 1460,sackOK,TS val 4135754645 ecr 0,nop,wscale 7], length 0
16:22:58.717288 IP 192.168.30.132.51766 > s-l.http: Flags [S], seq 16903 94439, win 29200, options [mss 1460,sackOK,TS val 4135757197 ecr 0,nop,wscale 7], length 0
16:23:00.183474 IP 192.168.30.132.51768 > s-l.http: Flags [S], seq 872524670, win 29200, options [mss 1460,sackOK,TS val 4135758723 ecr 0,nop,wscale 7], length 0
16:23:00.970190 IP 192.168.30.132.51770 > s-l.http: Flags [S], seq 3470413477, win 29200, options [mss 1460,sackOK,TS val 4135759430 ecr 0,nop,wscale 7], length 0
내 노트북에서는 4번의 새로 고침이 이루어졌습니다. 패키지가 도착한 것 같은데 응답이 없기 때문에 정말 실망스럽습니다.
편집: Shiny를 시도했지만 runApp(".", host="0.0.0.0" , port=4999)
여전히 localhost만 제공합니다. 그러나 여전히 nginx를 설명하지 않습니다. (이것은 다른 웹 서버용입니다.)
답변1
Shiny에 대한 경험은 없지만 네트워크 인터페이스의 실제 주소에 바인딩해 보셨나요? 와 함께하세요 ifconfig -a
.
당신은 이미 다음과 같은 것을 시도했습니다.
runApp(".", host="0.0.0.0" , port=4999)
하지만 다음과 같이 시도해 보세요.
runApp(".", host="<if_ip>” , port=3838)
또한 포트 4999는 위 구성에서 해당 포트를 열지 않았기 때문에 작동하지 않습니다 iptables
.