RHEL 6 서버에서 Jenkins를 실행하려고 합니다. Jenkins가 설치되었지만 방화벽 규칙으로 인해 액세스할 수 없습니다. iptables 를 중지하면 service iptables stop
브라우저에서 포트 8080을 통해 Jenkins에 액세스할 수 있습니다. 서비스를 다시 시작한 후 액세스할 수 없었습니다.
포트 8080의 트래픽을 허용하기 위해 iptables에 규칙을 추가하는 다양한 방법을 시도했지만 소용이 없었습니다.
iptables -L -n
다음은 INPUT 섹션의 첫 번째 줄에 있는 Jenkins/port 8080 규칙의 현재 출력입니다.
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 8
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
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:25
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:25
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:53
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp spt:53
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:5353
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:5353
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:5353
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp spt:5353
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 spt: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 spt:443
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:123
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:161
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:161
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:389
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:389
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:636
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:636
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:8140
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:8140
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:111
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:111
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:111
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp spt:111
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:2049
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:2049
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp spt:2049
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:2049
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:4046
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:4046
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:4046
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp spt:4046
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:4045
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:4045
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:4047
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:4047
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:4049
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:514
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:514
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:717
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:717
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:6000
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:6000
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:2435
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:2435
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:4526
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:4526
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:2659
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:2659
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:1521
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:1521
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 0
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 8
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:22
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:25
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:25
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:53
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp spt:53
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:5353
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:5353
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp spt:5353
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:5353
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:80
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 spt:443
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp spt:123
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp spt:161
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:161
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:389
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:389
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:636
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:636
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:8140
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:8140
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:111
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:111
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp spt:111
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:111
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp spt:2049
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:2049
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:2049
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:2049
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:4046
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:4046
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp spt:4046
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:4046
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp spt:4045
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:4045
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp spt:4047
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:4047
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp spt:4049
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:514
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:514
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:6000
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:6000
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:717
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:717
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:2435
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:2435
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:4526
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:4526
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:2659
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:2659
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:1521
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:1521
답변1
Gazareth, iptables INPUT 대기열 규칙 외에도 OUTPUT 대기열 규칙도 구성했으며 8080/TCP 포트가 OUTPUT 대기열에서 허용/구성되지 않은 것을 발견했다면.
당신이 추가한 대로:
iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
또한 다음을 추가해야 합니다.
iptables -I OUTPUT -p tcp --sport 8080 -j ACCEPT
iptables는 상태 저장 방화벽 규칙을 유지할 수 있으므로 두 개의 서로 다른 대기열을 유지하는 것 외에도 다음을 수행할 수도 있습니다.
iptables -I INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
이 작업을 수동으로 수행할 때는 -I를 사용하여 규칙을 대기열의 맨 위에 배치하는 반면, 배치 파일에서 이 작업을 수행할 때는 일반적으로 iptables -A를 수행합니다.
답변2
기본 Jenkins 설치는 포트 8080 및 8443에서 실행됩니다. 일반적으로 HTTP/HTTPS 서버는 각각 포트 80과 443에서 실행됩니다. 그러나 이러한 포트는 Unix/Linux 시스템에서 권한 있는 포트로 간주되며 이를 사용하는 프로세스는 루트가 소유해야 합니다. Jenkins를 루트로 실행하는 것은 권장되지 않습니다. 자체 사용자로 실행해야 합니다.
따라서 포트 80/443의 트래픽을 8080/8443으로 전달해야 합니다. iptables가 4개 포트 모두에서 트래픽을 허용하는지 확인해야 합니다.
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8443
iptables -저장 > /etc/sysconfig/iptables
또는,
iptables -t nat -A 사전 설정 -i eth0 -p tcp --dport 80 -j DNAT --대상 127.0.0.1:8080