centos 修改iptables,centos怎么用

本篇文章给大家谈谈centos 修改iptables,以及centos怎么用对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

docker 之 iptables

在Linux环境(centos 7.8.2003)中,安装了Docker(19.03.13)并基于centos:centos7.4.1708镜像启动容器。在容器内部署了Kubernetes环境单机版。启动容器后,在容器内部的Docker环境可以成功请求到frontend服务,但在宿主机上请求frontend服务时失败。原因是iptables规则表中存在过滤现象。

在容器内部,使用iptables命令查看规则表以确定问题。通过规则表分析,发现请求路径在容器内正常运行,但在宿主机上失败,主要问题在于iptables的规则过滤。

对于宿主机请求,无法命中nat表的PREROUTING规则,导致无法转发到容器内部的frontend服务,从而出现“No route to host”的错误信息。这表明iptables规则在宿主机上阻止了对容器内服务的请求。

针对此问题,选择使用nginx作为代理解决方案,而不是直接修改iptables规则。具体步骤如下:

1.修改frontend服务的端口设置,确保其可以被正确地映射到宿主机。

2.在容器内部部署nginx,作为前端代理,将宿主机的请求转发至Docker容器内的前端服务。

3.重新配置iptables规则表,确保宿主机能够通过正确的规则将请求转发到Docker容器中。

4.对宿主机的请求进行测试,确保nginx代理能够正确地将请求转发至Docker容器内的前端服务。

通过上述步骤,解决了宿主机请求Docker容器内部服务时的过滤问题,实现了对前端服务的正常访问。这种解决方案相对简单,避免了直接修改iptables规则表的复杂性。

Linux下针对路由功能配置iptables的方法详解

作为公司上网的路由器需要实现的功能有nat地址转换、dhcp、dns缓存、流量控制、应用程序控制,nat地址转换通过iptables可以直接实现,dhcp服务需要安装dhcpd,dns缓存功能需要使用bind,流量控制可以使用tc,应用程序控制:例如对qq的封锁可以使用 netfilter-layer7-v2.22+17-protocols-2009-05-28.tar.gz来实现

1、网络规划

操作系统是centos5.8

2、安装dhcpd

代码如下:

yum install dhcp-3.0.5-31.el5

vim/etc/dhcp/dhcpd.conf

ddns-update-style interim;

ignore client-updates;

subnet 10.0.0.0 netmask 255.255.255.0{

option routers 10.0.0.1;

option subnet-mask 255.255.255.0;

option domain-name-servers 10.0.0.1;

range dynamic-bootp 10.0.0.100 10.0.0.200;

default-lease-time 21600;

max-lease-time 43200;

}

3、安装bind,实现dns缓存

代码如下:

yum install bind97.i386 bind97-libs.i386 bind97-utils.i386

vim/etc/named.conf

options{

directory"/var/named";

allow-recursion{ 10.0.0.0/24;};

recursion yes;

forward first;#将所有请求都进行转发

forwarders{ 114.114.114.114;};#定义转发服务器地址

};

zone"." IN{

type hint;

file"named.ca";

};

zone"localhost" IN{

type master;

file"named.localhost";

allow-transfer{ none;};

};

zone"0.0.127.in-addr.arpa" IN{

type master;

file"named.loopback";

allow-transfer{ none;};

};

创建根域文件,默认有

代码如下:

dig-t NS./var/named/named.ca

chown:named/var/named/named.ca

创建本地正向解析文件,默认有

代码如下:

vim/var/named/named.localhost

$TTL 1D

@ IN SOA@ rname.invalid.(

0; serial

1D; refresh

1H; retry

1W; expire

3H); minimum

NS@

A 127.0.0.1

chown:named/var/named/named.localhost

创建本地反向解析文件,默认有

代码如下:

vim/var/named/named.loopback

$TTL 1D

@ IN SOA@ rname.invalid.(

0; serial

1D; refresh

1H; retry

1W; expire

3H); minimum

NS@

A 127.0.0.1

PTR localhost.

chown:named/var/named/named.loopback

检查主配置文件

代码如下:

named-checkconf

检查根区域配置文件

代码如下:

named-checkzone“.”/var/named/named.ca

检查区域文件

代码如下:

named-checkzone“localhost”/var/named/named.localhost

启动服务

代码如下:

service named start

