systemd 유저 서비스에 하드코딩된 프록시 설정으로 인한 연결 문제 해결

문제 현상

어플리케이션 실행 중 아래와 같은 네트워크 오류가 발생:

Network error: [TypeError: fetch failed] { [cause]: ConnectTimeoutError: 
Connect Timeout Error (attempted address: 10.0.0.9:7897, timeout: 10000ms)

오류 메시지에서 특정 IP(10.0.0.9:7897)로의 접속 시도가 타임아웃되었음을 확인할 수 있으며, 이는 어플리케이션이 의도하지 않은 프록시를 사용하고 있음을 시사한다.

원인 분석

1. 쉘 환경 변수 점검

현재 세션의 환경 변수에 프록시 설정이 있는지 확인:

env | grep -i proxy

결과가 비어 있어, 현재 터미널 세션에서는 프록시가 설정되지 않음이 확인됨.

2. 프로세스 및 부모 프로세스 조사

문제 어플리케이션 프로세스 확인:

ps -ef | grep openclaw | grep -v grep

출력 예시:

user       9249    1249  0 18:36 ?        00:00:00 openclaw
user       9256    9249  0 18:36 ?        00:00:37 openclaw-gateway

PID 9249의 환경 변수를 확인:

cat /proc/9249/environ | tr '\0' '\n' | grep -i proxy

다음과 같은 항목이 존재함을 확인:

HTTP_PROXY=http://10.0.0.9:7897/
HTTPS_PROXY=http://10.0.0.9:7897/
ALL_PROXY=socks://10.0.0.9:7897/
http_proxy=http://10.0.0.9:7897/
https_proxy=http://10.0.0.9:7897/

이는 쉘 레벨이 아닌 다른 계층에서 프록시가 주입되었음을 의미.

3. 부모 프로세스 추적

PID 1249의 정보 조회:

ps -fp 1249

출력 결과:

UID          PID    PPID  C STIME TTY          TIME CMD
user        1249       1  0 18:18 ?        00:00:00 /usr/lib/systemd/systemd --user

이로부터 openclaw 프로세스가 유저 수준 systemd에 의해 관리되고 있음이 확인됨.

4. 유저 서비스 상태 점검

유저 서비스 목록에서 관련 항목 검색:

systemctl --user list-units --type=service | grep -i openclaw

출력:

openclaw-gateway.service                                         loaded active running OpenClaw Gateway (v2026.3.13)

또한 다음 명령어로 프록시 관련 설정 위치 탐색:

grep -RniE 'proxy|10\.0\.0\.9|7897' \
  ~/.config/systemd/user /etc/systemd/user /usr/lib/systemd/user \
  ~/.config/environment.d /etc/environment /etc/profile.d ~/.pam_environment \
  2>/dev/null

결과에서 다음과 같은 파일 내부에 프록시 설정이 하드코딩되어 있음이 발견됨:

~/.config/systemd/user/openclaw-gateway.service

해당 파일의 일부 내용:

[Service]
...
Environment=HTTP_PROXY=http://10.0.0.9:7897/
Environment=HTTPS_PROXY=http://10.0.0.9:7897/
Environment=ALL_PROXY=socks://10.0.0.9:7897/
Environment=http_proxy=http://10.0.0.9:7897/
Environment=https_proxy=http://10.0.0.9:7897/
...

이러한 Environment= 지시어는 systemd 유저 서비스 정의 내부에 직접 포함되어 있으며, 재시작 시마다 자동으로 로드되므로 문제가 지속됨.

해결 방안

1. 서비스 파일 수정

문제의 환경 변수 선언 제거 또는 주석 처리:

vim ~/.config/systemd/user/openclaw-gateway.service

다음 줄들을 삭제 또는 주석 처리:

#Environment=HTTP_PROXY=http://10.0.0.9:7897/
#Environment=HTTPS_PROXY=http://10.0.0.9:7897/
#Environment=ALL_PROXY=socks://10.0.0.9:7897/
#Environment=http_proxy=http://10.0.0.9:7897/
#Environment=https_proxy=http://10.0.0.9:7897/

필요 시 로컬 주소는 프록시를 거치지 않도록 NO_PROXY만 유지 가능:

Environment=NO_PROXY=localhost,127.0.0.1,::1

2. 데몬 리로드 및 서비스 재시작

변경 사항 적용:

systemctl --user daemon-reload
systemctl --user restart openclaw-gateway

3. 심볼릭 링크 점검

다음 경로에 심볼릭 링크 존재 여부 확인:

ls -l ~/.config/systemd/user/default.target.wants/openclaw-gateway.service

일반적으로 원본 파일을 가리키는 링크이므로 별도 수정 불필요. 단, 독립된 파일 복사본일 경우 동일하게 수정 필요.

4. 백업 파일 처리

.bak 확장자 파일은 systemd에 의해 자동 로드되지 않으므로 안전하게 삭제 가능:

rm ~/.config/systemd/user/openclaw-gateway.service.bak

5. 최종 검증

프로세스 재시작 후 환경 변수 재확인:

cat /proc/$(pgrep -f openclaw-gateway | head -n1)/environ | tr '\0' '\n' | grep -i proxy

정상적으로 수정 완료 시 출력 없음 (또는 NO_PROXY만 존재)해야 함.

6. 게이트웨이 재시작 (옵션)

추가적으로 플러그인 자체의 재시작 명령어 실행 가능:

openclaw gateway restart

태그: systemd user-service environment-variables proxy-configuration network-troubleshooting

6월 30일 02:52에 게시됨