How to Modify>linux在正常配置路由转发功能,关闭防火墙,linux收到数据包后,还是无法转发数据包
你只是增加了路由中的目的地,并没有加需要到这个目的地去的数据所以转发的网关,即你的上级路由陪岁
route add 114.215.195.176/32 gw 192.168.0.1 dev seth0 其中192.168.0.1就是你的上含亩级路由的ip,根据实芦老睁际情况来改
Linux使用TPROXY进行UDP的透明代理
在进行TCP的代理时,只要在旁带NET表上无脑进行REDIRECT就好了。例如使用ss-redir,你只要把tcp的流量redirect到ss-redir监听的端口上就OK了。但是当你使用这种方法的时候,就会不正常,因为对于UDP进行redirect之后,原始的目的地址和端口就找不到了。
这是为什么呢?
ss-redir的原理很简单:使肆桥用iptables对PREROUTING与OUTPUT的TCP/UDP流量进行REDIRECT(REDIRECT是DNAT的特例),ss—redir在捕获网络流量后,通过一些技术手段获取REDIRECT之前的目的地址(dst)与端口(port),连同网络流量一起转发至远程 服务器 。

针对TCP连接,的确是因为Linux Kernel连接跟踪机制的实现才使获取
数据包
原本的dst和port成为可能,但这种连接跟踪机制并非只存在于TCP连接中,UDP连接同样存在,conntrack -p udp便能看到UDP的连接跟踪记录。内核中有关TCP与UDP的NAT源码/net/netfilter/nf_nat_proto_tcp.c和/net/netfilter/nf_nat_proto_udp.c几乎一模一样,都是根据NAT的类型做SNAT或DNAT。
那这究竟是怎么一回事?为什么对于UDP连接就失效了呢?
回过头来看看ss-redir有关获取TCP原本的dst和port的源码,核心函数是getdestaddr:
在内核源码中搜了下有关SO_ORIGINAL_DST的东西,裂启猛看到了getorigdst:
We only do TCP and SCTP at the moment。Oh,shit!只针对TCP与SCTP才能这么做,并非技术上不可行,只是人为地阻止罢了。
为了在redirect UDP后还能够获取原本的dst和port,ss-redir采用了TPROXY。Linux系统有关TPROXY的设置是以下三条命令:
大意就是在mangle表的PREROUTING中为每个UDP数据包打上0x2333/0x2333标志,之后在路由选择中将具有0x2333/0x2333标志的数据包投递到本地环回设备上的1080端口;对监听0.0.0.0地址的1080端口的socket启用IP_TRANSPARENT标志,使IPv4路由能够将非本机的数据报投递到
传输层
,传递给监听1080端口的ss-redir。IP_RECVORIGDSTADDR与IPV6_RECVORIGDSTADDR则表示获取送达数据包的dst与port。
可问题来了:要知道mangle表并不会修改数据包,那么TPROXY是如何做到在不修改数据包的前提下将非本机dst的数据包投递到换回设备上的1080端口呢?
这个问题在内核中时如何实现的,还待研究,但是确定是TPROXY做了某些工作。
TPROXY主要功能:
TPROXY要解决的两个重要的问题
参考:
Linux修改iptables,开放端口?如何在文件中输入规则
/etc/sysconfig/iptables 是iptables启动时默认载入的配置文件
开发67端口,只需要该文件的:RH-Firewall-1-INPUT – 链中加入一条指令:
(iptables 不用写入) -A INPUT -dport 67 -j ACCEPT
这里只匹配数据包的目标端口,不做协议匹配,也就说所有通过到达该端口的数据包都会被通过
要做其他如协议的匹配,加入 -p 协议名 即可。
另外要提出的是:
直接 vi /etc/sysconfig/iptables 和在终端输入iptables命令的区别:
/蚂逗败etc/sysconfig/iptables 是默认配置文件,每次iptables在启动时都会载入里面的规则,但载入之后,实际上该文件没有什么用处。也就是只有载入的时候有用。
在/etc/sysconfig/iptables-config 里面的IPTABLES_SAVE_ON_stop=no 这一句的”no”改为”yes”这样每次服务在停止之前会自动将现有的规则保存在 /etc/sysconfig/iptables 这个文件中去.等同于每次在停止iptables时 首先会执行一个命令# iptables-save /etc/sysconfig/iptables
使用iptables命令输入,规则立即生效,但并不是立即写入/etc/sysconfig/iptables文件指者,只闷颤有执行# iptables-save /etc/sysconfig/iptables 之后,现有规则才会被保存到/etc/sysconfig/iptables文件。
说的做吧,我尽量解释清楚。
/etc/init.d/iptables start 启动iptables
初始化iptables,删除之前的规则,
iptables -F
iptables -X
iptables -Z
iptables -F -t nat
iptables -X -t nat
iptables -Z -t nat
允许SSH进入,要不然等下就连不上去了
iptables -A INPUT -p TCP –dportj ACCEPT
设置默认出入站的规则
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
载入相应的模块
modprobe ip_tables
modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ip_conntrack
modprobe ip_conntrack_ftp
配置默认的转发规则
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
允许圆脊内网连接
iptables -A INPUT -i 内网网卡名(比如eth1) -j ACCEPT
启用转发功能
echo “1” > /proc/sys/net/ipv4/ip_forward
配置源NAT,允许内网通过主机nat上网,即所谓的网络碰腔逗共享
iptables -t nat -A POSTROUTING -s 内网网卡名 -o 外网网卡名 -j MASQUERADE
把FTP服务笑卖器映射到外网
iptables -t nat -A PREROUTING -p tcp -d 58.222.1.3 –dport-j DNAT –to 192.168.0.211:21
结束,别忘了保存
service iptables save
192.168.0.211的网关应该设成这成主机192.168.0.1。这样就行了。
关于linux 修改数据包的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
香港服务器首选树叶云,2H2G首月10元开通。树叶云(shuyeidc.com)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。
服务器被ddos攻击?要怎么办
DoS(Denial of Service)是一种利用合理的服务请求占用过多的服务资源,从而使合法用户无法得到服务响应的网络攻击行为。 被DoS攻击时的现象大致有:* 被攻击主机上有大量等待的TCP连接;* 被攻击主机的系统资源被大量占用,造成系统停顿;* 网络中充斥着大量的无用的数据包,源地址为假地址;* 高流量无用数据使得网络拥塞,受害主机无法正常与外界通讯;* 利用受害主机提供的服务或传输协议上的缺陷,反复高速地发出特定的服务请求,使受害主机无法及时处理所有正常请求;* 严重时会造成系统死机。 到目前为止,防范DoS特别是DDoS攻击仍比较困难,但仍然可以采取一些措施以降低其产生的危害。 对于中小型网站来说,可以从以下几个方面进行防范:主机设置:即加固操作系统,对各种操作系统参数进行设置以加强系统的稳固性。 重新编译或设置Linux以及各种BSD系统、Solaris和Windows等操作系统内核中的某些参数,可在一定程度上提高系统的抗攻击能力。 例如,对于DoS攻击的典型种类—SYN Flood,它利用TCP/IP协议漏洞发送大量伪造的TCP连接请求,以造成网络无法连接用户服务或使操作系统瘫痪。 该攻击过程涉及到系统的一些参数:可等待的数据包的链接数和超时等待数据包的时间长度。 因此,可进行如下设置:* 关闭不必要的服务;* 将数据包的连接数从缺省值128或512修改为2048或更大,以加长每次处理数据包队列的长度,以缓解和消化更多数据包的连接;* 将连接超时时间设置得较短,以保证正常数据包的连接,屏蔽非法攻击包;* 及时更新系统、安装补丁。 防火墙设置:仍以SYN Flood为例,可在防火墙上进行如下设置:* 禁止对主机非开放服务的访问;* 限制同时打开的数据包最大连接数;* 限制特定IP地址的访问;* 启用防火墙的防DDoS的属性;* 严格限制对外开放的服务器的向外访问,以防止自己的服务器被当做工具攻击他人。 此外,还可以采取如下方法:* Random Drop算法。 当流量达到一定的阀值时,按照算法规则丢弃后续报文,以保持主机的处理能力。 其不足是会误丢正常的数据包,特别是在大流量数据包的攻击下,正常数据包犹如九牛一毛,容易随非法数据包被拒之网外;* SYN Cookie算法,采用6次握手技术以降低受攻击率。 其不足是依据列表查询,当数据流量增大时,列表急剧膨胀,计算量随之提升,容易造成响应延迟乃至系统瘫痪。 由于DoS攻击种类较多,而防火墙只能抵挡有限的几种。 路由器设置:以Cisco路由器为例,可采取如下方法:* Cisco Express Forwarding(CEF);* 使用Unicast reverse-path;* 访问控制列表(ACL)过滤;* 设置数据包流量速率;* 升级版本过低的IOS;* 为路由器建立log server。 其中,使用CEF和Unicast设置时要特别注意,使用不当会造成路由器工作效率严重下降。 升级IOS也应谨慎。 路由器是网络的核心设备,需要慎重设置,最好修改后,先不保存,以观成效。 Cisco路由器有两种配置,startup config和running config,修改的时候改变的是running config,可以让这个配置先运行一段时间,认为可行后再保存配置到startup config;如果不满意想恢复到原来的配置,用copy start run即可。 不论防火墙还是路由器都是到外界的接口设备,在进行防DDoS设置的同时,要权衡可能相应牺牲的正常业务的代价,谨慎行事。 利用负载均衡技术:就是把应用业务分布到几台不同的服务器上,甚至不同的地点。 采用循环DNS服务或者硬件路由器技术,将进入系统的请求分流到多台服务器上。 这种方法要求投资比较大,相应的维护费用也高,中型网站如果有条件可以考虑。 以上方法对流量小、针对性强、结构简单的DoS攻击进行防范还是很有效的。 而对于DDoS攻击,则需要能够应对大流量的防范措施和技术,需要能够综合多种算法、集多种网络设备功能的集成技术。 近年来,国内外也出现了一些运用此类集成技术的产品,如Captus IPS 4000、Mazu Enforcer、Top Layer Attack Mitigator以及国内的绿盟黑洞、东方龙马终结者等,能够有效地抵挡SYN Flood、UDP Flood、ICMP Flood和Stream Flood等大流量DDoS的攻击,个别还具有路由和交换的网络功能。 对于有能力的网站来说,直接采用这些产品是防范DDoS攻击较为便利的方法。 但不论国外还是国内的产品,其技术应用的可靠性、可用性等仍有待于进一步提高,如提高设备自身的高可用性、处理速率和效率以及功能的集成性等。 最后,介绍两个当网站遭受DoS攻击导致系统无响应后快速恢复服务的应急办法:* 如有富余的IP资源,可以更换一个新的IP地址,将网站域名指向该新IP;* 停用80端口,使用如81或其它端口提供HTTP服务,将网站域名指向IP:81。
select和epoll的区别
下面是select的函数接口: int select (int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); select 函数监视的文件描述符分3类,分别是writefds、readfds、和exceptfds。调用后select函数会阻塞,直到有
如何修改XP的MAC地址??
一、MAC地址的用途MAC地址在网卡中是固定的,每张网卡的MAC地址都不一样。 网卡在制作过程中,厂家会在它的EPROM里面烧录上一组数字,这组数字,每张网卡都各不相同,这就是网卡的MAC(物理)地址。 由于MAC地址的唯一性,因此它主要用来识别网络中用户的身份。 例如ADSL上网时,电信用它来记费,确认是你上的网;在校园网中,MAC地址也可以用来识别用户。 对于校园网的正式用户,其MAC地址会登记在服务器端,假如你是非法用户,服务器中就没有你的网卡MAC地址,这样当你试图连上网时,服务器就会立刻认出你、阻止你连上网络。 二、MAC地址是可以修改的有些场合,例如冒充网络中的正式用户,就需要修改你的网卡MAC。 要修改MAC地址,你可以通过硬件的方法实现,即利用网卡厂家提供的修改程序来烧录网卡的EEPROM,这样做虽然可行,但是风险很大、操作也复杂,即使你很有经验,也难免在操作中出现错误。 其实你完全没必要用烧录方法、修改网卡中的MAC地址。 要知道windows安装的时候,会自动从网卡中读入MAC地址,把它存放在注册表中以备后用。 当数据在网络中传输时,从网卡发出的数据包中要求有一个源MAC地址,这个MAC地址就是从注册表中读取的(并非从网卡中读取的),因此只要你修改了注册表中的MAC地址,就相当于改了网卡EEPROM中的MAC地址,两者实际效果是完全相同的!三、修改注册表中MAC的方法1、使用软件修改推荐一个工具,k-mac,很好用,又小又方便,叫做mac地址修改器,baidu,google一下,很容易找。 下面这个链接也是的,可以试一下,但是一般对CSDN的系统不抱太大希望……2、在网卡属性中修改如果你的网卡采用了RealTek公司的RTL8139芯片,就可以在网卡属性中修改MAC,这样注册表中的MAC地址也会一同改变,方法如下:在Win2003/XP/2000中,点击菜单“开始”/设置/控制面板,双击“系统”,点击“硬件”/设备管理器,在设备管理器中展开“网络适配器”,右击要修改MAC地址的网卡,选择“属性”;点击“高级”选项卡,在“属性”下,选择点击Network Address项目,在右侧“值”的下方,输入你要指定的MAC地址值(例如2),注意要连续输入12个数字或字母,重新启动电脑后,修改即可生效。 至于Win98下的MAC修改方法,与以上方法类似。 如果修改之后,在Win2003/XP/2000下,你又想把注册表中的MAC地址恢复成原样,可以选择“Network Address”项,将右边的值选择为“不存在”,再重新启动即可;在Win98下是选择“没有显示”。 3、在注册表中修改对于非RTL8139芯片的网卡,你可以直接修改注册表中的MAC,注意:修改注册表前,要先备份注册表。 (1)Win2003/XP/2000点击“开始”/运行,输入regedit打开注册表,定位到HKEY_LOCAL_MACHINE\ SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-BE} \0000、0001、0002等主键下,查找DriverDesc的内容,了解网卡使用了哪个主键(例如0001),如果主键下有params项,则该主键也是网卡所使用的;例如网卡使用了0001主键,因此我们就选中它,在其右边建一个字符串项(名为NetworkAddress),双击该串,输入你指定的MAC地址值(注意应该是12位的连续数字或字母,其间没有-号);在0001下的NDI\ params中添加一项子键(名为NetworkAddress),选择该子键,在其右边添加名为default的字符串,键值为修改后的MAC地址,与上面的数值相同;修改后重启生效。 (2)Win98点击“开始”/运行,键入winipcfg选择你要修改的网卡,并记录下MAC地址值;然后点击“开始”/运行,输入regedit打开注册表,定位到HKEY_LOCAL_MACHINE\System\Current ControlSet\ Services\Class\Net,下面有“0000”、“0001”、“0002”等子键;从“0000”子键开始点击,依次查找子键下的“DriverDesc”键内容,直到找到刚才记录的MAC地址为止;例如网卡使用了0001主键,因此我们就选中它,在其右边新建一个串,名称为networkaddress,再双击该串,输入新的MAC地址值(注意应该是12位的连续数字或字母,其间没有-号);最后重启电脑使修改生效。 4、linux系统如果你的系统是linux,想修改系统中的MAC地址(例如改为2),操作方法是:用#ifconfig eth0 down先把网卡禁用,否则会报告系统忙,无法更改;然后再用ifconfig eth0 hw ether 2即可。 如果你想永久修改系统中的MAC地址,可以这样操作:在/etc/rc.d/中加入以下三行(也可在/etc/init.d/network中添加以下三行)ifconfig eth0 downifconfig eth0 hw ether 2ifconfig eth0 up四、MAC地址改好了吗?如果你想知道系统中的MAC地址是否修改成功了,可以这样操作:重启电脑(不是必要的),在命令提示符下,输入IPconfig/all命令,于是Physical Address右边就会显示一个地址,你检查一下即可得知MAC是否修改成功了。
发表评论