iptables 및 firejail 샌드 박스를 사용한 포트 포워딩

니캅

Firejail 샌드 박스의 포트 8000에서 HTTP 서버를 실행하고 포트 8888에서 호스트의 모든 인터페이스에 액세스 할 수 있도록합니다.

전체 시스템은 다음과 같이 나타낼 수 있습니다.

+----------------------------------------------------+                                       +-------------+
|                      host-112                      |                                       |  host-238   |
|                                                    |               +-------+               |             |
| +--------------------------+              +-----+  | 192.168.1.112 |       | 192.168.1.238 |   +----+    |
| |       firejail           |              |wlan0+------------------+  NAT  +-------------------+eth0|    |
| |                          |              +-----+  |               |       |               |   +----+    |
| |                          |                       |               +-------+               |             |
| |        +----+   10.0.1.2 |   10.0.1.1  +------+  |                                       |             |
| |        |eth0+--------------------------+my_br0|  |                                       |             |
| |        +----+            |             +------+  |                                       |             |
| |                          |                       |                                       |             |
| |                          |                       |                                       |             |
| |      HTTP server <---------------------------<-------------------------------------------+             |
| |      0.0.0.0:8000        |   HTTP request        |             HTTP request              +-------------+
| |                          |   10.0.1.2:8000       |          192.168.1.112:8888
| |                          |                       |
| +--------------------------+                       |
+----------------------------------------------------+

이 명령을 사용하여 브리지 인터페이스 my_br0와 iptables 규칙 을 만듭니다 host-112.

# Create interface
sysctl -w net.ipv4.ip_forward=1
brctl addbr my_br0
ip addr add 10.0.1.1/24 dev my_br0
ip link set my_br0 up
sysctl -w net.ipv4.conf.my_br0.route_localnet=1

# Add iptables rules
iptables -t nat -A PREROUTING -p tcp --dport 8888 -j DNAT --to-destination 10.0.1.2:8000
iptables -t nat -A OUTPUT -p tcp --dport 8888 -j DNAT --to-destination 10.0.1.2:8000
iptables -t nat -A POSTROUTING -p tcp -o my_br0 -j MASQUERADE
iptables -A FORWARD -i my_br0 -p tcp --dport 8000 -j ACCEPT
iptables -A INPUT -i my_br0 -p tcp --sport 8000 -j ACCEPT

다음과 같이 firejail 샌드 박스에서 HTTP 서버를 실행하고 있습니다.

firejail --noprofile --net=my_br0 --ip=10.0.1.2 python3 -m http.server 8000

로컬 호스트에서 요청을 시도 할 때 잘 작동합니다.

myself@host-112 $ curl 192.168.1.112:8888
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
...

wireshark 스크린 샷

그러나 동일한 네트워크의 원격 호스트에서는 작동하지 않습니다.

myself@host-238 $ curl 192.168.1.112:8888
curl: (7) Failed to connect to 192.168.1.112 port 8888: Connection timed out

wireshark 스크린 샷

요청이 브리지 인터페이스로 제대로 전달되지 않은 것 같습니다.

다음은 host-112에 대한 iptables 규칙의 전체 목록입니다.

# iptables -S
-P INPUT ACCEPT
-P FORWARD DROP
-P OUTPUT ACCEPT
-N DOCKER
-N DOCKER-ISOLATION-STAGE-1
-N DOCKER-ISOLATION-STAGE-2
-N DOCKER-USER
-A INPUT -i my_br0 -p tcp -m tcp --sport 8000 -j ACCEPT
-A FORWARD -j DOCKER-USER
-A FORWARD -j DOCKER-ISOLATION-STAGE-1
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A FORWARD -i my_br0 -p tcp -m tcp --dport 8000 -j ACCEPT
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -j RETURN
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -j RETURN
-A DOCKER-USER -j RETURN

