IP 전달을 허용하도록 UFW를 구성하는 방법은 무엇입니까?


18

홈 서버에 UFW, OpenVPN 및 Virtualbox가 설치되어 있습니다. IP 범위 10.0.1.0으로 설정된 가상 머신 게스트 (vboxnet0)에 대한 호스트 전용 네트워크가 있으며 OpenVPN 연결의 다른 쪽 끝에는 다른 IP 범위 10.0.0.0이 구성되어 있습니다.

IP 전달은 호스트에서 구성되므로 UFW가 비활성화 되면 문제없이 서로 통신 할 수 있습니다. 그러나이 호스트는 웹 액세스 가능하며 액세스 제어가 필요하므로 UFW를 실행하고 싶습니다.

이런 종류의 트래픽을 허용하도록 UFW를 구성하려면 어떻게해야합니까?

나는 ufw allow allow in|out on vboxnet0|tun0성공하지 못한 다양한 조합을 시도했습니다 .

내 UFW 규칙은 다음과 같습니다.

root@gimli:~# ufw status
Status: active

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere
Anywhere                   ALLOW       10.0.0.0/16
Anywhere on vboxnet0       ALLOW       Anywhere
Anywhere on tun0           ALLOW       Anywhere

Anywhere                   ALLOW OUT   Anywhere on vboxnet0
Anywhere                   ALLOW OUT   Anywhere on tun0

도움을 주시면 감사하겠습니다.

답변:


20

나는 그것을 알아.

편집 /etc/default/ufw및 집합 DEFAULT_FORWARD_POLICY하는 수락 :

DEFAULT_FORWARD_POLICY="ACCEPT"

10
특정 포트만 전달하도록 허용하고 모든 것을 수락하도록 설정하지 않는 방법이 있습니까?
Marcus Downing

1
파일을 편집 한 후 ufw를 다시 시작해야한다고 생각합니다.service ufw restart
Minh Danh

10

ufw 매뉴얼 페이지에서 가능합니다 :

호스트 자체가 아닌 방화벽을 통해 라우팅 / 전달되어야하는 트래픽에 대한 규칙은 규칙 앞에 route 키워드를 지정해야합니다 (라우팅 규칙은 PF 구문과 크게 다르며 대신 netfilter FORWARD 체인 규칙을 고려하십시오) . 예를 들면 다음과 같습니다.

     ufw route allow in on eth1 out on eth2

이렇게하면 eth2로 라우팅되고 eth1으로 들어오는 모든 트래픽이 방화벽을 통과 할 수 있습니다.

     ufw route allow in on eth0 out on eth1 to 12.34.45.67 port 80 proto tcp

이 규칙은 eth0에 들어오는 모든 패킷이 eth1의 방화벽을 12.34.45.67의 tcp 포트 80으로 통과하도록 허용합니다.

라우팅 규칙 및 정책 외에도 IP 전달도 설정해야합니다. 이것은 /etc/ufw/sysctl.conf에서 다음을 설정하여 수행 할 수 있습니다.

     net/ipv4/ip_forward=1
     net/ipv6/conf/default/forwarding=1
     net/ipv6/conf/all/forwarding=1

그런 다음 방화벽을 다시 시작하십시오.

     ufw disable
     ufw enable

커널 튜너 블 설정은 운영 체제별로 다르며 ufw sysctl 설정이 무시 될 수 있습니다. 자세한 내용은 sysctl 매뉴얼 페이지를 참조하십시오.


1
OpenVPN 서버에서 OpenVPN 클라이언트 간의 TCP 트래픽을 허용하려는 사람들에게는 이것이 작동합니다. 예 : ufw route allow in tun0 out on tun0
logion

레코드 ufw route는 0.34 이후 버전에 존재합니다
Joril

7

/ etc / default / ufw에서 DEFAULT_FORWARD_POLICY를 ACCEPT로 설정하면 방화벽은 사용자 인터페이스 설정에 관계없이 모든 패킷을 전달합니다.

사용자 인터페이스는 단순한 입 / 출력 필터링만을위한 것이라고 생각합니다. 전달하려면 다음과 같이 /etc/ufw/before.rules에 iptables 규칙을 추가해야합니다.

-A ufw-before-forward -i eth1 -p tcp -d 192.168.1.11 --dport 22 -j ACCEPT

내부 및 외부 연결을 허용하고 관련 및 설정된 TCP 세션의 패킷을 다시 허용하는 규칙이 이미있을 수 있습니다.

나는 iptables 전문가가 아니며 이것을 알아내는 데 오랜 시간이 걸렸습니다 (ip6tables와 비슷하지만 비슷해야 함). 어쩌면 이것이 당신의 경우에 필요한 것은 아닙니다.

최고의 인사


4

이 ufw 명령은 나에게 잘 작동했습니다. sudo ufw default allow FORWARD

변경 사항이 적용되었는지 확인하십시오. sudo service ufw restart


"잘못된 구문"오류가 발생합니다. 문서에 "DIRECTION은 수신, 발신 또는 라우팅 중 하나입니다"라고 말합니다.
ColinM

@ ColinM 이것은 Xubuntu 16.04.5 LTS에서 나를 위해 일했습니다
baptx

FORWARDroutedUbuntu의 별칭처럼 작동
patricktokeeffe
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.