lxc-container에서 iptables를 구현하는 방법은 무엇입니까?

lxc-container에서 iptables를 구현하는 방법은 무엇입니까?

우분투 18.04 시스템에 lxc-container(fedora 29 amd64)를 설치했습니다. Linux 컨테이너에는 방화벽 명령줄 도구가 없습니다. 그래서 컨테이너에 iptables를 설치했고 성공적으로 설치되었습니다.

그러나 들어오고 나가는 모든 패킷을 삭제하도록 인터페이스를 구성하려고 시도했지만 작동하지 않았습니다. 여기서 모든 세부 사항을 알려 드리겠습니다.

명령이 ip \a내려졌습니다.

[root@fedora29 ~]# ip \a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue status UNKNOWN 그룹 기본 qlen 1000
    링크/루프백 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 범위 호스트 lo
       항상 valid_lft 항상 선호_lft
    inet6::1/128 범위 호스트
       항상 valid_lft 항상 선호_lft
7: eth0@if8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue 상태 UP 그룹 기본 qlen 1000
    링크/에테르 00:16:3e:4c:d8:bf brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 10.0.3.52/24 brd 10.0.3.255 범위 전역 동적 eth0
       valid_lft 3456초 Preferred_lft 3456초
    inet6 fe80::216:3eff:fe4c:d8bf/64 범위 링크
       항상 valid_lft 항상 선호_lft

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

[root@fedora29 ~]# iptables -L
체인 입력(정책 승인)
대상 보호 선택 소스 대상         

체인 포워딩(정책 승인)
대상 보호 선택 소스 대상         

체인 출력(정책 승인)
대상 보호 선택 소스 대상    

그래서 다음 두 가지 규칙을 추가했습니다.

iptables --table filter --append INPUT --in-interface eth0@if8 --jump DROP
iptables --table filter --append OUTPUT --out-interface eth0@if8 --jump DROP

마지막으로 구성을 저장하면

iptables-저장

[root@fedora29 ~]# iptables-save
# 2019년 2월 20일 수요일 08:41:43에 iptables-save v1.8.0에 의해 생성됨
*필터
:입력 승인[0:0]
: 전달 수락[0:0]
: 출력 허용[0:0]
-A 입력 -i eth0@if8 -j 삭제
-A 출력 -o eth0@if8 -j 폐기
범죄
# 2019년 2월 20일 수요일 08:41:43 완료

그러나 인터페이스 이름이 lxcbr0인 우분투 호스트 시스템에서는 제대로 작동합니다.

답변1

@if8인터페이스 이름의 일부가 아니므로 규칙의 인터페이스 이름에서 제거하면 됩니다. 인터페이스 이름은 eth0.

@if8연결된 피어 인터페이스에 대한 단서이며 동적입니다. 예를 들어 컨테이너를 다시 시작한 후에 변경될 수 있습니다.

당신의 의미에 대해 더 알고 싶다면 @if8내 답변을 읽어보세요.
Ubuntu의 "ip address" 명령 출력에서 ​​인터페이스 이름의 "if1@if2"는 무엇을 의미합니까?

답변2

먼저, 내 문제를 해결해준 @AB의 답변에 감사드립니다. 작동할 수 있는 인터페이스를 제공하지 않고 내장 체인의 전략을 사용해 보았지만...

[root@fedora29 ~]# iptables --table filter--정책 입력 삭제
[root@fedora29 ~]# iptables --table filter --policy 출력 삭제
[root@fedora29 ~]# iptables-save > /etc/network/iptables
[root@fedora29 ~]# iptables-apply /etc/network/iptables
새 규칙 세트 적용...완료.
기기에 새로 연결할 수 있나요? (y/n) y
…그럼 내 할 일은 끝났습니다. 다음에 또 만나요.

그러나 목록 규칙을 사용하려고 하면 iptables -L새 규칙이 생성되지 않지만 그림과 같이 규칙의 정책이 수정되는 것을 관찰할 수 있습니다.

[root@fedora29 ~]# iptables -L
체인 입력(정책 DROP)
대상 보호 선택 소스 대상         

체인 포워딩(정책 승인)
대상 보호 선택 소스 대상         

체인 출력(전략 DROP)
대상 보호 선택 소스 대상         
[root@fedora29 ~]# 핑 10.0.3.1
PING 10.0.3.1 (10.0.3.1) 56(84) 바이트의 데이터.
ping: sendmsg: 작업이 허용되지 않습니다
ping: sendmsg: 작업이 허용되지 않습니다

--- 10.0.3.1 핑 통계 ---
2개의 데이터 패킷 전송, 0개의 데이터 패킷 수신, 100% 패킷 손실, 시간 23ms

[root@fedora29 ~]# iptables -S
-P 입력 다운
-P 전달 수락
-P 출력 저하

관련 정보