4、重新编译编译内核和iptables以支持应用层过滤

由于实行防火墙功能的是netfilter内核模块,所以需要重新编译内核,需要下载新的内核源码,并使用netfilter-layer7-v2.22作为内核的补丁一起编译到内核中。而控制netfiler的是iptables工具,因此iptables也必须重新编译安装,最后再安装应用程序过滤特征码库17-protocols-2009-05028.tar.gz

1、给内核打补丁,并重新编译内核

2、给iptables源码打补丁,并重新编译iptables

3、安装17proto

备份iptables脚本和配置文件

代码如下:

cp/etc/rc.d/init.d/iptables/root/iptables.sysv

cp/etc/sysconfig/iptables-config/root/iptables-config

2.6内核下载地址

netfilter下载地址

iptables源码下载地址

应用程序特征码库下载地址

代码如下:

xz-d linux-2.6.28.10.tar.xz

tar-xvf linux-2.6.28.10.tar.gz-C/usr/src#新的内核源码,用于重新编译

tar-zxvf netfilter-layer7-v2.22.tar.gz-C/usr/src#内核补丁和iptables补丁,只支持到2.6.28

#进入解压目录并创建软连接

pcd/usr/src

ln-sv linux-2.6.28.10 linux

#进入内核目录

pcd/usr/src/linux

#为当前内核打补丁

ppatch-p1../netfilter-layer7-v2.22/kernel-2.6.25-2.6.28-layer7-2.22.path

#为了方便编译内核将系统上的内核配置文件复制过来

pcp/boot/config-2.6.18-164.el5/usr/src/linux/.config

编译内核

代码如下:

make menuconfig

Networking support- Networking Options- Network packet filtering framework- Core Netfilter Configuration

Netfilter connection tracking support

"lawyer7" match support

"string" match support

"time" match support

"iprange" match support

"connlimit" match support

"state" match support

"conntrack" connection match support

"mac" address match support

"multiport" Multiple port match support

Networking support- Networign options- Network packet filtering framework- IP:Netfiltr Configuration

IPv4 connection tracking support(required for NAT)

Full NAT

MASQUERADE target support

NETMAP target support

REDIRECT target support

在Networking support中选择 Networking options

查找Network packet filtering framework(Netfilter)–Core Netfiler Configrationg–Netfilter connection tracking support(NEW),”layer7″ match support(NEW),”time” match support(NEW),”iprange”

查找IP:Netfilter Configuration–IPv4 connection tracking support,Full NAT(NEW)

代码如下:

make

make modules_install

make install

重启操作系统选择新内核登录

卸载旧的iptables

代码如下:

rpm-e iptables-1.3.5-9.1.el5 iptables-ipv6-1.3.5-9.1.el5 iptstate-1.4-2.el5--nodeps

安装新的iptables,以支持新的netfiler模块

代码如下:

tar-jsvf iptables-1.4.6.tar.bz2-C/usr/src

cd/usr/src/netfilter-layer7-v2.23

cd iptables-1.4.3forward-for-kernel-2.6.20forward

cp*/usr/src/iptables-1.4.6/extensions/

cd/usr/src/iptables-1.4.6/

./configure--prefix=/usr--with-ksource=/usr/src/linux

make

make install

查看安装后的iptables的文件

代码如下:

ls/usr/sbin|grep iptables

ls/usr/libexec/xtables

复制之前备份的配置文件和脚本

代码如下:

cp/root/iptables-config/etc/sysconfig/

cp/root/iptables.sysv/etc/rc.d/init.d/iptables

修改脚本中iptables的路径

代码如下:

vim/etc/rc.d/init.d/iptables

:.,$s@/sbin/$IPTABLES@/usr/sbin/$IPTABLES@g

让iptables服务开机自动启动

代码如下:

chkconfig--add iptables

修改iptables配置文件

将/etc/sysconfig/iptables-config中的

IPTABLES_MODULES=”ip_conntrack_netbios_ns”注释掉

安装协议特征码

代码如下:

tar xvf 17-protocols-2009-05028.tar.gz

make install

完成后在/etc/l7-protocols会生成文件

支持的协议/etc/l7-protocols/protocols

添加iptables策略,运行内部网络上网,禁止qq和视频

代码如下:

iptables-t nat-A POSTROUTING-s 10.0.0.0/24-j SNAT--to-soure 192.168.6.67