# iptables -S -t nat
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P POSTROUTING ACCEPT
-P OUTPUT ACCEPT
-N DOCKER
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A PREROUTING -p tcp -m tcp --dport 8888 -j DNAT --to-destination 10.0.1.2:8000
-A POSTROUTING -s 172.19.0.0/16 ! -o docker0 -j MASQUERADE
-A POSTROUTING -o my_br0 -p tcp -j MASQUERADE
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A OUTPUT -p tcp -m tcp --dport 8888 -j DNAT --to-destination 10.0.1.2:8000
-A DOCKER -i docker0 -j RETURNo

# iptables -S -t mangle
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT

# iptables -S -t raw
-P PREROUTING ACCEPT
-P OUTPUT ACCEPT

# iptables -S -t security
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT

작동하도록 내가 무엇을 할 수 있는지 아십니까?

니캅

다음과 같이 FORWARD규칙을 변경하여 작동하도록 만들었습니다 .

iptables -A FORWARD -o my_br0 -j ACCEPT
iptables -A FORWARD -i my_br0 -j ACCEPT

이제 전체 명령 목록은 다음과 같습니다.

# Create interface
sysctl -w net.ipv4.ip_forward=1
brctl addbr my_br0
ip addr add 10.0.1.1/24 dev my_br0
ip link set my_br0 up
sysctl -w net.ipv4.conf.my_br0.route_localnet=1

# Add iptables rules
iptables -t nat -A PREROUTING -p tcp --dport 8888 -j DNAT --to-destination 10.0.1.2:8000
iptables -t nat -A OUTPUT -p tcp --dport 8888 -j DNAT --to-destination 10.0.1.2:8000
iptables -t nat -A POSTROUTING -p tcp -o my_br0 -j MASQUERADE
iptables -A FORWARD -o my_br0 -j ACCEPT
iptables -A FORWARD -i my_br0 -j ACCEPT
iptables -A INPUT -i my_br0 -p tcp --sport 8000 -j ACCEPT

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Open-Mesh에서 iptables를 사용한 포트 포워딩

분류에서Dev

nftables를 사용한 포트 포워딩 및 NAT

분류에서Dev

iptables : MultiWAN 및 포트 포워딩 및 포트 리디렉션

분류에서Dev

UFW를 사용한 포트 포워딩

분류에서Dev

UFW를 사용한 포트 포워딩

분류에서Dev

ubuntu iptables NAT 및 라우터 및 포트 포워딩

분류에서Dev

SSH 터널 / 포워딩 및 iptables

분류에서Dev

가상 박스 사설 네트워크, 포트 포워딩 등

분류에서Dev

익스프레스 및 포트 포워딩을 사용하는 greenlock (lets'encrypt)

분류에서Dev

Paramiko를 사용한 점프 호스트 (포트 포워딩) 구현과 관련된 호스트 / IP 주소 및 포트에 대한 설명

분류에서Dev

iptables를 사용하여 포트 포워딩과 함께 보조 네트워크 인터페이스 트래픽을 tun0 (OpenVPN)으로 리디렉션

분류에서Dev

OpenVPN 클라이언트를 사용한 포트 포워딩

분류에서Dev

iptables는 두 개의 인터페이스를 사용하여 공용 네트워크를 사설 네트워크로 포워딩합니다.

분류에서Dev

내 라우터에서 iptables를 사용하여 IP 및 포트에 대한 액세스 차단

분류에서Dev

Vagrant를 사용하여 Nginx에 대한 포트 포워딩

분류에서Dev

DVR 및 포트 포워딩

분류에서Dev

12.04 LTS를 사용하여 샌드 박스 네트워크 용 / etc / network / interfaces 설정

분류에서Dev

12.04 LTS를 사용하여 샌드 박스 네트워크 용 / etc / network / interfaces 설정

분류에서Dev

오렌지 라이브 박스 및 우분투 포트 포워딩

분류에서Dev

API Manager 프로덕션 및 샌드 박스 포트가 더 이상 표시되지 않음

분류에서Dev

Uber 샌드 박스 / 요청 엔드 포인트는 프로덕션 환경을 사용하고 실제 드라이버를 호출합니다.

분류에서Dev

iptables를 사용하여 두 개의 인터페이스로 포트 포워딩을 수행하는 방법은 무엇입니까?

분류에서Dev

포트 포워딩 및 패킷에 대한 약간의 의심

분류에서Dev

포트 포워딩 및 패킷에 대한 약간의 의심

분류에서Dev

SSH 터널, 포트 포워딩 및 서비스

분류에서Dev

스프링 보드 서버를 죽이는 포트 포워딩?

분류에서Dev

WireShark를 사용하여 localhost에서 포트 포워딩 캡처

분류에서Dev

포인터를 참조로 함수에 전달할 때 앰퍼샌드 및 별표를 사용하는 방법

분류에서Dev

AWS 인스턴스에서 snat 포트 및 ip에 대한 iptables 규칙

Related 관련 기사

  1. 1

    Open-Mesh에서 iptables를 사용한 포트 포워딩

  2. 2

    nftables를 사용한 포트 포워딩 및 NAT

  3. 3

    iptables : MultiWAN 및 포트 포워딩 및 포트 리디렉션

  4. 4

    UFW를 사용한 포트 포워딩

  5. 5

    UFW를 사용한 포트 포워딩

  6. 6

    ubuntu iptables NAT 및 라우터 및 포트 포워딩

  7. 7

    SSH 터널 / 포워딩 및 iptables

  8. 8

    가상 박스 사설 네트워크, 포트 포워딩 등

  9. 9

    익스프레스 및 포트 포워딩을 사용하는 greenlock (lets'encrypt)

  10. 10

    Paramiko를 사용한 점프 호스트 (포트 포워딩) 구현과 관련된 호스트 / IP 주소 및 포트에 대한 설명

  11. 11

    iptables를 사용하여 포트 포워딩과 함께 보조 네트워크 인터페이스 트래픽을 tun0 (OpenVPN)으로 리디렉션

  12. 12

    OpenVPN 클라이언트를 사용한 포트 포워딩

  13. 13

    iptables는 두 개의 인터페이스를 사용하여 공용 네트워크를 사설 네트워크로 포워딩합니다.

  14. 14

    내 라우터에서 iptables를 사용하여 IP 및 포트에 대한 액세스 차단

  15. 15

    Vagrant를 사용하여 Nginx에 대한 포트 포워딩

  16. 16

    DVR 및 포트 포워딩

  17. 17

    12.04 LTS를 사용하여 샌드 박스 네트워크 용 / etc / network / interfaces 설정

  18. 18

    12.04 LTS를 사용하여 샌드 박스 네트워크 용 / etc / network / interfaces 설정

  19. 19

    오렌지 라이브 박스 및 우분투 포트 포워딩

  20. 20

    API Manager 프로덕션 및 샌드 박스 포트가 더 이상 표시되지 않음

  21. 21

    Uber 샌드 박스 / 요청 엔드 포인트는 프로덕션 환경을 사용하고 실제 드라이버를 호출합니다.

  22. 22

    iptables를 사용하여 두 개의 인터페이스로 포트 포워딩을 수행하는 방법은 무엇입니까?

  23. 23

    포트 포워딩 및 패킷에 대한 약간의 의심

  24. 24

    포트 포워딩 및 패킷에 대한 약간의 의심

  25. 25

    SSH 터널, 포트 포워딩 및 서비스

  26. 26

    스프링 보드 서버를 죽이는 포트 포워딩?

  27. 27

    WireShark를 사용하여 localhost에서 포트 포워딩 캡처

  28. 28

    포인터를 참조로 함수에 전달할 때 앰퍼샌드 및 별표를 사용하는 방법

  29. 29

    AWS 인스턴스에서 snat 포트 및 ip에 대한 iptables 규칙

뜨겁다태그

보관