iptables-A FORWARD-m layer7--l7proto qq-j DROP

iptables-A FORWARD-m layer7--l7proto httpvideo-j DROP

iptables-A FORWARD-m layer7--l7proto httpaudio-j DROP

指定8点到12点无法上网

复制代码

代码如下:

iptables-A FORWARD-m time--timestart 08:00--timestop 12:00-j DROP

5、使用tc控制带宽

例如公司出口带宽是10Mbps,个用户A分配500KB的最大下载带宽,给用户B分配分配的最大下载带宽是200KB

A用户ip:10.0.0.100

B用户ip:10.0.0.101

代码如下:

#在eth0网卡上创建一个根队列规则,队列规则的算法使用htb,default 2表示指定一个默认类别编号,默认的流量控制策略,如果ip没有在后面的filter中被匹配到就都是有这个策略

tc qdisc add dev eth0 root handle 1:0 htb default 2

#在eth0网卡上定义一个类,prant 1:0中的1对应根队列规则中的handle 1:0,classid 1:2表示当前这个类的标识,用于应用在后面的得到filter中,rate 200kbsp表示带宽为200KB/s,ceil 200kbps表示最大带宽也为200KB/s,prio 2是优先级

tc class add dev eth0 parent 1:0 classid 1:2 htb rate 200kbps ceil 200kbps prio 2

tc class add dev eth0 parent 1:0 classid 1:3 htb rate 500kbps ceil 500kbps prio 2

#将两个类的默认的fifq队列规则改为sfq

tc qdisc add dev eth0 parent 1:2 handle 20 sfq

tc qdisc add dev eth0 parent 1:3 handle 30 sfq

#在网卡eth0上的1:0节点(对应qdisc中的handle 1:0)添加一个u32过滤规则,优先级为1,凡是目标地址是10.0.0.100的数据包都使用1:2类(对应classid为1:2的类)

tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dst 10.0.0.100 flowid 1:2

tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dst 10.0.0.101 flowid 1:3

如果还有其他用户例如用户C和D的ip是102、103,要求的下载带宽也要求500那么在加入

代码如下:

tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dst 10.0.0.102 flowid 1:3

tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dst 10.0.0.103 flowid 1:3

清除eth0上的规则

代码如下:

tc qdisc del dev eth1 root/dev/null

Linux centos下安装svn服务器就这么难么

Centos下安装SVN服务器详细步骤

在保证联网的条件下,执行以下一、二操作,否则请先下载apache、svn的安装包并解压缩

1.安装apache

yum install httpd

2.安装svn

yum install subversion

yum install mod_dav_svn

3.创建SVN仓库

mkdir/home/svn

4.在SVN仓库目录下创建你要的版本库

svnadmin create/home/svn/xyz(版本库名:xyz)

5.创建用户及密码

在/home/svn/xyz/conf目录下,输入:htpasswd-c passwd xiao

第一次在创建用户密码,需加上“- c”参数

6.设置权限

编辑authz文件,设置组别人员读写权限

7.修改svnserver.conf

8.启动SVN服务

svnserve-d--listen-port 3690-r/home/svn/xyz

9.防火墙打开3690端口

进入/etc/sysconfig,修改iptables文件

加入如下:

-A RH-Firewall-1-INPUT-m state--state NEW-m tcp-p tcp--dport 3690-j ACCEPT

10.修改apache,目的是保证http能够访问

修改/etc/httpd/conf.d/subversion.conf文件

加入如下:

LoadModule dav_svn_module modules/mod_dav_svn.so

LoadModule authz_svn_modulemodules/mod_authz_svn.so

<Location/>

DAV svn

SVNParentPath/home/svn/xyz

AuthType Basic

AuthName"Authorization Realm"

AuthUserFile/home/svn/xyz/conf/passwd

AuthzSVNAccessFile/home/svn/xyz/conf/authz

Require valid-user

</Location>

11.配置SVN下目录被apache拥有

chown–R apache:apache/home/svn/xyz

12.设置apache开机启动

chkconfig httpd on

13.设置svn开机启动

(1)编写/usr/local/customshell/svn.sh,内容为svnserve–d--listen-port 3690–r/ home/svn/xyz

(2). vim/etc/rc.d/rc.local增加一句:/usr/local/customshell/svn.sh

阅读剩余
THE END